UNPKG

@stackend/api

Version:

JS bindings to api.stackend.com

225 lines 8.13 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.search = exports.getCategories = exports.solveQuestion = exports.submitAnswer = exports.askQuestion = exports.getQuestion = exports.listPostedQuestions = exports.listAnsweredQuestions = exports.listSolvedQuestions = exports.listTrendingQuestions = exports.getQnaQuestionUrl = exports.getQnaAskUrl = exports.getQnaUrl = exports.getQnaSearchSortOrders = exports.QnaTypeConverter = exports.COMPONENT_NAME = exports.QnaSearchType = exports.QUESTION_FORUM_PERMALINK = exports.CONTEXT = void 0; // @flow var api_1 = require("../api"); var searchApi = __importStar(require("../search")); var search_1 = require("../search"); /** * Xcap QNA API constants and methods. * * @since 2 mar 2017 */ /** * Community context used for QNA */ exports.CONTEXT = 'question'; /** * Permalink of the question forum */ exports.QUESTION_FORUM_PERMALINK = 'question'; var QnaSearchType; (function (QnaSearchType) { QnaSearchType["All"] = "All"; QnaSearchType["Trending"] = "Trending"; QnaSearchType["Solved"] = "Solved"; QnaSearchType["Answered"] = "Answered"; QnaSearchType["Recent"] = "Recent"; QnaSearchType["Posted"] = "Posted"; QnaSearchType["Search"] = "search"; // FIXME: Hack })(QnaSearchType = exports.QnaSearchType || (exports.QnaSearchType = {})); exports.COMPONENT_NAME = 'forum'; function getJson(args) { return function (dispatch) { return dispatch((0, api_1.getJson)(__assign(__assign({}, args), { componentName: exports.COMPONENT_NAME, context: exports.CONTEXT }))); }; } function post(args) { return function (dispatch) { return dispatch((0, api_1.post)(__assign(__assign({}, args), { componentName: exports.COMPONENT_NAME, context: exports.CONTEXT }))); }; } function QnaTypeConverter(type) { return type ? type.toLowerCase() : 'search'; } exports.QnaTypeConverter = QnaTypeConverter; function getQnaSearchSortOrders() { return ['search', 'trending', 'solved', 'answered', 'recent']; } exports.getQnaSearchSortOrders = getQnaSearchSortOrders; /** * returns the url to view the Qnas. */ function getQnaUrl(_a) { var request = _a.request, _b = _a.section, section = _b === void 0 ? '' : _b, _c = _a.article, article = _c === void 0 ? '' : _c; if (!!section && !article) { return searchApi.getSearchUrl({ request: request, type: search_1.SearchAbleType.QUESTION, searchType: QnaSearchType.Search, filter: section }); } return (0, api_1.createCommunityUrl)({ request: request, path: '/support' + (article ? '/question/' + article : '') }); } exports.getQnaUrl = getQnaUrl; /** * returns the url to Ask a question in the Qnas. */ function getQnaAskUrl(_a) { var request = _a.request; // FIXME: Why absolute? return (0, api_1.createCommunityUrl)({ request: request, path: '/support/ask-a-question', absolute: true }); } exports.getQnaAskUrl = getQnaAskUrl; /** * returns the url to view the Qnas. */ function getQnaQuestionUrl(_a) { var request = _a.request, permalink = _a.permalink, absolute = _a.absolute; // FIXME: Why absolute by default? return (0, api_1.createCommunityUrl)({ request: request, absolute: absolute ? absolute : true, path: '/support/question/' + permalink }); } exports.getQnaQuestionUrl = getQnaQuestionUrl; /** * List trending questions * * @param p Page number (optional) * @param pageSize Page size (optional) * @returns {Promise} */ function listTrendingQuestions(_a) { var p = _a.p, pageSize = _a.pageSize; return getJson({ url: '/question/trending', parameters: arguments }); } exports.listTrendingQuestions = listTrendingQuestions; /** * List solved questions * * @param p Page number (optional) * @param pageSize Page size (optional) * @returns {Promise} */ function listSolvedQuestions(_a) { var p = _a.p, pageSize = _a.pageSize; return getJson({ url: '/question/solved', parameters: arguments }); } exports.listSolvedQuestions = listSolvedQuestions; /** * List answered questions * * @param p Page number (optional) * @param pageSize Page size (optional) */ function listAnsweredQuestions(_a) { var p = _a.p, pageSize = _a.pageSize; return getJson({ url: '/question/answered', parameters: arguments }); } exports.listAnsweredQuestions = listAnsweredQuestions; /** * List posted questions * * @param p Page number (optional) * @param pageSize Page size (optional) */ function listPostedQuestions(_a) { var p = _a.p, pageSize = _a.pageSize; return getJson({ url: '/question/posted', parameters: arguments }); } exports.listPostedQuestions = listPostedQuestions; /** * Get a question */ function getQuestion(_a) { var id = _a.id, forumThreadPermalink = _a.forumThreadPermalink; return getJson({ url: '/question/view', parameters: arguments }); } exports.getQuestion = getQuestion; /** * Ask a question */ function askQuestion(_a) { var subject = _a.subject, text = _a.text, _b = _a.categoryId, categoryId = _b === void 0 ? [] : _b, recaptchaSolved = _a.recaptchaSolved, recpatchaAnswer = _a.recpatchaAnswer, gamePermalink = _a.gamePermalink, entryId = _a.entryId, forumThreadPermalink = _a.forumThreadPermalink, _c = _a.forumPermalink, forumPermalink = _c === void 0 ? 'question' : _c; return post({ url: '/question/ask-save', parameters: arguments }); } exports.askQuestion = askQuestion; /** * Submit an answer */ function submitAnswer(_a) { var subject = _a.subject, text = _a.text, _b = _a.categoryId, categoryId = _b === void 0 ? [] : _b, gamePermalink = _a.gamePermalink, entryId = _a.entryId, _c = _a.forumThreadPermalink, forumThreadPermalink = _c === void 0 ? null : _c, _d = _a.forumPermalink, forumPermalink = _d === void 0 ? 'question' : _d; return post({ url: '/question/answer-save', parameters: arguments }); } exports.submitAnswer = submitAnswer; /** * Solve question * * @param answerId {int} Id. */ function solveQuestion(_a) { var answerId = _a.answerId; return post({ url: '/question/solve', parameters: arguments }); } exports.solveQuestion = solveQuestion; /** * Get question categories * @returns {Thunk.<*>} */ function getCategories(_a) { return getJson({ url: '/question/list-categories' }); } exports.getCategories = getCategories; /** * Search */ function search(_a) { var searchType = _a.searchType, q = _a.q, issue = _a.issue, p = _a.p, pageSize = _a.pageSize, game = _a.game; return getJson({ url: '/question/' + searchType, parameters: arguments }); } exports.search = search; //# sourceMappingURL=index.js.map