Project

General

Profile

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
}
(8-8/10)