import { Injectable }       from '@angular/core'
import { Subject }          from 'rxjs/Subject'
import { Http }             from '@angular/http'

import 'rxjs/add/operator/toPromise';

import { HelperService }    from './svc.helper'
import { SharedService }   from './svc.shared'

import { PageType }         from '../types/page'

@Injectable()
export class LibraryService {

    constructor(
        private http: Http,
        private helper: HelperService,
        private _shared: SharedService
    ) {}


    api = this.helper.server
    access = this.api+'feed/get/access'
    key = this.helper.credentials

    private handleError(error: any): Promise<any> {
        console.error('An error occurred', error); // for demo purposes only TODO: create better error handling
        return Promise.reject(error.message || error);
    }

    getPageContent(urlkey:string): Promise<PageType> {
        return this.http.get(this.api + 'feed/get/page' + this.key + '&urlkey=' + urlkey)
            .toPromise()
            .then((response) => {

                //this._shared.setPage(response.json().data.page.title);
                return response.json().data.page as PageType

            })
            .catch(this.handleError);
    }

    grantAccess(): Promise<any> {
        return this.http.get(this.api + 'feed/set/access' + this.key).toPromise().then(response => {
            return response.json().data
        }).catch(this.handleError)
    }

    getIp(): Promise<any> {
        return this.http.get(this.access+this.key)
            .toPromise()
            .then(result => {
                return result.json().data
            })
            .catch(this.handleError)
    } 
}