ask-cli-x
Version:
Alexa Skills Kit (ASK) Command Line Interfaces
130 lines (129 loc) • 6.28 kB
JavaScript
;
const R = require("ramda");
const CONSTANTS = require("../../../utils/constants");
const ISP_URL_BASE = "inSkillProducts";
const EMPTY_HEADERS = {};
const EMPTY_QUERY_PARAMS = {};
const NULL_PAYLOAD = null;
module.exports = (smapiHandle) => {
function createIsp(vendorId, ispDefinition, callback) {
const url = `${ISP_URL_BASE}/`;
const payload = {
vendorId,
inSkillProductDefinition: ispDefinition,
};
smapiHandle(CONSTANTS.SMAPI.API_NAME.CREATE_ISP, CONSTANTS.HTTP_REQUEST.VERB.POST, CONSTANTS.SMAPI.VERSION.V1, url, EMPTY_QUERY_PARAMS, EMPTY_HEADERS, payload, callback);
}
function getIsp(ispId, stage, callback) {
const url = `${ISP_URL_BASE}/${ispId}/stages/${stage}`;
smapiHandle(CONSTANTS.SMAPI.API_NAME.GET_ISP, CONSTANTS.HTTP_REQUEST.VERB.GET, CONSTANTS.SMAPI.VERSION.V1, url, EMPTY_QUERY_PARAMS, EMPTY_HEADERS, NULL_PAYLOAD, callback);
}
function getIspSummary(ispId, stage, callback) {
const url = `${ISP_URL_BASE}/${ispId}/stages/${stage}/summary`;
smapiHandle(CONSTANTS.SMAPI.API_NAME.GET_ISP, CONSTANTS.HTTP_REQUEST.VERB.GET, CONSTANTS.SMAPI.VERSION.V1, url, EMPTY_QUERY_PARAMS, EMPTY_HEADERS, NULL_PAYLOAD, callback);
}
function updateIsp(ispId, stage, ispDefinition, eTag, callback) {
const url = `${ISP_URL_BASE}/${ispId}/stages/${stage}`;
const headers = eTag ? { "If-Match": eTag } : {};
const payload = {
inSkillProductDefinition: ispDefinition,
};
smapiHandle(CONSTANTS.SMAPI.API_NAME.UPDATE_ISP, CONSTANTS.HTTP_REQUEST.VERB.PUT, CONSTANTS.SMAPI.VERSION.V1, url, EMPTY_QUERY_PARAMS, headers, payload, callback);
}
function associateIsp(ispId, skillId, callback) {
const url = `${ISP_URL_BASE}/${ispId}/skills/${skillId}`;
smapiHandle(CONSTANTS.SMAPI.API_NAME.ASSOCIATE_ISP, CONSTANTS.HTTP_REQUEST.VERB.PUT, CONSTANTS.SMAPI.VERSION.V1, url, EMPTY_QUERY_PARAMS, EMPTY_HEADERS, NULL_PAYLOAD, callback);
}
function disassociateIsp(ispId, skillId, callback) {
const url = `${ISP_URL_BASE}/${ispId}/skills/${skillId}`;
smapiHandle(CONSTANTS.SMAPI.API_NAME.DISASSOCIATE_ISP, CONSTANTS.HTTP_REQUEST.VERB.DELETE, CONSTANTS.SMAPI.VERSION.V1, url, EMPTY_QUERY_PARAMS, EMPTY_HEADERS, NULL_PAYLOAD, callback);
}
/**
* List ISPs based on the vendor-id
* @param {string} vendorId vendor id of the in-skill product
* @param {Array} productIdList the array of in-skill product IDs
* @param {string} stage stage for the in-skill product
* @param {string} referenceName reference name for the in-skill product
* @param {string} status status for the in-skill product
* @param {string} type type for the in-skill product
* @param {Boolean} isAssociatedWithSkill whether or not the in-skill products are associated to a skill
* @param {Object} queryParams | nextToken
* | maxResults
* @param {*} callback
*/
function listIspForVendor(vendorId, productIdList, stage, referenceName, status, type, isAssociatedWithSkill, queryParams, callback) {
let queryObject = R.clone(queryParams);
if (!queryObject) {
queryObject = {};
}
if (productIdList && productIdList.length > 0) {
queryObject.productId = productIdList.filter((id) => id);
}
queryObject.vendorId = vendorId;
if (referenceName) {
queryObject.referenceName = referenceName;
}
if (type) {
queryObject.type = type;
}
if (stage) {
queryObject.stage = stage;
}
if (status) {
queryObject.status = status;
}
if (isAssociatedWithSkill) {
queryObject.isAssociatedWithSkill = isAssociatedWithSkill;
}
const url = `${ISP_URL_BASE}`;
smapiHandle(CONSTANTS.SMAPI.API_NAME.LIST_ISP_FOR_VENDOR, CONSTANTS.HTTP_REQUEST.VERB.GET, CONSTANTS.SMAPI.VERSION.V1, url, queryObject, EMPTY_HEADERS, NULL_PAYLOAD, callback);
}
/**
* List Isp based on the skill
* @param {*} skillId
* @param {*} stage
* @param {*} queryParams | nextToken
* | maxResults
* @param {*} callback
*/
function listIspForSkill(skillId, stage, queryParams, callback) {
const queryObject = R.clone(queryParams);
const url = `skills/${skillId}/stages/${stage}/${ISP_URL_BASE}`;
smapiHandle(CONSTANTS.SMAPI.API_NAME.LIST_SKILLS_FOR_ISP, CONSTANTS.HTTP_REQUEST.VERB.GET, CONSTANTS.SMAPI.VERSION.V1, url, queryObject, EMPTY_HEADERS, NULL_PAYLOAD, callback);
}
/**
* List skills based on the isp
* @param {*} ispId
* @param {*} stage
* @param {*} queryParams | nextToken
* | maxResults
* @param {*} callback
*/
function listSkillsForIsp(ispId, stage, queryParams, callback) {
const queryObject = R.clone(queryParams);
const url = `${ISP_URL_BASE}/${ispId}/stages/${stage}/skills`;
smapiHandle(CONSTANTS.SMAPI.API_NAME.LIST_SKILLS_FOR_ISP, CONSTANTS.HTTP_REQUEST.VERB.GET, CONSTANTS.SMAPI.VERSION.V1, url, queryObject, EMPTY_HEADERS, NULL_PAYLOAD, callback);
}
function deleteIsp(ispId, stage, eTag, callback) {
const url = `${ISP_URL_BASE}/${ispId}/stages/${stage}`;
const headers = eTag ? { "If-Match": eTag } : {};
smapiHandle(CONSTANTS.SMAPI.API_NAME.DELETE_ISP, CONSTANTS.HTTP_REQUEST.VERB.DELETE, CONSTANTS.SMAPI.VERSION.V1, url, EMPTY_QUERY_PARAMS, headers, NULL_PAYLOAD, callback);
}
function resetIspEntitlement(ispId, stage, callback) {
const url = `${ISP_URL_BASE}/${ispId}/stages/${stage}/entitlement`;
smapiHandle(CONSTANTS.SMAPI.API_NAME.RESET_ISP_ENTITLEMENT, CONSTANTS.HTTP_REQUEST.VERB.DELETE, CONSTANTS.SMAPI.VERSION.V1, url, EMPTY_QUERY_PARAMS, EMPTY_HEADERS, NULL_PAYLOAD, callback);
}
return {
createIsp,
getIsp,
getIspSummary,
updateIsp,
associateIsp,
disassociateIsp,
listIspForVendor,
listIspForSkill,
listSkillsForIsp,
deleteIsp,
resetIspEntitlement,
};
};