@wursha/ngx-hadeethenc-api
Version:
an Angular api client for hadeethenc.com
65 lines • 10.4 kB
JavaScript
import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common/http";
/**
* an Angular api client for hadeethenc.com
*/
export class NgxHadeethencApiService {
constructor(http) {
this.http = http;
this.baseUrl = 'https://hadeethenc.com/api/v1';
}
/**
* List all available languages for HadeethEnc.com
* @returns json object containing all available languages with their iso codes and native names.
*/
getLanguages() {
const url = `${this.baseUrl}/languages`;
return this.http.get(url);
}
/**
* List all categories by language code.
* @param language language iso code
* @returns array of json objects each object represents a category.
*/
getCategoriesList(language) {
const url = `${this.baseUrl}/categories/list/?language=${language}`;
return this.http.get(url);
}
/**
* List root categories by language code.
* @param language language iso code
* @returns root categories (main categories) in specific language, it accepts language iso code and returns json array of objects each object represents a root category.
*/
getCategoriesRoots(language) {
const url = `${this.baseUrl}/categories/roots/?language=${language}`;
return this.http.get(url);
}
/**
* List Hadeeths by category id and language iso code.
* @param p language iso code, category id, page number (optional, defaults to 1) ,Hadeeths per page(optional, defaults to 20)
* @returns json object containing "data" object which contains array of json objects each object represents a Hadeeth basic information (id, title, translations iso codes), the second object is "meta" containing meta data required for pagination.
*/
getHadeethsList(p) {
const url = `${this.baseUrl}/hadeeths/list/?language=${p.language}&category_id=${p.categoryId}&page=${p.page}&per_page=${p.perPage}`;
return this.http.get(url);
}
/**
* Get single Hadeeth details by Hadeeth id and language iso code.
* @param p language iso code, hadeeth id
* @returns The response differs when the language is "Arabic" or not, if it's Arabic then it returns all Hadeeth data (id, title, Hadeeth text (matn), explanation, hints (fawaed), word meaning and references), if non Arabic it returns translated parts (id, title, Hadeeth text (matn), explanation and hints (if translated), it doesnt return reference nor word meaning as they are not translated.
*/
getHadeethsOne(p) {
const url = `${this.baseUrl}/hadeeths/one/?language=${p.language}&id=${p.id}`;
return this.http.get(url);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgxHadeethencApiService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgxHadeethencApiService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgxHadeethencApiService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], ctorParameters: () => [{ type: i1.HttpClient }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWhhZGVldGhlbmMtYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGFkZWV0aGVuYy1hcGkvc3JjL2xpYi9uZ3gtaGFkZWV0aGVuYy1hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFVM0M7O0dBRUc7QUFJSCxNQUFNLE9BQU8sdUJBQXVCO0lBR2hDLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFGNUIsWUFBTyxHQUFHLCtCQUErQixDQUFDO0lBRVgsQ0FBQztJQUV4Qzs7O09BR0c7SUFDSSxZQUFZO1FBQ2YsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxZQUFZLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBcUIsR0FBRyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxpQkFBaUIsQ0FDcEIsUUFBZ0I7UUFFaEIsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyw4QkFBOEIsUUFBUSxFQUFFLENBQUM7UUFDcEUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBdUIsR0FBRyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxrQkFBa0IsQ0FDckIsUUFBZ0I7UUFFaEIsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTywrQkFBK0IsUUFBUSxFQUFFLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBdUIsR0FBRyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsQ0FjdEI7UUFDRyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLDRCQUE0QixDQUFDLENBQUMsUUFBUSxnQkFBZ0IsQ0FBQyxDQUFDLFVBQVUsU0FBUyxDQUFDLENBQUMsSUFBSSxhQUFhLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNySSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUF1QixHQUFHLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGNBQWMsQ0FBQyxDQVNyQjtRQUNHLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sMkJBQTJCLENBQUMsQ0FBQyxRQUFRLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzlFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXNCLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7OEdBL0VRLHVCQUF1QjtrSEFBdkIsdUJBQXVCLGNBRnBCLE1BQU07OzJGQUVULHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBjYXRlZ29yaWVzUmVzcG9uc2UsXG4gICAgaGFkZWV0aHNMaXN0UmVzcG9uc2UsXG4gICAgaGFkZWV0aHNPbmVSZXNwb25zZSxcbiAgICBsYW5ndWFnZVJlc3BvbnNlLFxufSBmcm9tICcuL25neC1oYWRlZXRoZW5jLWFwaS5tb2RlbCc7XG5cbi8qKlxuICogYW4gQW5ndWxhciBhcGkgY2xpZW50IGZvciBoYWRlZXRoZW5jLmNvbVxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hIYWRlZXRoZW5jQXBpU2VydmljZSB7XG4gICAgcHJpdmF0ZSBiYXNlVXJsID0gJ2h0dHBzOi8vaGFkZWV0aGVuYy5jb20vYXBpL3YxJztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cblxuICAgIC8qKlxuICAgICAqIExpc3QgYWxsIGF2YWlsYWJsZSBsYW5ndWFnZXMgZm9yIEhhZGVldGhFbmMuY29tXG4gICAgICogQHJldHVybnMganNvbiBvYmplY3QgY29udGFpbmluZyBhbGwgYXZhaWxhYmxlIGxhbmd1YWdlcyB3aXRoIHRoZWlyIGlzbyBjb2RlcyBhbmQgbmF0aXZlIG5hbWVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRMYW5ndWFnZXMoKTogT2JzZXJ2YWJsZTxsYW5ndWFnZVJlc3BvbnNlW10+IHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJsfS9sYW5ndWFnZXNgO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxsYW5ndWFnZVJlc3BvbnNlW10+KHVybCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGlzdCBhbGwgY2F0ZWdvcmllcyBieSBsYW5ndWFnZSBjb2RlLlxuICAgICAqIEBwYXJhbSBsYW5ndWFnZSBsYW5ndWFnZSBpc28gY29kZVxuICAgICAqIEByZXR1cm5zIGFycmF5IG9mIGpzb24gb2JqZWN0cyBlYWNoIG9iamVjdCByZXByZXNlbnRzIGEgY2F0ZWdvcnkuXG4gICAgICovXG4gICAgcHVibGljIGdldENhdGVnb3JpZXNMaXN0KFxuICAgICAgICBsYW5ndWFnZTogc3RyaW5nLFxuICAgICk6IE9ic2VydmFibGU8Y2F0ZWdvcmllc1Jlc3BvbnNlW10+IHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJsfS9jYXRlZ29yaWVzL2xpc3QvP2xhbmd1YWdlPSR7bGFuZ3VhZ2V9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8Y2F0ZWdvcmllc1Jlc3BvbnNlW10+KHVybCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGlzdCByb290IGNhdGVnb3JpZXMgYnkgbGFuZ3VhZ2UgY29kZS5cbiAgICAgKiBAcGFyYW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UgaXNvIGNvZGVcbiAgICAgKiBAcmV0dXJucyByb290IGNhdGVnb3JpZXMgKG1haW4gY2F0ZWdvcmllcykgaW4gc3BlY2lmaWMgbGFuZ3VhZ2UsIGl0IGFjY2VwdHMgbGFuZ3VhZ2UgaXNvIGNvZGUgYW5kIHJldHVybnMganNvbiBhcnJheSBvZiBvYmplY3RzIGVhY2ggb2JqZWN0IHJlcHJlc2VudHMgYSByb290IGNhdGVnb3J5LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDYXRlZ29yaWVzUm9vdHMoXG4gICAgICAgIGxhbmd1YWdlOiBzdHJpbmcsXG4gICAgKTogT2JzZXJ2YWJsZTxjYXRlZ29yaWVzUmVzcG9uc2VbXT4ge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcmx9L2NhdGVnb3JpZXMvcm9vdHMvP2xhbmd1YWdlPSR7bGFuZ3VhZ2V9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8Y2F0ZWdvcmllc1Jlc3BvbnNlW10+KHVybCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGlzdCBIYWRlZXRocyBieSBjYXRlZ29yeSBpZCBhbmQgbGFuZ3VhZ2UgaXNvIGNvZGUuXG4gICAgICogQHBhcmFtIHAgbGFuZ3VhZ2UgaXNvIGNvZGUsIGNhdGVnb3J5IGlkLCBwYWdlIG51bWJlciAob3B0aW9uYWwsIGRlZmF1bHRzIHRvIDEpICxIYWRlZXRocyBwZXIgcGFnZShvcHRpb25hbCwgZGVmYXVsdHMgdG8gMjApXG4gICAgICogQHJldHVybnMganNvbiBvYmplY3QgY29udGFpbmluZyBcImRhdGFcIiBvYmplY3Qgd2hpY2ggY29udGFpbnMgYXJyYXkgb2YganNvbiBvYmplY3RzIGVhY2ggb2JqZWN0IHJlcHJlc2VudHMgYSBIYWRlZXRoIGJhc2ljIGluZm9ybWF0aW9uIChpZCwgdGl0bGUsIHRyYW5zbGF0aW9ucyBpc28gY29kZXMpLCB0aGUgc2Vjb25kIG9iamVjdCBpcyBcIm1ldGFcIiBjb250YWluaW5nIG1ldGEgZGF0YSByZXF1aXJlZCBmb3IgcGFnaW5hdGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0SGFkZWV0aHNMaXN0KHA6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGxhbmd1YWdlIGlzbyBjb2RlXG4gICAgICAgICAqL1xuICAgICAgICBsYW5ndWFnZTogc3RyaW5nO1xuICAgICAgICBjYXRlZ29yeUlkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBwYWdlIG51bWJlciwgb3B0aW9uYWwsIGRlZmF1bHRzIHRvIDFcbiAgICAgICAgICovXG4gICAgICAgIHBhZ2U/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBIYWRlZXRocyBwZXIgcGFnZSwgb3B0aW9uYWwsIGRlZmF1bHRzIHRvIDIwXG4gICAgICAgICAqL1xuICAgICAgICBwZXJQYWdlPzogc3RyaW5nO1xuICAgIH0pOiBPYnNlcnZhYmxlPGhhZGVldGhzTGlzdFJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVybH0vaGFkZWV0aHMvbGlzdC8/bGFuZ3VhZ2U9JHtwLmxhbmd1YWdlfSZjYXRlZ29yeV9pZD0ke3AuY2F0ZWdvcnlJZH0mcGFnZT0ke3AucGFnZX0mcGVyX3BhZ2U9JHtwLnBlclBhZ2V9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8aGFkZWV0aHNMaXN0UmVzcG9uc2U+KHVybCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHNpbmdsZSBIYWRlZXRoIGRldGFpbHMgYnkgSGFkZWV0aCBpZCBhbmQgbGFuZ3VhZ2UgaXNvIGNvZGUuXG4gICAgICogQHBhcmFtIHAgbGFuZ3VhZ2UgaXNvIGNvZGUsIGhhZGVldGggaWRcbiAgICAgKiBAcmV0dXJucyBUaGUgcmVzcG9uc2UgZGlmZmVycyB3aGVuIHRoZSBsYW5ndWFnZSBpcyBcIkFyYWJpY1wiIG9yIG5vdCwgaWYgaXQncyBBcmFiaWMgdGhlbiBpdCByZXR1cm5zIGFsbCBIYWRlZXRoIGRhdGEgKGlkLCB0aXRsZSwgSGFkZWV0aCB0ZXh0IChtYXRuKSwgZXhwbGFuYXRpb24sIGhpbnRzIChmYXdhZWQpLCB3b3JkIG1lYW5pbmcgYW5kIHJlZmVyZW5jZXMpLCBpZiBub24gQXJhYmljIGl0IHJldHVybnMgdHJhbnNsYXRlZCBwYXJ0cyAoaWQsIHRpdGxlLCBIYWRlZXRoIHRleHQgKG1hdG4pLCBleHBsYW5hdGlvbiBhbmQgaGludHMgKGlmIHRyYW5zbGF0ZWQpLCBpdCBkb2VzbnQgcmV0dXJuIHJlZmVyZW5jZSBub3Igd29yZCBtZWFuaW5nIGFzIHRoZXkgYXJlIG5vdCB0cmFuc2xhdGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRIYWRlZXRoc09uZShwOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBsYW5ndWFnZSBpc28gY29kZVxuICAgICAgICAgKi9cbiAgICAgICAgbGFuZ3VhZ2U6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGhhZGVldGggaWRcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBzdHJpbmc7XG4gICAgfSk6IE9ic2VydmFibGU8aGFkZWV0aHNPbmVSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcmx9L2hhZGVldGhzL29uZS8/bGFuZ3VhZ2U9JHtwLmxhbmd1YWdlfSZpZD0ke3AuaWR9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8aGFkZWV0aHNPbmVSZXNwb25zZT4odXJsKTtcbiAgICB9XG59XG4iXX0=