@apihawk/help-center-sdk
Version:
The ApiHawk Help Center SDK
81 lines (80 loc) • 3.93 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const help_center_sdk_base_1 = require("./lib/help-center-sdk-base");
const parseTags_1 = require("./services/common/parseTags");
const help_center_sdk_articles_1 = require("./services/help-center-sdk-articles");
const help_center_sdk_categories_1 = require("./services/help-center-sdk-categories");
const help_center_sdk_seo_1 = require("./services/help-center-sdk-seo");
const help_center_sdk_tags_1 = require("./services/help-center-sdk-tags");
class HelpCenterSDK extends help_center_sdk_base_1.HelpCenterSDKBase {
constructor(init) {
super(init);
// Load all services
this.helpCenterSDKArticles = new help_center_sdk_articles_1.HelpCenterSDKArticles(this.connection);
this.helpCenterSDKCategories = new help_center_sdk_categories_1.HelpCenterSDKCategories(this.connection);
this.helpCenterSDKTags = new help_center_sdk_tags_1.HelpCenterSDKTags(this.connection);
this.helpCenterSDKSEO = new help_center_sdk_seo_1.HelpCenterSDKSEO(this.connection);
}
get Articles() {
return this.helpCenterSDKArticles;
}
get Categories() {
return this.helpCenterSDKCategories;
}
get Tags() {
return this.helpCenterSDKTags;
}
get SEO() {
return this.helpCenterSDKSEO;
}
/**
* Get articles by category populated
* @param categoryId ID of the category
* @param {number} page
* @param {number} pageSize
* @returns {Promise<IRestPaginatedResource<IRestPaginatedResource>>}
*/
getArticlesByCategoryPopulated(categoryId, page = 1, pageSize = 25) {
return __awaiter(this, void 0, void 0, function* () {
const content2categories = yield this.helpCenterSDKCategories.getArticleIdsFromCategory(categoryId, page, pageSize);
const articleIds = content2categories.items.map((item) => +item.content_id);
if (!articleIds || !articleIds.length) {
return this.helpCenterSDKArticles.getEmptyList();
}
const articles = yield this.helpCenterSDKArticles.getArticles(page, pageSize, {
id: articleIds,
columns: [
'id',
'title',
'description',
'tags',
'seo_url',
'primary_category',
'created_at',
'updated_at'
]
});
// Parse article tags
articles.items = articles.items.map((a) => Object.assign({}, a, { tags: parseTags_1.default(a.tags) }));
// Get articles breadcrumbs
const breadcrumbs = yield Promise.all(articles.items.map((a) => {
return this.helpCenterSDKCategories.getBreadcrumbs(+a.primary_category);
})).then((result) => result);
// Add breadcrumbs (SEO url) to each article
articles.items.forEach((a, i) => {
a.breadcrumb = breadcrumbs[i].breadcrumb.slice(1).map((item) => item.seo_url).join('/') + '/' + a.seo_url;
});
return articles;
});
}
}
exports.HelpCenterSDK = HelpCenterSDK;