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 SearchCrossrefService {
10
  constructor( private http: Http ) {}
11

    
12

    
13
  searchCrossrefResults (term: string, size : number, page : number):any {
14
     let url = OpenaireProperties.getSearchCrossrefAPIURL()+'?query='+term+'&rows='+size+'&offset='+(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().message)
19
                     .do(items => console.log("Crossref Results: total results = "+items['total-results']+" keyword = "+term));
20
                     //.catch(this.handleError);
21

    
22
    }
23
    searchCrossrefByDOIs(DOIs: string[]):any {
24
      /*
25
      $request ="http://api.crossref.org/works"."?filter=";
26
                      foreach($dois as $doi){
27
                          $request.="doi:".urlencode( trim($doi)).",";
28
                      }
29
      */
30
      var doisParams = "";
31
      for(var i =0 ;i < DOIs.length; i++){
32
        doisParams+=(doisParams.length > 0?",":"")+'doi:'+DOIs[i];
33
      }
34
       let url = OpenaireProperties.getSearchCrossrefAPIURL()+'?filter='+doisParams;
35
       let key = url;
36

    
37

    
38
       return this.http.get( (OpenaireProperties.isCacheEnabled())? (OpenaireProperties.getCacheUrl()+encodeURIComponent(url)): url)
39
                       .map(request => <any> request.json().message)
40
                       .do(items => console.log("Crossref Results: total results = "+items['total-results']+" for doi = "+doisParams));
41
                       //.catch(this.handleError);
42

    
43
      }
44
      searchCrossrefByMultipleDOIs(dois: string[]):any {
45
        let url = OpenaireProperties.getSearchCrossrefAPIURL()+'?filter=doi:';
46
        for(var i=0; i<dois.length; i++){
47
          url=url+(url.length==0?'':',')+'doi:'+dois[i];
48
        }
49
        url = OpenaireProperties.getSearchCrossrefAPIURL()+'?filter='+url;
50
        let key = url;
51

    
52

    
53
         return this.http.get( (OpenaireProperties.isCacheEnabled())? (OpenaireProperties.getCacheUrl()+encodeURIComponent(url)): url)
54
                         .map(request => <any> request.json().message)
55
                         .do(items => console.log("Crossref Results: total results = "+items['total-results']));
56
                         //.catch(this.handleError);
57

    
58
        }
59

    
60
  private handleError (error: Response) {
61
    // in a real world app, we may send the error to some remote logging infrastructure
62
    // instead of just logging it to the console
63
    console.log(error);
64
    return Observable.throw(error  || 'Server error');
65
  }
66

    
67
}
(6-6/10)