1
|
import {Injectable} from '@angular/core';
|
2
|
import {Http, Response} from '@angular/http';
|
3
|
import {Observable} from 'rxjs/Observable';
|
4
|
import {OpenaireProperties} from '../../../utils/properties/openaireProperties';
|
5
|
import 'rxjs/add/observable/of';
|
6
|
import 'rxjs/add/operator/do';
|
7
|
import 'rxjs/add/operator/share';
|
8
|
@Injectable()
|
9
|
export class SearchDataciteService {
|
10
|
constructor(private http: Http ) {}
|
11
|
|
12
|
searchDataciteResults (term: string, size : number, page : number):any {
|
13
|
console.info("In search datacite results "+term);
|
14
|
let url = OpenaireProperties.getSearchDataciteAPIURL()+'?query='+term+'&rows='+size+'&start='+(size*(page-1));
|
15
|
let key = url;
|
16
|
|
17
|
return this.http.get( (OpenaireProperties.isCacheEnabled())? (OpenaireProperties.getCacheUrl()+encodeURIComponent(url)): url)
|
18
|
.map(request => <any> request.json())
|
19
|
.do(items => console.info(items))
|
20
|
.do(items => console.log("Datacite Results: total results = "+items.meta.total+" keyword = "+term));
|
21
|
//.catch(this.handleError);
|
22
|
}
|
23
|
getDataciteResultByDOI (doi: string):any {
|
24
|
console.info("Fetch datacite resultt by DOI: "+doi);
|
25
|
let url = OpenaireProperties.getSearchDataciteAPIURL()+'/'+doi;
|
26
|
let key = url;
|
27
|
|
28
|
return this.http.get( (OpenaireProperties.isCacheEnabled())? (OpenaireProperties.getCacheUrl()+encodeURIComponent(url)): url)
|
29
|
.map(request => <any> request.json())
|
30
|
.do(items => console.info(items));
|
31
|
// .do(items => console.log("Datacite Results: total results = "+items.meta.total+" doi = "+doi))
|
32
|
|
33
|
//.catch(this.handleError);
|
34
|
}
|
35
|
|
36
|
|
37
|
private handleError (error: Response) {
|
38
|
// in a real world app, we may send the error to some remote logging infrastructure
|
39
|
// instead of just logging it to the console
|
40
|
console.log(error);
|
41
|
return Observable.throw(error || 'Server error');
|
42
|
}
|
43
|
private extractData(res: Response) {
|
44
|
if (res.status < 200 || res.status >= 300) {
|
45
|
throw new Error('Bad response status: ' + res.status);
|
46
|
}
|
47
|
let body = res.json();
|
48
|
return body.data || { };
|
49
|
}
|
50
|
}
|