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!).
156 lines • 16.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";
var GenericService = /** @class */ (function () {
function GenericService(http, router) {
this.http = http;
this.router = router;
this._auth = "Authentication";
}
/**
* configureHttp
*/
GenericService.prototype.configureHttp = function (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)
*/
GenericService.prototype.get = function (endpoint, queryParams) {
var 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)
*/
GenericService.prototype.get_file = function (endpoint, queryParams) {
var 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)
*/
GenericService.prototype.get_any = function (endpoint, queryParams) {
var 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);
};
GenericService.prototype.getById = function (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
*/
GenericService.prototype.post = function (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
*/
GenericService.prototype.formData = function (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
*/
GenericService.prototype.put = function (body, endpoint) {
return this.http.put('/' + endpoint, body);
};
GenericService.prototype.delete = function (id, endpoint) {
return this.http.delete('/' + endpoint + '/' + id);
};
GenericService.prototype.set_token = function (auth) {
this.http.set_token(auth);
};
GenericService.prototype.get_token = function () {
return this.http.get_token();
};
Object.defineProperty(GenericService.prototype, "options", {
get: function () {
return this.http.options;
},
set: function (options) {
this.http.options = options;
},
enumerable: true,
configurable: true
});
GenericService.prototype.default_options = function () {
this.http.default_options();
};
Object.defineProperty(GenericService.prototype, "auth", {
get: function () {
return StorageService.get(this._auth);
},
set: function (auth) {
StorageService.set(this._auth, auth);
this.set_token(auth);
},
enumerable: true,
configurable: true
});
GenericService.prototype.downloadFile = function (data) {
var blob = new Blob([data]);
var url = window.URL.createObjectURL(blob);
window.open(url);
};
GenericService.ctorParameters = function () { return [
{ 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);
return GenericService;
}());
export { GenericService };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vamFkZS1pbnRlZ3JhdGlvbi11dGlscy8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9nZW5lcmljLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUtuRDtJQUdFLHdCQUNTLElBQXVCLEVBQ3ZCLE1BQWE7UUFEYixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUN2QixXQUFNLEdBQU4sTUFBTSxDQUFPO1FBSmQsVUFBSyxHQUFXLGdCQUFnQixDQUFDO0lBS3BDLENBQUM7SUFFTjs7T0FFRztJQUNJLHNDQUFhLEdBQXBCLFVBQXFCLEdBQVc7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCw0QkFBRyxHQUFILFVBQU8sUUFBaUIsRUFBRSxXQUFvQjtRQUM1QyxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7UUFFdEIsSUFBRyxXQUFXLEVBQUM7WUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pCLFlBQVksR0FBRyxHQUFHLEdBQUUsUUFBUSxHQUFDLEdBQUcsR0FBQyxXQUFXLENBQUM7U0FDOUM7YUFBSTtZQUNILFlBQVksR0FBRyxHQUFHLEdBQUUsUUFBUSxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUV0QixPQUFPLElBQUksQ0FB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QUFJLENBQUMsT0FBTyxDQUFDO1FBQzNCLENBQUM7YUFDRCxVQUFtQixPQUFXO1lBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUM5QixDQUFDOzs7T0FIQTtJQUlNLHdDQUFlLEdBQXRCO1FBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBR0Qsc0JBQVcsZ0NBQUk7YUFJZjtZQUNFLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsQ0FBQzthQU5ELFVBQWdCLElBQVk7WUFDMUIsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsQ0FBQzs7O09BQUE7SUFLTSxxQ0FBWSxHQUFuQixVQUFvQixJQUFTO1FBQzNCLElBQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFNLEdBQUcsR0FBRSxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7O2dCQTVJYyxpQkFBaUI7Z0JBQ2hCLE1BQU07OztJQUxYLGNBQWM7UUFIMUIsVUFBVSxDQUFDO1lBQ1YsVUFBVSxFQUFFLE1BQU07U0FDbkIsQ0FBQztPQUNXLGNBQWMsQ0FpSjFCO3lCQTFKRDtDQTBKQyxBQWpKRCxJQWlKQztTQWpKWSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cFN0YXR1c1NlcnZpY2UgfSBmcm9tICcuL2h0dHAtc3RhdHVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSAnLi4vTW9kZWxzL1BhZ2luYXRvcic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEdlbmVyaWNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfYXV0aDogc3RyaW5nID0gXCJBdXRoZW50aWNhdGlvblwiO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBodHRwOiBIdHRwU3RhdHVzU2VydmljZSxcbiAgICBwdWJsaWMgcm91dGVyOlJvdXRlclxuICApIHsgIH1cblxuICAvKipcbiAgICogY29uZmlndXJlSHR0cFxuICAgKi9cbiAgcHVibGljIGNvbmZpZ3VyZUh0dHAodXJsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmh0dHAuY29uZmlndXJlKHVybCk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGVuZHBvaW50IGVuZCBwb2ludCB0byBhY2Nlc3NcbiAgICogQHBhcmFtIHF1ZXJ5UGFyYW1zID0gbnVsbDsgYSBzdHJpbmcgZm9yIGV4YW1wbGU6IG5hbWU9Um9uYWxkbyZ0eXBlPTIgZG9lc24ndCB3cml0ZSA/IFxcbihJbiBjYXNlIHNlbmQgR0VUIHdpdGhvdXQgcXVlcnlQYXJhbXMsIGp1c3QgcGFzcyBudWxsIGVuZCB1c2UgZW5kcG9pbnQgdG8gZG8gaXQuIEV4OiBjYXJzL2V4YW1wbGUpXG4gICAqL1xuICBnZXQ8VD4oZW5kcG9pbnQ/OiBzdHJpbmcsIHF1ZXJ5UGFyYW1zPzogc3RyaW5nKTogUHJvbWlzZTxSZXN1bHQ8VD4+IHtcbiAgICBsZXQgbmV3X2VuZHBvaW50ID0gJyc7XG5cbiAgICBpZihxdWVyeVBhcmFtcyl7XG4gICAgICBjb25zb2xlLmxvZyhxdWVyeVBhcmFtcyk7XG4gICAgICBuZXdfZW5kcG9pbnQgPSAnLycgK2VuZHBvaW50Kyc/JytxdWVyeVBhcmFtcztcbiAgICB9ZWxzZXtcbiAgICAgIG5ld19lbmRwb2ludCA9ICcvJysgZW5kcG9pbnQ7XG4gICAgfVxuICAgIHRoaXMuZGVmYXVsdF9vcHRpb25zKCk7XG4gICAgdGhpcy5hdXRoID0gdGhpcy5hdXRoO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UmVzdWx0PFQ+PihuZXdfZW5kcG9pbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBlbmRwb2ludCBlbmQgcG9pbnQgdG8gYWNjZXNzXG4gICAqIEBwYXJhbSBxdWVyeVBhcmFtcyA9IG51bGw7IGEgc3RyaW5nIGZvciBleGFtcGxlOiBuYW1lPVJvbmFsZG8mdHlwZT0yIGRvZXNuJ3Qgd3JpdGUgPyBcXG4oSW4gY2FzZSBzZW5kIEdFVCB3aXRob3V0IHF1ZXJ5UGFyYW1zLCBqdXN0IHBhc3MgbnVsbCBlbmQgdXNlIGVuZHBvaW50IHRvIGRvIGl0LiBFeDogY2Fycy9leGFtcGxlKVxuICAgKi9cbiAgZ2V0X2ZpbGUoZW5kcG9pbnQ/OiBzdHJpbmcsIHF1ZXJ5UGFyYW1zPzogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICBsZXQgbmV3X2VuZHBvaW50ID0gJyc7XG5cbiAgICBpZihxdWVyeVBhcmFtcyl7XG4gICAgICBjb25zb2xlLmxvZyhxdWVyeVBhcmFtcyk7XG4gICAgICBuZXdfZW5kcG9pbnQgPSAnLycgK2VuZHBvaW50Kyc/JytxdWVyeVBhcmFtcztcbiAgICB9ZWxzZXtcbiAgICAgIG5ld19lbmRwb2ludCA9ICcvJysgZW5kcG9pbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXRfZmlsZShuZXdfZW5kcG9pbnQpO1xuICB9XG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZW5kcG9pbnQgZW5kIHBvaW50IHRvIGFjY2Vzc1xuICAgKiBAcGFyYW0gcXVlcnlQYXJhbXMgPSBudWxsOyBhIHN0cmluZyBmb3IgZXhhbXBsZTogbmFtZT1Sb25hbGRvJnR5cGU9MiBkb2Vzbid0IHdyaXRlID8gXFxuKEluIGNhc2Ugc2VuZCBHRVQgd2l0aG91dCBxdWVyeVBhcmFtcywganVzdCBwYXNzIG51bGwgZW5kIHVzZSBlbmRwb2ludCB0byBkbyBpdC4gRXg6IGNhcnMvZXhhbXBsZSlcbiAgICovXG4gIGdldF9hbnkoZW5kcG9pbnQ/OiBzdHJpbmcsIHF1ZXJ5UGFyYW1zPzogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICBsZXQgbmV3X2VuZHBvaW50ID0gJyc7XG5cbiAgICBpZihxdWVyeVBhcmFtcyl7XG4gICAgICBjb25zb2xlLmxvZyhxdWVyeVBhcmFtcyk7XG4gICAgICBuZXdfZW5kcG9pbnQgPSAnLycgK2VuZHBvaW50Kyc/JytxdWVyeVBhcmFtcztcbiAgICB9ZWxzZXtcbiAgICAgIG5ld19lbmRwb2ludCA9ICcvJysgZW5kcG9pbnQ7XG4gICAgfVxuICAgIHRoaXMuZGVmYXVsdF9vcHRpb25zKCk7XG4gICAgdGhpcy5hdXRoID0gdGhpcy5hdXRoO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihuZXdfZW5kcG9pbnQpO1xuICB9XG5cbiAgZ2V0QnlJZDxUPihpZDogbnVtYmVyLCBlbmRwb2ludD86IHN0cmluZyk6IFByb21pc2U8UmVzdWx0PFQ+PiB7XG4gICAgdGhpcy5kZWZhdWx0X29wdGlvbnMoKTtcbiAgICB0aGlzLmF1dGggPSB0aGlzLmF1dGg7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxSZXN1bHQ8VD4+KCcvJyArIGVuZHBvaW50ICsgJy8nICsgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSB0byByZXF1ZXN0IFBPU1QuXG4gICAqIEBwYXJhbSBib2R5IEsgLT4gSyBpcyB0aGUgbW9kZWwgZHRvIHRvIHBhc3Mgd2l0aCBib2R5XG4gICAqIEBwYXJhbSBlbmRwb2ludCBTdHJpbmcgLT4gc3RyaW5nIHRvIGJlIHBhc3Mgd2l0aCBlbmRwb2ludCBhY2Nlc3NcbiAgICovXG4gIHBvc3Q8VCxLPihib2R5OiBLLCBlbmRwb2ludD86IHN0cmluZyk6IFByb21pc2U8UmVzdWx0PFQ+PiB7XG4gICAgdGhpcy5kZWZhdWx0X29wdGlvbnMoKTtcbiAgICB0aGlzLmF1dGggPSB0aGlzLmF1dGg7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8UmVzdWx0PFQ+PignLycgKyBlbmRwb2ludCwgYm9keSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRvIHJlcXVlc3QgZm9ybURhdGEgd2l0aCBmaWxlc1xuICAgKiBEb24ndCBmb3JnZXQudG8gY2FsbCBkZWZhdWx0X29wdGlvbnNcbiAgICogQHBhcmFtIGJvZHkgSyAtPiBLIGlzIHRoZSBtb2RlbCBkdG8gdG8gcGFzcyB3aXRoIGJvZHlcbiAgICogQHBhcmFtIGVuZHBvaW50IFN0cmluZyAtPiBzdHJpbmcgdG8gYmUgcGFzcyB3aXRoIGVuZHBvaW50IGFjY2Vzc1xuICAgKi9cbiAgZm9ybURhdGE8VCxLPihib2R5OiBLLCBlbmRwb2ludD86IHN0cmluZyk6IFByb21pc2U8UmVzdWx0PFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5mb3JtRGF0YTxSZXN1bHQ8VD4+KCcvJyArIGVuZHBvaW50LCBib2R5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdG8gcmVxdWVzdCBQT1NULlxuICAgKiBAcGFyYW0gYm9keSBLIC0+IEsgaXMgdGhlIG1vZGVsIGR0byB0byBwYXNzIHdpdGggYm9keVxuICAgKiBAcGFyYW0gZW5kcG9pbnQgU3RyaW5nIC0+IHN0cmluZyB0byBiZSBwYXNzIHdpdGggZW5kcG9pbnQgYWNjZXNzXG4gICAqL1xuICBwdXQ8VCxLPihib2R5OiBLLCBlbmRwb2ludD86IHN0cmluZyk6IFByb21pc2U8UmVzdWx0PFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8UmVzdWx0PFQ+PignLycgKyBlbmRwb2ludCwgYm9keSk7XG4gIH1cblxuICBkZWxldGU8VD4oaWQ6IG51bWJlciwgZW5kcG9pbnQ/OiBzdHJpbmcpOiBQcm9taXNlPFJlc3VsdDxUPj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPFJlc3VsdDxUPj4oJy8nICsgZW5kcG9pbnQgKyAnLycgKyBpZCk7XG4gIH1cblxuICBwdWJsaWMgc2V0X3Rva2VuKGF1dGg6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaHR0cC5zZXRfdG9rZW4oYXV0aCk7XG4gIH1cbiAgcHVibGljIGdldF90b2tlbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0X3Rva2VuKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9wdGlvbnMoKXtcbiAgICByZXR1cm4gdGhpcy5odHRwLm9wdGlvbnM7XG4gIH1cbiAgcHVibGljIHNldCBvcHRpb25zKG9wdGlvbnM6YW55KXtcbiAgICB0aGlzLmh0dHAub3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cbiAgcHVibGljIGRlZmF1bHRfb3B0aW9ucygpe1xuICAgIHRoaXMuaHR0cC5kZWZhdWx0X29wdGlvbnMoKTtcbiAgfVxuXG5cbiAgcHVibGljIHNldCBhdXRoKGF1dGg6IHN0cmluZykge1xuICAgIFN0b3JhZ2VTZXJ2aWNlLnNldCh0aGlzLl9hdXRoLGF1dGgpO1xuICAgIHRoaXMuc2V0X3Rva2VuKGF1dGgpO1xuICB9XG4gIHB1YmxpYyBnZXQgYXV0aCgpIHtcbiAgICByZXR1cm4gU3RvcmFnZVNlcnZpY2UuZ2V0KHRoaXMuX2F1dGgpO1xuICB9XG5cbiAgcHVibGljIGRvd25sb2FkRmlsZShkYXRhOiBhbnkpIHtcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2RhdGFdKTtcbiAgICBjb25zdCB1cmw9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgIHdpbmRvdy5vcGVuKHVybCk7XG4gIH1cbn1cbiJdfQ==