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
JavaScript
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