Project

General

Profile

1
/*
2
* Created by myrto on 12/05/2017
3
*/
4

    
5
import { Injectable } from '@angular/core';
6
import { Observable } from 'rxjs/Observable';
7
import 'rxjs/add/operator/map';
8
import { Http, Response, Headers, RequestOptions } from '@angular/http';
9

    
10
import {
11
  AdvQueryObject, BrowseEntry, EventsPage, OpenaireSubscription, Repository, SimpleSubscriptionDesc, Subscription,
12
  Term
13
} from '../domain/typeScriptClasses';
14
import {HttpClient, HttpHeaders} from "@angular/common/http";
15

    
16

    
17
let headers = new Headers({ 'Content-Type': 'application/json' });
18
let httpOptions = new RequestOptions({ headers: headers });
19
const headerOptions = {
20
  headers : new HttpHeaders().set('Content-Type', 'application/json')
21
    .set('Accept', 'application/json'),
22
  withCredentials: true
23
};
24

    
25
@Injectable ()
26
export class BrokerService {
27
  private apiUrl = process.env.API_ENDPOINT + '/broker/';
28

    
29
  constructor(private http: Http,
30
              private httpClient: HttpClient) { }
31

    
32
  advancedShowEvents(page: number,size: number,searchParams: AdvQueryObject): Observable<EventsPage>{
33
    let url = `${this.apiUrl}advancedShowEvents/${page}/${size}`;
34
    console.log(`knocking on: ${url}`);
35
    let body = searchParams;
36
    console.log(`sending ${JSON.stringify(body)}`);
37

    
38
    return this.httpClient.post<EventsPage>(url,body,headerOptions);
39
  }
40

    
41
  getDatasourcesOfUser(userEmail: string) {
42
    let url = `${this.apiUrl}getDatasourcesOfUser?user=${userEmail}&includeShared=false&includeByOthers=false`;
43
    console.log(`knocking on: ${url}`);
44

    
45
    return this.httpClient.get(url,headerOptions);
46
  }
47

    
48
  getDnetTopics(): Observable<Map<string,Term>> {
49
    let url = `${this.apiUrl}getDnetTopics`;
50
    console.log(`knocking on: ${url}`);
51

    
52
    return this.httpClient.get<Map<string,Term>>(url, headerOptions);
53
  }
54

    
55
  getNotificationsBySubscriptionId(subId: string, page: number, size: number): Observable<EventsPage> {
56
    let url = `${this.apiUrl}getNotificationsBySubscriptionId/${subId}/${page}/${size}`;
57
    console.log(`knocking on: ${url}`);
58

    
59
    return this.httpClient.get<EventsPage>(url, headerOptions);
60
  }
61

    
62
  getSimpleSubscriptionsOfUser(userEmail: string): Observable<Map<string,SimpleSubscriptionDesc[]>> {
63
    let url = `${this.apiUrl}getSimpleSubscriptionsOfUser/${userEmail}/`;
64
    console.log(`knocking on: ${url}`);
65

    
66
    return this.httpClient.get<Map<string,SimpleSubscriptionDesc[]>>(url, headerOptions);
67
  }
68

    
69
  getSubscription(subId: string): Observable<Subscription> {
70
    let url = `${this.apiUrl}getSubscription/${subId}`;
71
    console.log(`knocking on: ${url}`);
72

    
73
    return this.httpClient.get<Subscription>(url,headerOptions);
74
  }
75

    
76
  getSubscriptionsOfUser(userEmail: string): Observable<Map<string, Subscription>> {
77
    let url = `${this.apiUrl}getSubscriptionsOfUser/${userEmail}/`;
78
    console.log(`knocking on: ${url}`);
79

    
80
    return this.httpClient.get<Map<string, Subscription>>(url, headerOptions);
81
  }
82

    
83
  getTopicsForDataSource(name: string): Observable<BrowseEntry[]> {
84
    let url = `${this.apiUrl}getTopicsForDatasource/${encodeURIComponent(name)}`;
85
    console.log(`knocking on: ${url}`);
86

    
87
    return this.httpClient.get<BrowseEntry[]>(url, headerOptions);
88
  }
89

    
90
/* NOT WORKING AND PROBABLY NOT NEEDED
91
  showEvents(repoName: string, topic: string, page: number): Observable<EventsPage> {
92
    let url = `${this.apiUrl}showEvents/{datasourceName}/{topic}/{page}?datasourceName=${repoName}&topic=${topic}&page=${page}`;
93
    console.log(`knocking on: ${url}`);
94

    
95
    return this.httpClient.get<EventsPage>(url, headerOptions);
96
  }
97
*/
98

    
99
  /*CHECK IF sub is sent as body*/
100
  subscribeToEvent(sub: OpenaireSubscription): Observable<Subscription>{
101
    let url = `${this.apiUrl}subscribe`;
102
    console.log(`knocking on: ${url}`);
103

    
104
    return this.httpClient.post<Subscription>(url,sub,headerOptions);
105
  }
106

    
107
  unsubscribe(subscriptionId: string) {
108
    let url = `${this.apiUrl}unsubscribe/${subscriptionId}`;
109
    console.log(`knocking on: ${url}`);
110
    const body = {};
111

    
112
    return this.httpClient.post(url, body, {withCredentials: true, responseType: 'text'});
113
}
114

    
115
}
(4-4/10)