islamic-content-sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +137 -0
- package/dist/index.d.mts +277 -0
- package/dist/index.d.ts +277 -0
- package/dist/index.js +741 -0
- package/dist/index.mjs +714 -0
- package/package.json +31 -0
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,714 @@
|
|
|
1
|
+
// src/services/base.ts
|
|
2
|
+
var BaseService = class {
|
|
3
|
+
async request(url, method = "GET", body, customHeaders) {
|
|
4
|
+
const options = {
|
|
5
|
+
method,
|
|
6
|
+
headers: {
|
|
7
|
+
"Content-Type": "application/json",
|
|
8
|
+
...customHeaders
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
if (body) {
|
|
12
|
+
if (typeof body === "string" || body instanceof URLSearchParams) {
|
|
13
|
+
options.body = body;
|
|
14
|
+
} else {
|
|
15
|
+
options.body = JSON.stringify(body);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
const response = await fetch(url, options);
|
|
20
|
+
if (!response.ok) {
|
|
21
|
+
throw new Error(`API request failed with status ${response.status}: ${response.statusText}`);
|
|
22
|
+
}
|
|
23
|
+
const text = await response.text();
|
|
24
|
+
if (!text) {
|
|
25
|
+
return {};
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
return JSON.parse(text);
|
|
29
|
+
} catch {
|
|
30
|
+
return text;
|
|
31
|
+
}
|
|
32
|
+
} catch (error) {
|
|
33
|
+
if (error instanceof Error) {
|
|
34
|
+
throw new Error(`[IslamicContentSdk] ${error.message}`);
|
|
35
|
+
}
|
|
36
|
+
throw new Error("[IslamicContentSdk] An unknown error occurred during the API request.");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
// src/services/quranenc.ts
|
|
42
|
+
var QuranencService = class extends BaseService {
|
|
43
|
+
baseurl;
|
|
44
|
+
audioBaseUrl;
|
|
45
|
+
constructor() {
|
|
46
|
+
super();
|
|
47
|
+
this.baseurl = "https://quranenc.com/api/v1";
|
|
48
|
+
this.audioBaseUrl = "https://d.quranenc.com/data/audio";
|
|
49
|
+
}
|
|
50
|
+
// 1 & 2 & 3: الترجمات (جميعها، حسب اللغة، أو مع التوطين)
|
|
51
|
+
async translationList(params = {}) {
|
|
52
|
+
let url = `${this.baseurl}/translations/list`;
|
|
53
|
+
if (params.language) {
|
|
54
|
+
url += `/${params.language}`;
|
|
55
|
+
}
|
|
56
|
+
if (params.localization) {
|
|
57
|
+
url += `?localization=${params.localization}`;
|
|
58
|
+
}
|
|
59
|
+
return this.request(url);
|
|
60
|
+
}
|
|
61
|
+
// 4: ترجمة سورة كاملة
|
|
62
|
+
async translationSura(translationKey, suraNumber) {
|
|
63
|
+
const url = `${this.baseurl}/translation/sura/${translationKey}/${suraNumber}`;
|
|
64
|
+
return this.request(url);
|
|
65
|
+
}
|
|
66
|
+
// 5: ترجمة آية معينة
|
|
67
|
+
async translationAya(translationKey, suraNumber, ayaNumber) {
|
|
68
|
+
const url = `${this.baseurl}/translation/aya/${translationKey}/${suraNumber}/${ayaNumber}`;
|
|
69
|
+
return this.request(url);
|
|
70
|
+
}
|
|
71
|
+
// 6: الترجمة الصوتية للآية (ملف MP3)
|
|
72
|
+
async ayaAudio(translationKey, suraNumber, ayaNumber) {
|
|
73
|
+
const sura3Digits = String(suraNumber).padStart(3, "0");
|
|
74
|
+
const aya3Digits = String(ayaNumber).padStart(3, "0");
|
|
75
|
+
const url = `${this.audioBaseUrl}/${translationKey}/${sura3Digits}${aya3Digits}.mp3`;
|
|
76
|
+
return {
|
|
77
|
+
status: 200,
|
|
78
|
+
file_url: url,
|
|
79
|
+
content_type: "audio/mpeg"
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
// 7: إضافة ملاحظة على الترجمة (POST request)
|
|
83
|
+
async addNote(payload) {
|
|
84
|
+
const url = `${this.baseurl}/translations/note`;
|
|
85
|
+
return this.request(url, "POST", payload);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
// src/services/hadeethenc.ts
|
|
90
|
+
var HadeethencService = class extends BaseService {
|
|
91
|
+
baseurl;
|
|
92
|
+
constructor() {
|
|
93
|
+
super();
|
|
94
|
+
this.baseurl = "https://hadeethenc.com/api/v1";
|
|
95
|
+
}
|
|
96
|
+
// 1: جلب اللغات المتاحة
|
|
97
|
+
async languages() {
|
|
98
|
+
return this.request(`${this.baseurl}/languages`);
|
|
99
|
+
}
|
|
100
|
+
// 2: جلب قائمة التصنيفات حسب رمز اللغة
|
|
101
|
+
async categories(languageCode) {
|
|
102
|
+
const params = new URLSearchParams({ language: languageCode });
|
|
103
|
+
return this.request(`${this.baseurl}/categories/list/?${params.toString()}`);
|
|
104
|
+
}
|
|
105
|
+
// 3: جلب التصنيفات الرئيسية حسب رمز اللغة
|
|
106
|
+
async rootCategories(languageCode) {
|
|
107
|
+
const params = new URLSearchParams({ language: languageCode });
|
|
108
|
+
return this.request(`${this.baseurl}/categories/roots/?${params.toString()}`);
|
|
109
|
+
}
|
|
110
|
+
// 4: جلب قائمة الأحاديث بالتصنيف والتصفح
|
|
111
|
+
async hadithsList(params) {
|
|
112
|
+
const queryParams = new URLSearchParams({ language: params.language });
|
|
113
|
+
if (params.categoryId !== void 0) {
|
|
114
|
+
queryParams.append("category_id", String(params.categoryId));
|
|
115
|
+
}
|
|
116
|
+
if (params.page !== void 0) {
|
|
117
|
+
queryParams.append("page", String(params.page));
|
|
118
|
+
}
|
|
119
|
+
if (params.perPage !== void 0) {
|
|
120
|
+
queryParams.append("per_page", String(params.perPage));
|
|
121
|
+
}
|
|
122
|
+
return this.request(`${this.baseurl}/hadeeths/list/?${queryParams.toString()}`);
|
|
123
|
+
}
|
|
124
|
+
// 5: جلب تفاصيل حديث واحد بالمعرف واللغة
|
|
125
|
+
async hadithDetails(params) {
|
|
126
|
+
const queryParams = new URLSearchParams({
|
|
127
|
+
id: String(params.id),
|
|
128
|
+
language: params.language
|
|
129
|
+
});
|
|
130
|
+
return this.request(`${this.baseurl}/hadeeths/one/?${queryParams.toString()}`);
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
// src/services/islamhouse.ts
|
|
135
|
+
var IslamhouseCategoriesAndTypesService = class extends BaseService {
|
|
136
|
+
constructor(baseurl) {
|
|
137
|
+
super();
|
|
138
|
+
this.baseurl = baseurl;
|
|
139
|
+
}
|
|
140
|
+
baseurl;
|
|
141
|
+
// All Types (أنواع المواد)
|
|
142
|
+
async allTypes(siteLang, contentLang) {
|
|
143
|
+
const url = `${this.baseurl}/main/sitecontent/${siteLang}/${contentLang}/json`;
|
|
144
|
+
return this.request(url);
|
|
145
|
+
}
|
|
146
|
+
// All categories (جميع التصنيفات)
|
|
147
|
+
async allCategories(language) {
|
|
148
|
+
const url = `${this.baseurl}/categories/showall/${language}/json`;
|
|
149
|
+
return this.request(url);
|
|
150
|
+
}
|
|
151
|
+
// All categories tree (شجرة التصنيفات الكاملة)
|
|
152
|
+
async categoriesTree(language) {
|
|
153
|
+
const url = `${this.baseurl}/main/get-object-category-tree/${language}/json`;
|
|
154
|
+
return this.request(url);
|
|
155
|
+
}
|
|
156
|
+
// Child categories (التصنيفات الفرعية)
|
|
157
|
+
async childCategories(id, siteLang, contentLang) {
|
|
158
|
+
const url = `${this.baseurl}/categories/viewcat/${id}/${siteLang}/${contentLang}/json`;
|
|
159
|
+
return this.request(url);
|
|
160
|
+
}
|
|
161
|
+
// Single category (basic) (معلومات تصنيف واحد)
|
|
162
|
+
async singleCategoryBasic(id, language) {
|
|
163
|
+
const url = `${this.baseurl}/categories/viewitem/${id}/${language}/json`;
|
|
164
|
+
return this.request(url);
|
|
165
|
+
}
|
|
166
|
+
// Single category (With subs) (التصنيفات الفرعية مع الأبناء)
|
|
167
|
+
async subCategories(id, language) {
|
|
168
|
+
const url = `${this.baseurl}/main/get-sub-categories/${id}/${language}/json`;
|
|
169
|
+
return this.request(url);
|
|
170
|
+
}
|
|
171
|
+
// Available types (By category ID) (الأنواع المتاحة لتصنيف معين)
|
|
172
|
+
async categoryTypes(id, siteLang, contentLang) {
|
|
173
|
+
const url = `${this.baseurl}/main/get-category-types-available/${id}/${siteLang}/${contentLang}/json`;
|
|
174
|
+
return this.request(url);
|
|
175
|
+
}
|
|
176
|
+
// Source languages (By category ID) (اللغات المتاحة لتصنيف معين)
|
|
177
|
+
async categoryLanguages(id, slang, language) {
|
|
178
|
+
const url = `${this.baseurl}/main/get-category-source-languages/${id}/${slang}/${language}/json`;
|
|
179
|
+
return this.request(url);
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
var IslamhouseItemsService = class extends BaseService {
|
|
183
|
+
constructor(baseurl) {
|
|
184
|
+
super();
|
|
185
|
+
this.baseurl = baseurl;
|
|
186
|
+
}
|
|
187
|
+
baseurl;
|
|
188
|
+
// List Items by type and language (قائمة المواد حسب النوع واللغة)
|
|
189
|
+
async listItems(type, siteLang, slang, page = 1, limit = 25) {
|
|
190
|
+
const url = `${this.baseurl}/main/${type}/${siteLang}/${slang}/${page}/${limit}/json`;
|
|
191
|
+
return this.request(url);
|
|
192
|
+
}
|
|
193
|
+
// List Items by author id (قائمة المواد لمؤلف معين)
|
|
194
|
+
async authorItems(authorId, slang, siteLang, contentLang, page = 1, limit = 20) {
|
|
195
|
+
const url = `${this.baseurl}/main/get-author-items/${authorId}/${slang}/${siteLang}/${contentLang}/${page}/${limit}/json`;
|
|
196
|
+
return this.request(url);
|
|
197
|
+
}
|
|
198
|
+
// List Items by category id (قائمة المواد لتصنيف معين)
|
|
199
|
+
async categoryItems(categoryId, slang, siteLang, contentLang, page = 1, limit = 20) {
|
|
200
|
+
const url = `${this.baseurl}/main/get-category-items/${categoryId}/${slang}/${siteLang}/${contentLang}/${page}/${limit}/json`;
|
|
201
|
+
return this.request(url);
|
|
202
|
+
}
|
|
203
|
+
// List items by date (recent additions) (قائمة أحدث المواد)
|
|
204
|
+
async latestItems(period, slang, siteLang, contentLang, page = 1, limit = 25) {
|
|
205
|
+
const url = `${this.baseurl}/main/get-latest/${period}/${slang}/${siteLang}/${contentLang}/${page}/${limit}/json`;
|
|
206
|
+
return this.request(url);
|
|
207
|
+
}
|
|
208
|
+
// Highlighted Items (المواد المميزة)
|
|
209
|
+
async highlightedItems(siteLang, contentLang) {
|
|
210
|
+
const url = `${this.baseurl}/main/get-highlights/${siteLang}/${contentLang}/json`;
|
|
211
|
+
return this.request(url);
|
|
212
|
+
}
|
|
213
|
+
// Items count (عدد المواد المتوفرة)
|
|
214
|
+
async itemsCount(type, siteLang, contentLang) {
|
|
215
|
+
const url = `${this.baseurl}/main/get-language-items-count/${type}/${siteLang}/${contentLang}/json`;
|
|
216
|
+
return this.request(url);
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
var IslamhouseItemService = class extends BaseService {
|
|
220
|
+
constructor(baseurl) {
|
|
221
|
+
super();
|
|
222
|
+
this.baseurl = baseurl;
|
|
223
|
+
}
|
|
224
|
+
baseurl;
|
|
225
|
+
// Item details (تفاصيل المادة)
|
|
226
|
+
async details(id, language) {
|
|
227
|
+
const url = `${this.baseurl}/main/get-item/${id}/${language}/json`;
|
|
228
|
+
return this.request(url);
|
|
229
|
+
}
|
|
230
|
+
// Item attachments (مرفقات المادة)
|
|
231
|
+
async attachments(id) {
|
|
232
|
+
const url = `${this.baseurl}/main/check-attachment/${id}/json`;
|
|
233
|
+
return this.request(url);
|
|
234
|
+
}
|
|
235
|
+
// Item category(ies) tree (شجرة تصنيفات مادة معينة)
|
|
236
|
+
async tree(id, language) {
|
|
237
|
+
const url = `${this.baseurl}/main/get-item-tree/${id}/${language}/json`;
|
|
238
|
+
return this.request(url);
|
|
239
|
+
}
|
|
240
|
+
// Item card translations (ترجمة بطاقة مادة)
|
|
241
|
+
async cardTranslations(id, language) {
|
|
242
|
+
const url = `${this.baseurl}/main/get-item-card-translations/${id}/${language}/json`;
|
|
243
|
+
return this.request(url);
|
|
244
|
+
}
|
|
245
|
+
// Item translations (ترجمات المادة الواحدة)
|
|
246
|
+
async translations(id, language) {
|
|
247
|
+
const url = `${this.baseurl}/main/get-item-translations/${id}/${language}/json`;
|
|
248
|
+
return this.request(url);
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
var IslamhouseAuthorsService = class extends BaseService {
|
|
252
|
+
constructor(baseurl) {
|
|
253
|
+
super();
|
|
254
|
+
this.baseurl = baseurl;
|
|
255
|
+
}
|
|
256
|
+
baseurl;
|
|
257
|
+
// List authors/sources (قائمة المؤلفين والمصادر)
|
|
258
|
+
async list(params = {}) {
|
|
259
|
+
const kind = params.kind || "showall";
|
|
260
|
+
const locale = params.locale || "showall";
|
|
261
|
+
const sort = params.sort || "countdesc";
|
|
262
|
+
const page = params.page !== void 0 ? params.page : 1;
|
|
263
|
+
const perPage = params.perPage !== void 0 ? params.perPage : 20;
|
|
264
|
+
const url = `${this.baseurl}/main/get-authors-data/${kind}/${locale}/${sort}/${page}/${perPage}/json`;
|
|
265
|
+
return this.request(url);
|
|
266
|
+
}
|
|
267
|
+
// Author/Source details (تفاصيل مؤلف محدد)
|
|
268
|
+
async details(id, language) {
|
|
269
|
+
const url = `${this.baseurl}/main/get-author/${id}/${language}/json`;
|
|
270
|
+
return this.request(url);
|
|
271
|
+
}
|
|
272
|
+
// Single author card (By language code) (ترجمة بيانات المؤلف)
|
|
273
|
+
async cardTranslations(id, language) {
|
|
274
|
+
const url = `${this.baseurl}/main/get-author-card-translations/${id}/${language}/json`;
|
|
275
|
+
return this.request(url);
|
|
276
|
+
}
|
|
277
|
+
// Available types (الأنواع المتاحة لمؤلف)
|
|
278
|
+
async availableTypes(id, siteLang, contentLang) {
|
|
279
|
+
const url = `${this.baseurl}/main/get-author-types-avaliable/${id}/${siteLang}/${contentLang}/json`;
|
|
280
|
+
return this.request(url);
|
|
281
|
+
}
|
|
282
|
+
// Available locales (اللغات المتاحة لمؤلف)
|
|
283
|
+
async availableLocales(id, slang, language) {
|
|
284
|
+
const url = `${this.baseurl}/main/get-author-available-languages/${id}/${slang}/${language}/json`;
|
|
285
|
+
return this.request(url);
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
var IslamhouseLanguagesService = class extends BaseService {
|
|
289
|
+
constructor(baseurl) {
|
|
290
|
+
super();
|
|
291
|
+
this.baseurl = baseurl;
|
|
292
|
+
}
|
|
293
|
+
baseurl;
|
|
294
|
+
// Keys (locales) (بيانات وتفاصيل اللغات المتوفرة)
|
|
295
|
+
async keys() {
|
|
296
|
+
return this.request(`${this.baseurl}/languages/get-language-details/json`);
|
|
297
|
+
}
|
|
298
|
+
// Terms and sentences (المصطلحات والترجمات)
|
|
299
|
+
async terms(language) {
|
|
300
|
+
const url = `${this.baseurl}/languages/get-language-terms/${language}/json`;
|
|
301
|
+
return this.request(url);
|
|
302
|
+
}
|
|
303
|
+
// Available languages (of certain another language) (اللغات المتاحة للغة معينة)
|
|
304
|
+
async availableLanguages(slang, language) {
|
|
305
|
+
const url = `${this.baseurl}/main/get-available-languages/${slang}/${language}/json`;
|
|
306
|
+
return this.request(url);
|
|
307
|
+
}
|
|
308
|
+
};
|
|
309
|
+
var IslamhouseQuranService = class extends BaseService {
|
|
310
|
+
constructor(baseurl) {
|
|
311
|
+
super();
|
|
312
|
+
this.baseurl = baseurl;
|
|
313
|
+
}
|
|
314
|
+
baseurl;
|
|
315
|
+
// Quran categories (تصنيفات المصحف الشريف)
|
|
316
|
+
async categories(language) {
|
|
317
|
+
const url = `${this.baseurl}/quran/get-categories/${language}/json`;
|
|
318
|
+
return this.request(url);
|
|
319
|
+
}
|
|
320
|
+
// Single category (تصنيف محدد)
|
|
321
|
+
async singleCategory(id, language) {
|
|
322
|
+
const url = `${this.baseurl}/quran/get-category/${id}/${language}/json`;
|
|
323
|
+
return this.request(url);
|
|
324
|
+
}
|
|
325
|
+
// Author details (تفاصيل القارئ)
|
|
326
|
+
async authorDetails(id, language) {
|
|
327
|
+
const url = `${this.baseurl}/quran/get-author/${id}/${language}/json`;
|
|
328
|
+
return this.request(url);
|
|
329
|
+
}
|
|
330
|
+
// Author recitations (تلاوات القارئ)
|
|
331
|
+
async authorRecitations(id, language) {
|
|
332
|
+
const url = `${this.baseurl}/quran/get-author-recitations/${id}/${language}/json`;
|
|
333
|
+
return this.request(url);
|
|
334
|
+
}
|
|
335
|
+
// Sura details (تفاصيل سورة معينة)
|
|
336
|
+
async suraDetails(suraId, language) {
|
|
337
|
+
const url = `${this.baseurl}/quran/get-sura/${suraId}/${language}/json`;
|
|
338
|
+
return this.request(url);
|
|
339
|
+
}
|
|
340
|
+
// Sura Recitations (تسجيلات سورة محددة)
|
|
341
|
+
async suraRecitations(suraId, language) {
|
|
342
|
+
const url = `${this.baseurl}/quran/get-sura-recitations/${suraId}/${language}/json`;
|
|
343
|
+
return this.request(url);
|
|
344
|
+
}
|
|
345
|
+
// Recitation details (تفاصيل تلاوة قرآنية محددة)
|
|
346
|
+
async recitationDetails(id, language) {
|
|
347
|
+
const url = `${this.baseurl}/quran/get-recitation/${id}/${language}/json`;
|
|
348
|
+
return this.request(url);
|
|
349
|
+
}
|
|
350
|
+
};
|
|
351
|
+
var IslamhouseService = class {
|
|
352
|
+
categoriesAndTypes;
|
|
353
|
+
items;
|
|
354
|
+
item;
|
|
355
|
+
authors;
|
|
356
|
+
languages;
|
|
357
|
+
quran;
|
|
358
|
+
baseurl = "https://api3.islamhouse.com/v3/paV29H2gm56kvLPy";
|
|
359
|
+
constructor() {
|
|
360
|
+
this.categoriesAndTypes = new IslamhouseCategoriesAndTypesService(this.baseurl);
|
|
361
|
+
this.items = new IslamhouseItemsService(this.baseurl);
|
|
362
|
+
this.item = new IslamhouseItemService(this.baseurl);
|
|
363
|
+
this.authors = new IslamhouseAuthorsService(this.baseurl);
|
|
364
|
+
this.languages = new IslamhouseLanguagesService(this.baseurl);
|
|
365
|
+
this.quran = new IslamhouseQuranService(this.baseurl);
|
|
366
|
+
}
|
|
367
|
+
};
|
|
368
|
+
|
|
369
|
+
// src/services/risalat-al-haramain.ts
|
|
370
|
+
var RisalaContentsService = class extends BaseService {
|
|
371
|
+
constructor(baseurl, apiPath) {
|
|
372
|
+
super();
|
|
373
|
+
this.baseurl = baseurl;
|
|
374
|
+
this.apiPath = apiPath;
|
|
375
|
+
}
|
|
376
|
+
baseurl;
|
|
377
|
+
apiPath;
|
|
378
|
+
// Get Full Contents
|
|
379
|
+
async getFullContents(params = {}) {
|
|
380
|
+
const language = params.language || "en";
|
|
381
|
+
const lang = params.lang || "en";
|
|
382
|
+
const url = `${this.baseurl}/${language}/${this.apiPath}/get_full_contents?lang=${lang}`;
|
|
383
|
+
return this.request(url);
|
|
384
|
+
}
|
|
385
|
+
// Get Contents
|
|
386
|
+
async getContents(params = {}) {
|
|
387
|
+
const language = params.language || "en";
|
|
388
|
+
const lang = params.lang || "en";
|
|
389
|
+
const url = `${this.baseurl}/${language}/${this.apiPath}/content?lang=${lang}`;
|
|
390
|
+
return this.request(url);
|
|
391
|
+
}
|
|
392
|
+
// Single Content
|
|
393
|
+
async singleContent(id, language = "en") {
|
|
394
|
+
const url = `${this.baseurl}/${language}/${this.apiPath}/single-content?id=${id}`;
|
|
395
|
+
return this.request(url);
|
|
396
|
+
}
|
|
397
|
+
// Name search
|
|
398
|
+
async nameSearch(name, language = "ar") {
|
|
399
|
+
const url = `${this.baseurl}/${language}/${this.apiPath}/name_search?name=${encodeURIComponent(name)}`;
|
|
400
|
+
return this.request(url);
|
|
401
|
+
}
|
|
402
|
+
// Available languages
|
|
403
|
+
async availableLanguages(id, language = "ar") {
|
|
404
|
+
const url = `${this.baseurl}/${language}/${this.apiPath}/available_languages/${id}`;
|
|
405
|
+
return this.request(url);
|
|
406
|
+
}
|
|
407
|
+
// Content translation
|
|
408
|
+
async contentTranslation(id, targetLanguage, language = "en") {
|
|
409
|
+
const url = `${this.baseurl}/${language}/${this.apiPath}/content_translation/${id}?language=${targetLanguage}`;
|
|
410
|
+
return this.request(url);
|
|
411
|
+
}
|
|
412
|
+
};
|
|
413
|
+
var RisalaIslamicContentService = class extends BaseService {
|
|
414
|
+
constructor(baseurl, apiPath) {
|
|
415
|
+
super();
|
|
416
|
+
this.baseurl = baseurl;
|
|
417
|
+
this.apiPath = apiPath;
|
|
418
|
+
}
|
|
419
|
+
baseurl;
|
|
420
|
+
apiPath;
|
|
421
|
+
// Fatwas
|
|
422
|
+
async fatwas(params = {}) {
|
|
423
|
+
const language = params.language || "en";
|
|
424
|
+
const lang = params.lang || "ar";
|
|
425
|
+
const isFeatured = params.isFeatured !== void 0 ? params.isFeatured : 1;
|
|
426
|
+
const url = `${this.baseurl}/${language}/${this.apiPath}/fatwas?lang=${lang}&is_featured=${isFeatured}`;
|
|
427
|
+
return this.request(url);
|
|
428
|
+
}
|
|
429
|
+
// Hadeeths
|
|
430
|
+
async hadeeths(params = {}) {
|
|
431
|
+
const language = params.language || "en";
|
|
432
|
+
const lang = params.lang || "ar";
|
|
433
|
+
const isFeatured = params.isFeatured !== void 0 ? params.isFeatured : 1;
|
|
434
|
+
const url = `${this.baseurl}/${language}/${this.apiPath}/hadeeths?lang=${lang}&is_featured=${isFeatured}`;
|
|
435
|
+
return this.request(url);
|
|
436
|
+
}
|
|
437
|
+
// Quran
|
|
438
|
+
async quran(params = {}) {
|
|
439
|
+
const language = params.language || "en";
|
|
440
|
+
const lang = params.lang || "ar";
|
|
441
|
+
const isFeatured = params.isFeatured !== void 0 ? params.isFeatured : 1;
|
|
442
|
+
const url = `${this.baseurl}/${language}/${this.apiPath}/quran?lang=${lang}&is_featured=${isFeatured}`;
|
|
443
|
+
return this.request(url);
|
|
444
|
+
}
|
|
445
|
+
};
|
|
446
|
+
var RisalaSearchService = class extends BaseService {
|
|
447
|
+
constructor(baseurl, apiPath) {
|
|
448
|
+
super();
|
|
449
|
+
this.baseurl = baseurl;
|
|
450
|
+
this.apiPath = apiPath;
|
|
451
|
+
}
|
|
452
|
+
baseurl;
|
|
453
|
+
apiPath;
|
|
454
|
+
// Search Contents
|
|
455
|
+
async contents(query, language = "en") {
|
|
456
|
+
const url = `${this.baseurl}/${language}/${this.apiPath}/search?query=${encodeURIComponent(query)}`;
|
|
457
|
+
return this.request(url);
|
|
458
|
+
}
|
|
459
|
+
};
|
|
460
|
+
var RisalaLookupsService = class extends BaseService {
|
|
461
|
+
constructor(baseurl, apiPath) {
|
|
462
|
+
super();
|
|
463
|
+
this.baseurl = baseurl;
|
|
464
|
+
this.apiPath = apiPath;
|
|
465
|
+
}
|
|
466
|
+
baseurl;
|
|
467
|
+
apiPath;
|
|
468
|
+
// Languages
|
|
469
|
+
async languages(language = "en", apiKey = "A7X9G2L5M8P4T1C3D6V0KJQZRYBWFNSHEUO9682XLMTGVDPKJHQC7R5ZYA1B3W4F") {
|
|
470
|
+
const url = `${this.baseurl}/${language}/${this.apiPath}/langs?api_key=${apiKey}`;
|
|
471
|
+
return this.request(url);
|
|
472
|
+
}
|
|
473
|
+
// Content Types
|
|
474
|
+
async contentTypes(language = "en") {
|
|
475
|
+
const url = `${this.baseurl}/${language}/${this.apiPath}/content-types`;
|
|
476
|
+
return this.request(url);
|
|
477
|
+
}
|
|
478
|
+
};
|
|
479
|
+
var RisalatAlHaramainService = class {
|
|
480
|
+
contents;
|
|
481
|
+
islamicContent;
|
|
482
|
+
search;
|
|
483
|
+
lookups;
|
|
484
|
+
baseurl = "https://risala.prh.gov.sa";
|
|
485
|
+
apiPath = "Api";
|
|
486
|
+
constructor() {
|
|
487
|
+
this.contents = new RisalaContentsService(this.baseurl, this.apiPath);
|
|
488
|
+
this.islamicContent = new RisalaIslamicContentService(this.baseurl, this.apiPath);
|
|
489
|
+
this.search = new RisalaSearchService(this.baseurl, this.apiPath);
|
|
490
|
+
this.lookups = new RisalaLookupsService(this.baseurl, this.apiPath);
|
|
491
|
+
}
|
|
492
|
+
};
|
|
493
|
+
|
|
494
|
+
// src/services/bayan-al-islam.ts
|
|
495
|
+
var BayanAlIslamService = class extends BaseService {
|
|
496
|
+
baseurl;
|
|
497
|
+
constructor() {
|
|
498
|
+
super();
|
|
499
|
+
this.baseurl = "https://byenah.com";
|
|
500
|
+
}
|
|
501
|
+
// Languages List
|
|
502
|
+
async languagesList(language = "ar") {
|
|
503
|
+
const url = `${this.baseurl}/${language}/Api/languages/list`;
|
|
504
|
+
return this.request(url);
|
|
505
|
+
}
|
|
506
|
+
// Muslim List
|
|
507
|
+
async muslimList(language = "en") {
|
|
508
|
+
const url = `${this.baseurl}/${language}/Api/content/muslims/full_list`;
|
|
509
|
+
return this.request(url);
|
|
510
|
+
}
|
|
511
|
+
// Non Muslim List
|
|
512
|
+
async nonMuslimList(language = "en") {
|
|
513
|
+
const url = `${this.baseurl}/${language}/Api/content/non-muslims/full_list`;
|
|
514
|
+
return this.request(url);
|
|
515
|
+
}
|
|
516
|
+
// Single Content
|
|
517
|
+
async singleContent(id, language = "en") {
|
|
518
|
+
const url = `${this.baseurl}/${language}/Api/single-content?id=${id}`;
|
|
519
|
+
return this.request(url);
|
|
520
|
+
}
|
|
521
|
+
// Languages paginated
|
|
522
|
+
async paginatedLanguages(params = {}) {
|
|
523
|
+
const language = params.language || "en";
|
|
524
|
+
const queryParams = new URLSearchParams();
|
|
525
|
+
if (params.name) queryParams.append("name", params.name);
|
|
526
|
+
if (params.page !== void 0) queryParams.append("page", String(params.page));
|
|
527
|
+
const url = `${this.baseurl}/${language}/Api/paginated-languages?${queryParams.toString()}`;
|
|
528
|
+
return this.request(url);
|
|
529
|
+
}
|
|
530
|
+
// Recent contents (Muslims / Non Muslims share the same endpoint in the collection)
|
|
531
|
+
async recentContents(params) {
|
|
532
|
+
const language = params.language || "en";
|
|
533
|
+
const queryParams = new URLSearchParams({
|
|
534
|
+
lang: params.lang,
|
|
535
|
+
init: String(params.init)
|
|
536
|
+
});
|
|
537
|
+
if (params.ids && params.ids.length > 0) {
|
|
538
|
+
queryParams.append("ids", JSON.stringify(params.ids));
|
|
539
|
+
}
|
|
540
|
+
const url = `${this.baseurl}/${language}/Api/recent-contents?${queryParams.toString()}`;
|
|
541
|
+
return this.request(url);
|
|
542
|
+
}
|
|
543
|
+
// Lookups
|
|
544
|
+
async lookups(language = "en") {
|
|
545
|
+
const url = `${this.baseurl}/${language}/Api/lookups`;
|
|
546
|
+
return this.request(url);
|
|
547
|
+
}
|
|
548
|
+
// Name search
|
|
549
|
+
async nameSearch(name, language = "ar") {
|
|
550
|
+
const url = `${this.baseurl}/${language}/Api/name_search?name=${encodeURIComponent(name)}`;
|
|
551
|
+
return this.request(url);
|
|
552
|
+
}
|
|
553
|
+
// Available languages
|
|
554
|
+
async availableLanguages(id, language = "ar") {
|
|
555
|
+
const url = `${this.baseurl}/${language}/Api/available_languages/${id}`;
|
|
556
|
+
return this.request(url);
|
|
557
|
+
}
|
|
558
|
+
// Content translation
|
|
559
|
+
async contentTranslation(id, targetLanguage, language = "en") {
|
|
560
|
+
const url = `${this.baseurl}/${language}/Api/content_translation/${id}?language=${targetLanguage}`;
|
|
561
|
+
return this.request(url);
|
|
562
|
+
}
|
|
563
|
+
// Attachments Translation
|
|
564
|
+
async attachmentsTranslation(id, targetLanguage, language = "en") {
|
|
565
|
+
const url = `${this.baseurl}/${language}/Api/attachments_translation/${id}?language=${targetLanguage}`;
|
|
566
|
+
return this.request(url);
|
|
567
|
+
}
|
|
568
|
+
};
|
|
569
|
+
|
|
570
|
+
// src/services/al-montaka.ts
|
|
571
|
+
var AlMontakaContentsService = class extends BaseService {
|
|
572
|
+
constructor(baseurl) {
|
|
573
|
+
super();
|
|
574
|
+
this.baseurl = baseurl;
|
|
575
|
+
}
|
|
576
|
+
baseurl;
|
|
577
|
+
// GET /comments (All Comments for a specific content)
|
|
578
|
+
async comments(contentId) {
|
|
579
|
+
const url = `${this.baseurl}/comments?content_id=${contentId}`;
|
|
580
|
+
return this.request(url);
|
|
581
|
+
}
|
|
582
|
+
// POST /comment (Comment)
|
|
583
|
+
async addComment(contentId, comment) {
|
|
584
|
+
const url = `${this.baseurl}/comment`;
|
|
585
|
+
const body = new URLSearchParams({
|
|
586
|
+
content_id: String(contentId),
|
|
587
|
+
comment
|
|
588
|
+
});
|
|
589
|
+
return this.request(
|
|
590
|
+
url,
|
|
591
|
+
"POST",
|
|
592
|
+
body,
|
|
593
|
+
{ "Content-Type": "application/x-www-form-urlencoded" }
|
|
594
|
+
);
|
|
595
|
+
}
|
|
596
|
+
// GET /content (Contents)
|
|
597
|
+
async content(categories) {
|
|
598
|
+
const queryParams = new URLSearchParams();
|
|
599
|
+
categories.forEach((cat, index) => {
|
|
600
|
+
queryParams.append(`category[${index}]`, String(cat));
|
|
601
|
+
});
|
|
602
|
+
const url = `${this.baseurl}/content?${queryParams.toString()}`;
|
|
603
|
+
return this.request(url);
|
|
604
|
+
}
|
|
605
|
+
};
|
|
606
|
+
var AlMontakaLookupsService = class extends BaseService {
|
|
607
|
+
constructor(baseurl) {
|
|
608
|
+
super();
|
|
609
|
+
this.baseurl = baseurl;
|
|
610
|
+
}
|
|
611
|
+
baseurl;
|
|
612
|
+
// GET /age-groups
|
|
613
|
+
async ageGroups() {
|
|
614
|
+
return this.request(`${this.baseurl}/age-groups`);
|
|
615
|
+
}
|
|
616
|
+
// GET /categories
|
|
617
|
+
async categories(params) {
|
|
618
|
+
const queryParams = new URLSearchParams({
|
|
619
|
+
language_id: String(params.languageId),
|
|
620
|
+
name_cont: params.nameCont
|
|
621
|
+
});
|
|
622
|
+
return this.request(`${this.baseurl}/categories?${queryParams.toString()}`);
|
|
623
|
+
}
|
|
624
|
+
// GET /entities
|
|
625
|
+
async entities(params) {
|
|
626
|
+
const queryParams = new URLSearchParams({
|
|
627
|
+
language_id: String(params.languageId),
|
|
628
|
+
name_cont: params.nameCont
|
|
629
|
+
});
|
|
630
|
+
return this.request(`${this.baseurl}/entities?${queryParams.toString()}`);
|
|
631
|
+
}
|
|
632
|
+
// GET /expert-levels
|
|
633
|
+
async expertLevels(params) {
|
|
634
|
+
const queryParams = new URLSearchParams({
|
|
635
|
+
language_id: String(params.languageId),
|
|
636
|
+
name_cont: params.nameCont
|
|
637
|
+
});
|
|
638
|
+
return this.request(`${this.baseurl}/expert-levels?${queryParams.toString()}`);
|
|
639
|
+
}
|
|
640
|
+
// GET /ideologies
|
|
641
|
+
async ideologies(params) {
|
|
642
|
+
const queryParams = new URLSearchParams({
|
|
643
|
+
language_id: String(params.languageId),
|
|
644
|
+
name_cont: params.nameCont,
|
|
645
|
+
parent_id: String(params.parentId)
|
|
646
|
+
});
|
|
647
|
+
return this.request(`${this.baseurl}/ideologies?${queryParams.toString()}`);
|
|
648
|
+
}
|
|
649
|
+
// GET /languages
|
|
650
|
+
async languages() {
|
|
651
|
+
return this.request(`${this.baseurl}/languages`);
|
|
652
|
+
}
|
|
653
|
+
// GET /persons
|
|
654
|
+
async persons(params = {}) {
|
|
655
|
+
const queryParams = new URLSearchParams();
|
|
656
|
+
if (params.nameCont) queryParams.append("name_cont", params.nameCont);
|
|
657
|
+
if (params.page !== void 0) queryParams.append("page", String(params.page));
|
|
658
|
+
return this.request(`${this.baseurl}/persons?${queryParams.toString()}`);
|
|
659
|
+
}
|
|
660
|
+
// GET /sections
|
|
661
|
+
async sections(params) {
|
|
662
|
+
const queryParams = new URLSearchParams({
|
|
663
|
+
language_id: String(params.languageId),
|
|
664
|
+
name_cont: params.nameCont
|
|
665
|
+
});
|
|
666
|
+
return this.request(`${this.baseurl}/sections?${queryParams.toString()}`);
|
|
667
|
+
}
|
|
668
|
+
// GET /tags
|
|
669
|
+
async tags(params) {
|
|
670
|
+
const queryParams = new URLSearchParams({
|
|
671
|
+
language_id: String(params.languageId),
|
|
672
|
+
name_cont: params.nameCont
|
|
673
|
+
});
|
|
674
|
+
return this.request(`${this.baseurl}/tags?${queryParams.toString()}`);
|
|
675
|
+
}
|
|
676
|
+
// GET /targeted-groups
|
|
677
|
+
async targetedGroups() {
|
|
678
|
+
return this.request(`${this.baseurl}/targeted-groups`);
|
|
679
|
+
}
|
|
680
|
+
// GET /youtube-channels
|
|
681
|
+
async youtubeChannels() {
|
|
682
|
+
return this.request(`${this.baseurl}/youtube-channels`);
|
|
683
|
+
}
|
|
684
|
+
};
|
|
685
|
+
var AlMontakaService = class {
|
|
686
|
+
contents;
|
|
687
|
+
lookups;
|
|
688
|
+
baseurl = "https://content.mofeed.org/Api";
|
|
689
|
+
constructor() {
|
|
690
|
+
this.contents = new AlMontakaContentsService(this.baseurl);
|
|
691
|
+
this.lookups = new AlMontakaLookupsService(this.baseurl);
|
|
692
|
+
}
|
|
693
|
+
};
|
|
694
|
+
|
|
695
|
+
// src/client.ts
|
|
696
|
+
var IslamicContentSdk = class {
|
|
697
|
+
quranenc;
|
|
698
|
+
hadeethenc;
|
|
699
|
+
islamhouse;
|
|
700
|
+
risalatAlHaramain;
|
|
701
|
+
bayanAlIslam;
|
|
702
|
+
alMontaka;
|
|
703
|
+
constructor() {
|
|
704
|
+
this.quranenc = new QuranencService();
|
|
705
|
+
this.hadeethenc = new HadeethencService();
|
|
706
|
+
this.islamhouse = new IslamhouseService();
|
|
707
|
+
this.risalatAlHaramain = new RisalatAlHaramainService();
|
|
708
|
+
this.bayanAlIslam = new BayanAlIslamService();
|
|
709
|
+
this.alMontaka = new AlMontakaService();
|
|
710
|
+
}
|
|
711
|
+
};
|
|
712
|
+
export {
|
|
713
|
+
IslamicContentSdk
|
|
714
|
+
};
|