import { Injectable } from '@angular/core'; import { Http, Headers, Response } from '@angular/http'; import { ConfigurationService } from './config.service'; import { AuthService } from './auth.service'; import { Observable } from 'rxjs/Observable'; const REGISTRY_ENDPOINT = '@registry'; const TYPES_ENDPOINT = '@types'; const SHARING_ENTRYPOINT = '@sharing'; @Injectable() export class AtlasenseapiService { constructor(public http: Http, public config: ConfigurationService, public auth: AuthService) { } createAuthHeaders(headers: Headers) { // Add the auth headers let auth_header = ''; auth_header = 'Bearer ' + this.auth.auth.jwt; headers.append('Authorization', auth_header); headers.append('Content-Type', 'application/json'); } get(url): Observable { // do a get request to site let headers = new Headers(); this.createAuthHeaders(headers); return this.http.get(url, { headers: headers }); } post(url, data): Observable { // do a post request to site let headers = new Headers(); this.createAuthHeaders(headers); return this.http.post(url, data, { headers: headers }); } head(url): Observable { let headers = new Headers(); this.createAuthHeaders(headers); return this.http.head(url, { headers: headers }); } delete(url): Observable { let headers = new Headers(); this.createAuthHeaders(headers); return this.http.delete(url, { headers: headers }); } patch(url, data): Observable { let headers = new Headers(); this.createAuthHeaders(headers); return this.http.patch(url, { headers: headers }); } getSharing(object_id) { let url = object_id + '/' + SHARING_ENTRYPOINT; return this.get(url); } getRegistry() { let url = this.config.internal_urls.canonical + '/' + REGISTRY_ENDPOINT; return this.get(url); } getTypes() { let url = this.config.internal_urls.canonical + '/' + TYPES_ENDPOINT; return this.get(url); } getSchema(type) { let url = this.config.internal_urls.canonical + '/' + TYPES_ENDPOINT + '/' + type; return this.get(url); } createObject(container, type, object) { object['@type'] = type let data = JSON.stringify(object) return this.post(container, data) } getDefinition() { let url = this.config.internal_urls.canonical; var the_arr = url.split('/'); the_arr.pop(); the_arr.pop(); url = the_arr.join('/'); return this.get(url); } }