github.com/readium/readium-lcp-server@v0.0.0-20240101192032-6e95190e99f1/frontend/manage/app/components/lsd.service.ts (about)

     1  import { Injectable }    from '@angular/core';
     2  import {  Http } from '@angular/http';
     3  import 'rxjs/add/operator/toPromise';
     4  // import { User } from './user';
     5  // import { Purchase } from './purchase';
     6  import * as  lsd  from './lsd-structs';
     7  
     8  declare var Config: any; //  this comes from the autogenerated config.js file
     9  @Injectable()
    10  export class LsdService {
    11    private lsdServer = Config.lsd.url; // from Config
    12    // private headers = new Headers ({'Content-Type': 'application/json'});
    13  
    14    static getParamsFor(id: string, name: string) {
    15        let params = '';
    16        if ( id !== undefined ) {
    17            params += '?id=' + id;
    18            if ( name !== undefined ) {
    19                params += '&name=' + name;
    20            }
    21        } else if ( name !== undefined ) {
    22            params += '?name=' + name;
    23        }
    24        return params;
    25    }
    26  
    27    static getParams(enddate: Date, id: string, name: string) {
    28        let p = LsdService.getParamsFor(id, name);
    29        if (p === '') {
    30          return '?end=' + enddate.toISOString();
    31        } else {
    32          p += '&end=' + enddate.toISOString();
    33          return p;
    34        }
    35    }
    36  
    37    constructor (private http: Http) { }
    38  
    39    getStatus(licenseID: string, id: string | undefined, name: string | undefined): Promise<lsd.LicenseStatus> {
    40      return this.http.get(this.lsdServer + '/licenses/' + licenseID + '/status' + LsdService.getParamsFor(id, name) )
    41        .toPromise()
    42        .then(function (response) {
    43             if ((response.status === 200) || (response.status === 201)) {
    44                 return response.json();
    45              } else {
    46              throw 'Error in getStatus(License Status Document); ' + response.status + response.text;
    47            }
    48        })
    49        .catch(this.handleError);
    50    }
    51  
    52   registerDevice(licenseID: string, id: string, name: string | undefined): Promise<lsd.LicenseStatus> {
    53      return this.http.post(this.lsdServer + '/licenses/' + licenseID + '/register'  + LsdService.getParamsFor(id, name), undefined )
    54        .toPromise()
    55        .then(function (response) {
    56             if ((response.status === 200) || (response.status === 201)) {
    57                 return response.json();
    58              } else if ((response.status === 400)) { // bad request
    59                  let obj = response.json();
    60                  throw 'Error registering device (License Status Document): ' + obj.detail + '\n' + response.status + response.text;
    61              } else if ((response.status === 404)) { // license not found
    62                  let obj = response.json();
    63                  throw 'License not found: ' + obj.detail + '\n' + response.status + response.text;
    64              } else {
    65              throw 'Error registering device (License Status Document); ' + response.status + response.text;
    66            }
    67        })
    68        .catch(this.handleError);
    69    }
    70  
    71    returnLoan(licenseID: string, id: string | undefined, name: string | undefined): Promise<lsd.LicenseStatus> {
    72      return this.http.put(this.lsdServer + '/licenses/' + licenseID + '/return'  + LsdService.getParamsFor(id, name), undefined )
    73        .toPromise()
    74        .then(function (response) {
    75             if ((response.status === 200) || (response.status === 201)) {
    76                 return response.json();
    77              } else {
    78                  throw 'Error in returnLoan(License Status Document); ' + response.status + response.text;
    79            }
    80        })
    81        .catch(this.handleError);
    82    }
    83  
    84    renewLoan(licenseID: string, endLicense: Date, id: string | undefined, name: string | undefined): Promise<lsd.LicenseStatus> {
    85      return this.http.put(this.lsdServer + '/licenses/' + licenseID + '/renew'  + LsdService.getParams(endLicense, id, name), undefined )
    86        .toPromise()
    87        .then(function (response) {
    88             if ((response.status === 200) || (response.status === 201)) {
    89                 return response.json();
    90              } else if ((response.status === 400)) {
    91                  let obj = response.json();
    92                  throw 'Error in renewLoan(License Status Document): ' + obj.detail + '\n' + response.status + response.text;
    93              } else {
    94              throw 'Error in renewLoan(License Status Document); ' + response.status + response.text;
    95            }
    96        })
    97        .catch(this.handleRenewError);
    98    }
    99  
   100  
   101    private handleError(error: any): Promise<any> {
   102      console.error('An error occurred (lsd-service)', error);
   103      return Promise.reject(error.message || error);
   104    }
   105  
   106    private handleRenewError(error: any): Promise<any> {
   107      console.error('Error renew (lsd-service)', error);
   108      return Promise.reject(error);
   109    }
   110  }