github.com/readium/readium-lcp-server@v0.0.0-20240101192032-6e95190e99f1/frontend/manage/app/components/purchase.service.ts (about) 1 import { Injectable } from '@angular/core'; 2 import { Headers, Http } from '@angular/http'; 3 import 'rxjs/add/operator/toPromise'; 4 import { User } from './user'; 5 import { Purchase } from './purchase'; 6 7 declare var Config: any; // this comes from the autogenerated config.js file 8 @Injectable() 9 export class PurchaseService { 10 private usersUrl = Config.frontend.url + '/users' ; 11 // /users/{user_id}/purchases 12 private headers = new Headers ({'Content-Type': 'application/json'}); 13 14 constructor (private http: Http) { } 15 getPurchases(user: User): Promise<Purchase[]> { 16 return this.http.get(this.usersUrl + '/' + user.userID + '/purchases') 17 .toPromise() 18 .then(function (response) { 19 let purchases: Purchase[] = []; 20 for (let ResponseItem of response.json()) { 21 let p = new Purchase; 22 p.label = ResponseItem.label; 23 p.licenseID = ResponseItem.licenseID; 24 p.purchaseID = ResponseItem.purchaseID; 25 p.resource = ResponseItem.resource; 26 p.transactionDate = ResponseItem.transactionDate; 27 p.user = ResponseItem.user; 28 p.partialLicense = ResponseItem.partialLicense; 29 purchases[purchases.length] = p; 30 } 31 return purchases; 32 }) 33 .catch(this.handleError); 34 } 35 36 create(purchase: Purchase): Promise<Purchase> { 37 return this.http 38 .put(this.usersUrl + '/' + purchase.user.userID + '/purchases', JSON.stringify(purchase), {headers: this.headers}) 39 .toPromise() 40 .then(function (response) { 41 if ((response.status === 200) || (response.status === 201)) { 42 return purchase; // ok 43 } else { 44 throw 'Error in create(purchase); ' + response.status + response.text; 45 } 46 }) 47 .catch(this.handleError); 48 } 49 50 private handleError(error: any): Promise<any> { 51 console.error('An error occurred (purchase-service)', error); 52 return Promise.reject(error.message || error); 53 } 54 55 }