@stackend/api
Version:
JS bindings to api.stackend.com
225 lines • 8.13 kB
JavaScript
;
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