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 }