UNPKG

jade-integration-utils

Version:

A tool made for any type of http requisitions and to manage localstorage. This package works into Angular and Ionic projects (maybe you can run this in ReactNative, MAYBE!).

147 lines 15.5 kB
import { __decorate } from "tslib"; import { Injectable } from '@angular/core'; import { HttpStatusService } from './http-status.service'; import { Router } from '@angular/router'; import { StorageService } from './storage.service'; import * as i0 from "@angular/core"; import * as i1 from "./http-status.service"; import * as i2 from "@angular/router"; let GenericService = class GenericService { constructor(http, router) { this.http = http; this.router = router; this._auth = "Authentication"; } /** * configureHttp */ configureHttp(url) { this.http.configure(url); } /** * * @param endpoint end point to access * @param queryParams = null; a string for example: name=Ronaldo&type=2 doesn't write ? \n(In case send GET without queryParams, just pass null end use endpoint to do it. Ex: cars/example) */ get(endpoint, queryParams) { let new_endpoint = ''; if (queryParams) { console.log(queryParams); new_endpoint = '/' + endpoint + '?' + queryParams; } else { new_endpoint = '/' + endpoint; } this.default_options(); this.auth = this.auth; return this.http.get(new_endpoint); } /** * * @param endpoint end point to access * @param queryParams = null; a string for example: name=Ronaldo&type=2 doesn't write ? \n(In case send GET without queryParams, just pass null end use endpoint to do it. Ex: cars/example) */ get_file(endpoint, queryParams) { let new_endpoint = ''; if (queryParams) { console.log(queryParams); new_endpoint = '/' + endpoint + '?' + queryParams; } else { new_endpoint = '/' + endpoint; } return this.http.get_file(new_endpoint); } /** * * @param endpoint end point to access * @param queryParams = null; a string for example: name=Ronaldo&type=2 doesn't write ? \n(In case send GET without queryParams, just pass null end use endpoint to do it. Ex: cars/example) */ get_any(endpoint, queryParams) { let new_endpoint = ''; if (queryParams) { console.log(queryParams); new_endpoint = '/' + endpoint + '?' + queryParams; } else { new_endpoint = '/' + endpoint; } this.default_options(); this.auth = this.auth; return this.http.get(new_endpoint); } getById(id, endpoint) { this.default_options(); this.auth = this.auth; return this.http.get('/' + endpoint + '/' + id); } /** * Use to request POST. * @param body K -> K is the model dto to pass with body * @param endpoint String -> string to be pass with endpoint access */ post(body, endpoint) { this.default_options(); this.auth = this.auth; return this.http.post('/' + endpoint, body); } /** * Use to request formData with files * Don't forget.to call default_options * @param body K -> K is the model dto to pass with body * @param endpoint String -> string to be pass with endpoint access */ formData(body, endpoint) { return this.http.formData('/' + endpoint, body); } /** * Use to request POST. * @param body K -> K is the model dto to pass with body * @param endpoint String -> string to be pass with endpoint access */ put(body, endpoint) { return this.http.put('/' + endpoint, body); } delete(id, endpoint) { return this.http.delete('/' + endpoint + '/' + id); } set_token(auth) { this.http.set_token(auth); } get_token() { return this.http.get_token(); } get options() { return this.http.options; } set options(options) { this.http.options = options; } default_options() { this.http.default_options(); } set auth(auth) { StorageService.set(this._auth, auth); this.set_token(auth); } get auth() { return StorageService.get(this._auth); } downloadFile(data) { const blob = new Blob([data]); const url = window.URL.createObjectURL(blob); window.open(url); } }; GenericService.ctorParameters = () => [ { type: HttpStatusService }, { type: Router } ]; GenericService.ɵprov = i0.ɵɵdefineInjectable({ factory: function GenericService_Factory() { return new GenericService(i0.ɵɵinject(i1.HttpStatusService), i0.ɵɵinject(i2.Router)); }, token: GenericService, providedIn: "root" }); GenericService = __decorate([ Injectable({ providedIn: 'root' }) ], GenericService); export { GenericService }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vamFkZS1pbnRlZ3JhdGlvbi11dGlscy8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9nZW5lcmljLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUtuRCxJQUFhLGNBQWMsR0FBM0IsTUFBYSxjQUFjO0lBR3pCLFlBQ1MsSUFBdUIsRUFDdkIsTUFBYTtRQURiLFNBQUksR0FBSixJQUFJLENBQW1CO1FBQ3ZCLFdBQU0sR0FBTixNQUFNLENBQU87UUFKZCxVQUFLLEdBQVcsZ0JBQWdCLENBQUM7SUFLcEMsQ0FBQztJQUVOOztPQUVHO0lBQ0ksYUFBYSxDQUFDLEdBQVc7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxHQUFHLENBQUksUUFBaUIsRUFBRSxXQUFvQjtRQUM1QyxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7UUFFdEIsSUFBRyxXQUFXLEVBQUM7WUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pCLFlBQVksR0FBRyxHQUFHLEdBQUUsUUFBUSxHQUFDLEdBQUcsR0FBQyxXQUFXLENBQUM7U0FDOUM7YUFBSTtZQUNILFlBQVksR0FBRyxHQUFHLEdBQUUsUUFBUSxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUV0QixP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QVc7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzlCLENBQUM7SUFDTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUdELElBQVcsSUFBSSxDQUFDLElBQVk7UUFDMUIsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQVcsSUFBSTtRQUNiLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVNLFlBQVksQ0FBQyxJQUFTO1FBQzNCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM5QixNQUFNLEdBQUcsR0FBRSxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7Q0FDRixDQUFBOztZQTdJZ0IsaUJBQWlCO1lBQ2hCLE1BQU07OztBQUxYLGNBQWM7SUFIMUIsVUFBVSxDQUFDO1FBQ1YsVUFBVSxFQUFFLE1BQU07S0FDbkIsQ0FBQztHQUNXLGNBQWMsQ0FpSjFCO1NBakpZLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwU3RhdHVzU2VydmljZSB9IGZyb20gJy4vaHR0cC1zdGF0dXMuc2VydmljZSc7XG5pbXBvcnQgeyBSZXN1bHQgfSBmcm9tICcuLi9Nb2RlbHMvUGFnaW5hdG9yJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vc3RvcmFnZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY1NlcnZpY2Uge1xuICBwcml2YXRlIF9hdXRoOiBzdHJpbmcgPSBcIkF1dGhlbnRpY2F0aW9uXCI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGh0dHA6IEh0dHBTdGF0dXNTZXJ2aWNlLFxuICAgIHB1YmxpYyByb3V0ZXI6Um91dGVyXG4gICkgeyAgfVxuXG4gIC8qKlxuICAgKiBjb25maWd1cmVIdHRwXG4gICAqL1xuICBwdWJsaWMgY29uZmlndXJlSHR0cCh1cmw6IHN0cmluZykge1xuICAgIHRoaXMuaHR0cC5jb25maWd1cmUodXJsKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZW5kcG9pbnQgZW5kIHBvaW50IHRvIGFjY2Vzc1xuICAgKiBAcGFyYW0gcXVlcnlQYXJhbXMgPSBudWxsOyBhIHN0cmluZyBmb3IgZXhhbXBsZTogbmFtZT1Sb25hbGRvJnR5cGU9MiBkb2Vzbid0IHdyaXRlID8gXFxuKEluIGNhc2Ugc2VuZCBHRVQgd2l0aG91dCBxdWVyeVBhcmFtcywganVzdCBwYXNzIG51bGwgZW5kIHVzZSBlbmRwb2ludCB0byBkbyBpdC4gRXg6IGNhcnMvZXhhbXBsZSlcbiAgICovXG4gIGdldDxUPihlbmRwb2ludD86IHN0cmluZywgcXVlcnlQYXJhbXM/OiBzdHJpbmcpOiBQcm9taXNlPFJlc3VsdDxUPj4ge1xuICAgIGxldCBuZXdfZW5kcG9pbnQgPSAnJztcblxuICAgIGlmKHF1ZXJ5UGFyYW1zKXtcbiAgICAgIGNvbnNvbGUubG9nKHF1ZXJ5UGFyYW1zKTtcbiAgICAgIG5ld19lbmRwb2ludCA9ICcvJyArZW5kcG9pbnQrJz8nK3F1ZXJ5UGFyYW1zO1xuICAgIH1lbHNle1xuICAgICAgbmV3X2VuZHBvaW50ID0gJy8nKyBlbmRwb2ludDtcbiAgICB9XG4gICAgdGhpcy5kZWZhdWx0X29wdGlvbnMoKTtcbiAgICB0aGlzLmF1dGggPSB0aGlzLmF1dGg7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxSZXN1bHQ8VD4+KG5ld19lbmRwb2ludCk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGVuZHBvaW50IGVuZCBwb2ludCB0byBhY2Nlc3NcbiAgICogQHBhcmFtIHF1ZXJ5UGFyYW1zID0gbnVsbDsgYSBzdHJpbmcgZm9yIGV4YW1wbGU6IG5hbWU9Um9uYWxkbyZ0eXBlPTIgZG9lc24ndCB3cml0ZSA/IFxcbihJbiBjYXNlIHNlbmQgR0VUIHdpdGhvdXQgcXVlcnlQYXJhbXMsIGp1c3QgcGFzcyBudWxsIGVuZCB1c2UgZW5kcG9pbnQgdG8gZG8gaXQuIEV4OiBjYXJzL2V4YW1wbGUpXG4gICAqL1xuICBnZXRfZmlsZShlbmRwb2ludD86IHN0cmluZywgcXVlcnlQYXJhbXM/OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGxldCBuZXdfZW5kcG9pbnQgPSAnJztcblxuICAgIGlmKHF1ZXJ5UGFyYW1zKXtcbiAgICAgIGNvbnNvbGUubG9nKHF1ZXJ5UGFyYW1zKTtcbiAgICAgIG5ld19lbmRwb2ludCA9ICcvJyArZW5kcG9pbnQrJz8nK3F1ZXJ5UGFyYW1zO1xuICAgIH1lbHNle1xuICAgICAgbmV3X2VuZHBvaW50ID0gJy8nKyBlbmRwb2ludDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldF9maWxlKG5ld19lbmRwb2ludCk7XG4gIH1cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBlbmRwb2ludCBlbmQgcG9pbnQgdG8gYWNjZXNzXG4gICAqIEBwYXJhbSBxdWVyeVBhcmFtcyA9IG51bGw7IGEgc3RyaW5nIGZvciBleGFtcGxlOiBuYW1lPVJvbmFsZG8mdHlwZT0yIGRvZXNuJ3Qgd3JpdGUgPyBcXG4oSW4gY2FzZSBzZW5kIEdFVCB3aXRob3V0IHF1ZXJ5UGFyYW1zLCBqdXN0IHBhc3MgbnVsbCBlbmQgdXNlIGVuZHBvaW50IHRvIGRvIGl0LiBFeDogY2Fycy9leGFtcGxlKVxuICAgKi9cbiAgZ2V0X2FueShlbmRwb2ludD86IHN0cmluZywgcXVlcnlQYXJhbXM/OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGxldCBuZXdfZW5kcG9pbnQgPSAnJztcblxuICAgIGlmKHF1ZXJ5UGFyYW1zKXtcbiAgICAgIGNvbnNvbGUubG9nKHF1ZXJ5UGFyYW1zKTtcbiAgICAgIG5ld19lbmRwb2ludCA9ICcvJyArZW5kcG9pbnQrJz8nK3F1ZXJ5UGFyYW1zO1xuICAgIH1lbHNle1xuICAgICAgbmV3X2VuZHBvaW50ID0gJy8nKyBlbmRwb2ludDtcbiAgICB9XG4gICAgdGhpcy5kZWZhdWx0X29wdGlvbnMoKTtcbiAgICB0aGlzLmF1dGggPSB0aGlzLmF1dGg7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KG5ld19lbmRwb2ludCk7XG4gIH1cblxuICBnZXRCeUlkPFQ+KGlkOiBudW1iZXIsIGVuZHBvaW50Pzogc3RyaW5nKTogUHJvbWlzZTxSZXN1bHQ8VD4+IHtcbiAgICB0aGlzLmRlZmF1bHRfb3B0aW9ucygpO1xuICAgIHRoaXMuYXV0aCA9IHRoaXMuYXV0aDtcblxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFJlc3VsdDxUPj4oJy8nICsgZW5kcG9pbnQgKyAnLycgKyBpZCk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRvIHJlcXVlc3QgUE9TVC5cbiAgICogQHBhcmFtIGJvZHkgSyAtPiBLIGlzIHRoZSBtb2RlbCBkdG8gdG8gcGFzcyB3aXRoIGJvZHlcbiAgICogQHBhcmFtIGVuZHBvaW50IFN0cmluZyAtPiBzdHJpbmcgdG8gYmUgcGFzcyB3aXRoIGVuZHBvaW50IGFjY2Vzc1xuICAgKi9cbiAgcG9zdDxULEs+KGJvZHk6IEssIGVuZHBvaW50Pzogc3RyaW5nKTogUHJvbWlzZTxSZXN1bHQ8VD4+IHtcbiAgICB0aGlzLmRlZmF1bHRfb3B0aW9ucygpO1xuICAgIHRoaXMuYXV0aCA9IHRoaXMuYXV0aDtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxSZXN1bHQ8VD4+KCcvJyArIGVuZHBvaW50LCBib2R5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdG8gcmVxdWVzdCBmb3JtRGF0YSB3aXRoIGZpbGVzXG4gICAqIERvbid0IGZvcmdldC50byBjYWxsIGRlZmF1bHRfb3B0aW9uc1xuICAgKiBAcGFyYW0gYm9keSBLIC0+IEsgaXMgdGhlIG1vZGVsIGR0byB0byBwYXNzIHdpdGggYm9keVxuICAgKiBAcGFyYW0gZW5kcG9pbnQgU3RyaW5nIC0+IHN0cmluZyB0byBiZSBwYXNzIHdpdGggZW5kcG9pbnQgYWNjZXNzXG4gICAqL1xuICBmb3JtRGF0YTxULEs+KGJvZHk6IEssIGVuZHBvaW50Pzogc3RyaW5nKTogUHJvbWlzZTxSZXN1bHQ8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmZvcm1EYXRhPFJlc3VsdDxUPj4oJy8nICsgZW5kcG9pbnQsIGJvZHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSB0byByZXF1ZXN0IFBPU1QuXG4gICAqIEBwYXJhbSBib2R5IEsgLT4gSyBpcyB0aGUgbW9kZWwgZHRvIHRvIHBhc3Mgd2l0aCBib2R5XG4gICAqIEBwYXJhbSBlbmRwb2ludCBTdHJpbmcgLT4gc3RyaW5nIHRvIGJlIHBhc3Mgd2l0aCBlbmRwb2ludCBhY2Nlc3NcbiAgICovXG4gIHB1dDxULEs+KGJvZHk6IEssIGVuZHBvaW50Pzogc3RyaW5nKTogUHJvbWlzZTxSZXN1bHQ8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxSZXN1bHQ8VD4+KCcvJyArIGVuZHBvaW50LCBib2R5KTtcbiAgfVxuXG4gIGRlbGV0ZTxUPihpZDogbnVtYmVyLCBlbmRwb2ludD86IHN0cmluZyk6IFByb21pc2U8UmVzdWx0PFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8UmVzdWx0PFQ+PignLycgKyBlbmRwb2ludCArICcvJyArIGlkKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRfdG9rZW4oYXV0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5odHRwLnNldF90b2tlbihhdXRoKTtcbiAgfVxuICBwdWJsaWMgZ2V0X3Rva2VuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXRfdG9rZW4oKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3B0aW9ucygpe1xuICAgIHJldHVybiB0aGlzLmh0dHAub3B0aW9ucztcbiAgfVxuICBwdWJsaWMgc2V0IG9wdGlvbnMob3B0aW9uczphbnkpe1xuICAgIHRoaXMuaHR0cC5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuICBwdWJsaWMgZGVmYXVsdF9vcHRpb25zKCl7XG4gICAgdGhpcy5odHRwLmRlZmF1bHRfb3B0aW9ucygpO1xuICB9XG5cblxuICBwdWJsaWMgc2V0IGF1dGgoYXV0aDogc3RyaW5nKSB7XG4gICAgU3RvcmFnZVNlcnZpY2Uuc2V0KHRoaXMuX2F1dGgsYXV0aCk7XG4gICAgdGhpcy5zZXRfdG9rZW4oYXV0aCk7XG4gIH1cbiAgcHVibGljIGdldCBhdXRoKCkge1xuICAgIHJldHVybiBTdG9yYWdlU2VydmljZS5nZXQodGhpcy5fYXV0aCk7XG4gIH1cblxuICBwdWJsaWMgZG93bmxvYWRGaWxlKGRhdGE6IGFueSkge1xuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZGF0YV0pO1xuICAgIGNvbnN0IHVybD0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgd2luZG93Lm9wZW4odXJsKTtcbiAgfVxufVxuIl19