Home Reference Source

lib/api/menuitem.js

import { get } from '../methods/get';
import { post } from '../methods/post';
import { remove } from '../methods/remove';
import { put } from '../methods/put';

/**
 * GET /admin/menus/{menu_id}/items/{item_id}.json
 *
 * Examples:
 *
 *      insales.getMenuItem({
 *        token: '1234567890',
 *        url: 'shop-test.myinsales.ru',
 *        menuid: '1',
 *        itemid: '1'
 *      }).then(response => {
 *        console.info(response.data);
 *      }).catch(err => {
 *        console.error(err);
 *      });
 * Output:
 *
 *      {
 *        "id": 1,
 *        "position": 1,
 *        "title": "About",
 *        "url": "/about",
 *        "related_object_id": "Page_0"
 *      }
 * @param {Object} options
 * @param {string} options.token Required, access token for shop
 * @param {string} options.url Required, shop url
 * @param {number|string} options.menuid Required, menu id
 * @param {number|string} options.itemid Required, menu item id
 * @param {Number|String} id Required, app id
 * @returns {Promise}
 */
export function getMenuItem(options, id) {
  return get({
    id,
    token: options.token,
    url: options.url,
    api: `menus/${options.menuid}/items/${options.itemid}`
  });
}

/**
 * GET /admin/menus/{menu_id}/items.json
 *
 * Examples:
 *
 *      insales.listMenuItem({
 *        token: '1234567890',
 *        url: 'shop-test.myinsales.ru',
 *        menuid: '1'
 *      }).then(response => {
 *        console.info(response.data);
 *      }).catch(err => {
 *        console.error(err);
 *      });
 * Output:
 *
 *      [
 *        {
 *          "id": 1,
 *          "position": 1,
 *          "title": "About",
 *          "url": "/about",
 *          "related_object_id": "Page_0"
 *        },
 *        {
 *          "id": 2,
 *          "position": 2,
 *          "title": "Доставка",
 *          "url": "/delivery",
 *          "related_object_id": "Page_0"
 *        },
 *        {
 *          "id": 3,
 *          "position": 3,
 *          "title": "Страница",
 *          "url": "/",
 *          "related_object_id": "Page_1"
 *        },
 *        {
 *          "id": 4,
 *          "position": 4,
 *          "title": "Категория",
 *          "url": "/collection/футболка",
 *          "related_object_id": "Collection_1"
 *        }
 *      ]
 * @param {Object} options
 * @param {string} options.token Required, access token for shop
 * @param {string} options.url Required, shop url
 * @param {number|string} options.menuid Required, menu id
 * @param {Number|String} id Required, app id
 * @returns {Promise}
 */
export function listMenuItem(options, id) {
  return get({
    id,
    token: options.token,
    url: options.url,
    api: `menus/${options.menuid}/items`
  });
}

/**
 * POST /admin/menus/{menu_id}/items.json
 *
 * Examples:
 *
 *      insales.createMenuItem({
 *        token: '1234567890',
 *        url: 'shop-test.myinsales.ru',
 *        menuid: '1',
 *        menuitem: {
 *          "menu_item": {
 *            "title": "new item",
 *            "related_object_id": "Page_1"
 *          }
 *        }
 *      }).then(response => {
 *        console.info(response.data);
 *      }).catch(err => {
 *        console.error(err);
 *      });
 * Output:
 *
 *      {
 *        "id": 732,
 *        "position": 5,
 *        "title": "new item",
 *        "url": "/",
 *        "related_object_id": "Page_1"
 *      }
 *
 *      insales.createMenuItem({
 *        token: '1234567890',
 *        url: 'shop-test.myinsales.ru',
 *        menuid: '1',
 *        menuitem: {
 *          "menu_item": {
 *            "title": "new item",
 *            "related_object_id": "Collection_1"
 *          }
 *        }
 *      }).then(response => {
 *        console.info(response.data);
 *      }).catch(err => {
 *        console.error(err);
 *      });
 * Output:
 *
 *      {
 *        "id": 740,
 *        "position": 5,
 *        "title": "new item",
 *        "url": "/collection/футболка",
 *        "related_object_id": "Collection_1"
 *      }
 *
 *      insales.createMenuItem({
 *        token: '1234567890',
 *        url: 'shop-test.myinsales.ru',
 *        menuid: '1',
 *        menuitem: {
 *          "menu_item": {
 *            "title": "new item",
 *            "related_object_id": "Blog_1"
 *          }
 *        }
 *      }).then(response => {
 *        console.info(response.data);
 *      }).catch(err => {
 *        console.error(err);
 *      });
 * Output:
 *
 *      {
 *        "id": 748,
 *        "position": 5,
 *        "title": "new item",
 *        "url": "/blog",
 *        "related_object_id": "Blog_1"
 *      }
 *
 *      insales.createMenuItem({
 *        token: '1234567890',
 *        url: 'shop-test.myinsales.ru',
 *        menuid: '1',
 *        menuitem: {
 *          "menu_item": {
 *            "title": "new item",
 *            "url": "http://my-another-shop.com/"
 *          }
 *        }
 *      }).then(response => {
 *        console.info(response.data);
 *      }).catch(err => {
 *        console.error(err);
 *      });
 * Output:
 *
 *      {
 *        "id": 756,
 *        "position": 5,
 *        "title": "new item",
 *        "url": "http://my-another-shop.com/",
 *        "related_object_id": "Page_0"
 *      }
 * @param {Object} options
 * @param {string} options.token Required, access token for shop
 * @param {string} options.url Required, shop url
 * @param {number|string} options.menuid Required, menu id
 * @param {object} options.menuitem Required, menu item
 * @param {Number|String} id Required, app id
 * @returns {Promise}
 */
export function createMenuItem(options, id) {
  return post({
    id,
    token: options.token,
    url: options.url,
    api: `menus/${options.menuid}/items`,
    obj: options.menuitem
  });
}

/**
 * DELETE /admin/menus/{menu_id}/items/{item_id}.json
 *
 * Examples:
 *
 *      insales.removeMenuItem({
 *        token: '1234567890',
 *        url: 'shop-test.myinsales.ru',
 *        menuid: '1',
 *        itemid: '1'
 *      }).then(output => {
 *        console.info(output.statusCode);
 *      }).catch(err => {
 *        console.error(err);
 *      });
 * Output:
 *
 *      200
 * @param {Object} options
 * @param {string} options.token Required, access token for shop
 * @param {string} options.url Required, shop url
 * @param {number|string} options.menuid Required, menu id
 * @param {number|string} options.itemid Required, menu item id
 * @param {Number|String} id Required, app id
 * @returns {Promise}
 */
export function removeMenuItem(options, id) {
  return remove({
    id,
    token: options.token,
    url: options.url,
    api: `menus/${options.menuid}/items/${options.itemid}`
  });
}

/**
 * PUT /admin/menus/{menu_id}/items/{item_id}.json
 *
 * Examples:
 *
 *      insales.editMenuItem({
 *        token: '1234567890',
 *        url: 'shop-test.myinsales.ru',
 *        menuid: '1',
 *        itemid: '1',
 *        menuitem: {
 *          "menu_item": {
 *            "title": "last menu item",
 *            "position": 1000
 *          }
 *        }
 *      }).then(response => {
 *        console.info(response.data);
 *      }).catch(err => {
 *        console.error(err);
 *      });
 * Output:
 *
 *      {
 *        "id": 1,
 *        "position": 1000,
 *        "title": "last menu item",
 *        "url": "/about",
 *        "related_object_id": "Page_0"
 *      }
 * @param {Object} options
 * @param {string} options.token Required, access token for shop
 * @param {string} options.url Required, shop url
 * @param {number|string} options.menuid Required, menu id
 * @param {number|string} options.itemid Required, menu item id
 * @param {object} options.menuitem Required, menu item
 * @param {Number|String} id Required, app id
 * @returns {Promise}
 */
export function editMenuItem(options, id) {
  return put({
    id,
    token: options.token,
    url: options.url,
    api: `menus/${options.menuid}/items/${options.itemid}`,
    obj: options.menuitem
  });
}