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  }