import { Injectable } from '@angular/core'; import { AuthHttp } from 'angular2-jwt'; import { Http } from '@angular/http'; import { Observable } from 'rxjs/Rx'; import { ServiceAuthHelpers } from './service.helpers'; import { IOmbiSettings, IEmbySettings, IPlexSettings, ISonarrSettings, ILandingPageSettings, ICustomizationSettings, IRadarrSettings } from '../interfaces/ISettings'; import { IEmailNotificationSettings, IDiscordNotifcationSettings, IPushbulletNotificationSettings, ISlackNotificationSettings, IPushoverNotificationSettings, IMattermostNotifcationSettings } from '../interfaces/INotifcationSettings'; @Injectable() export class SettingsService extends ServiceAuthHelpers { constructor(public httpAuth: AuthHttp, private nonAuthHttp: Http) { super(httpAuth, '/api/v1/Settings'); } getOmbi(): Observable { return this.httpAuth.get(`${this.url}/Ombi/`).map(this.extractData).catch(this.handleError) } saveOmbi(settings: IOmbiSettings): Observable { return this.httpAuth.post(`${this.url}/Ombi/`, JSON.stringify(settings), { headers: this.headers }) .map(this.extractData).catch(this.handleError); } resetOmbiApi(): Observable { return this.httpAuth.post(`${this.url}/Ombi/resetApi`, { headers: this.headers }).map(this.extractData) .catch(this.handleError); } getEmby(): Observable { return this.httpAuth.get(`${this.url}/Emby/`).map(this.extractData).catch(this.handleError); } saveEmby(settings: IEmbySettings): Observable { return this.httpAuth.post(`${this.url}/Emby/`, JSON.stringify(settings), { headers: this.headers }) .map(this.extractData).catch(this.handleError); } getPlex(): Observable { return this.httpAuth.get(`${this.url}/Plex/`).map(this.extractData).catch(this.handleError); } savePlex(settings: IPlexSettings): Observable { return this.httpAuth.post(`${this.url}/Plex/`, JSON.stringify(settings), { headers: this.headers }) .map(this.extractData).catch(this.handleError); } getSonarr(): Observable { return this.httpAuth.get(`${this.url}/Sonarr`).map(this.extractData) .catch(this.handleError); } saveSonarr(settings: ISonarrSettings): Observable { return this.httpAuth.post(`${this.url}/Sonarr`, JSON.stringify(settings), { headers: this.headers }) .map(this.extractData).catch(this.handleError); } getRadarr(): Observable { return this.httpAuth.get(`${this.url}/Radarr`).map(this.extractData) .catch(this.handleError); } saveRadarr(settings: IRadarrSettings): Observable { return this.httpAuth.post(`${this.url}/Radarr`, JSON.stringify(settings), { headers: this.headers }) .map(this.extractData).catch(this.handleError); } // Using http since we need it not to be authenticated to get the landing page settings getLandingPage(): Observable { return this.nonAuthHttp.get(`${this.url}/LandingPage`).map(this.extractData).catch(this.handleError); } saveLandingPage(settings: ILandingPageSettings): Observable { return this.httpAuth.post(`${this.url}/LandingPage`, JSON.stringify(settings), { headers: this.headers }) .map(this.extractData).catch(this.handleError); } // Using http since we need it not to be authenticated to get the customization settings getCustomization(): Observable { return this.nonAuthHttp.get(`${this.url}/customization`).map(this.extractData).catch(this.handleError) } saveCustomization(settings: ICustomizationSettings): Observable { return this.httpAuth.post(`${this.url}/customization`, JSON.stringify(settings), { headers: this.headers }) .map(this.extractData).catch(this.handleError); } getEmailNotificationSettings(): Observable { return this.httpAuth.get(`${this.url}/notifications/email`).map(this.extractData).catch(this.handleError) } saveEmailNotificationSettings(settings: IEmailNotificationSettings): Observable { return this.httpAuth .post(`${this.url}/notifications/email`, JSON.stringify(settings), { headers: this.headers }) .map(this.extractData).catch(this.handleError); } getDiscordNotificationSettings(): Observable { return this.httpAuth.get(`${this.url}/notifications/discord`).map(this.extractData).catch(this.handleError) } getMattermostNotificationSettings(): Observable { return this.httpAuth.get(`${this.url}/notifications/mattermost`).map(this.extractData).catch(this.handleError) } saveDiscordNotificationSettings(settings: IDiscordNotifcationSettings): Observable { return this.httpAuth .post(`${this.url}/notifications/discord`, JSON.stringify(settings), { headers: this.headers }) .map(this.extractData).catch(this.handleError); } saveMattermostNotificationSettings(settings: IMattermostNotifcationSettings): Observable { return this.httpAuth .post(`${this.url}/notifications/mattermost`, JSON.stringify(settings), { headers: this.headers }) .map(this.extractData).catch(this.handleError); } getPushbulletNotificationSettings(): Observable { return this.httpAuth.get(`${this.url}/notifications/pushbullet`).map(this.extractData).catch(this.handleError) } getPushoverNotificationSettings(): Observable { return this.httpAuth.get(`${this.url}/notifications/pushover`).map(this.extractData).catch(this.handleError) } savePushbulletNotificationSettings(settings: IPushbulletNotificationSettings): Observable { return this.httpAuth .post(`${this.url}/notifications/pushbullet`, JSON.stringify(settings), { headers: this.headers }) .map(this.extractData).catch(this.handleError); } savePushoverNotificationSettings(settings: IPushoverNotificationSettings): Observable { return this.httpAuth .post(`${this.url}/notifications/pushover`, JSON.stringify(settings), { headers: this.headers }) .map(this.extractData).catch(this.handleError); } getSlackNotificationSettings(): Observable { return this.httpAuth.get(`${this.url}/notifications/slack`).map(this.extractData).catch(this.handleError) } saveSlackNotificationSettings(settings: ISlackNotificationSettings): Observable { return this.httpAuth .post(`${this.url}/notifications/slack`, JSON.stringify(settings), { headers: this.headers }) .map(this.extractData).catch(this.handleError); } }