Your IP : 216.73.216.220


Current Path : /proc/thread-self/root/home/deltalab/PMS/ims-connector/rest/queries/
Upload File :
Current File : //proc/thread-self/root/home/deltalab/PMS/ims-connector/rest/queries/category.js

const axios = require('axios');
const { dotenv } = require('dotenv').config();

const auth = require('./auth');

const restUrl = process.env.MAGENTO_REST_HOST;

/**
 * Return a list of products given a partner ID
 * @param {string} partnerId
 * @returns products
 */

async function readAllCategories(storeName = 'all') {
  const method = 'get';
  const url = `${restUrl}/${storeName}/V1/categories`;
  const token = await auth.getOAuthToken(method, url);
  // const token = await auth.getBearerToken(storeName);
  const config = {
    method,
    url,
    headers: {
      Authorization: `OAuth ${token}`,
    },
  };

  const result = await axios(config);
  return result.data;
}

async function readCategoryById(storeName = 'all', id) {
  const method = 'get';
  const url = `${restUrl}/${storeName}/V1/categories/${id}`;
  const token = await auth.getOAuthToken(method, url);
  // const token = await auth.getBearerToken(storeName);
  const config = {
    method,
    url,
    headers: {
      Authorization: `OAuth ${token}`,
    },
  };

  const result = await axios(config);
  return result.data;
}

async function readCategoryByName(storeName = 'all', name) {
  const method = 'get';
  const url = `${restUrl}/${storeName}/V1/categories/list`;
  const criteria = {
    'searchCriteria[filterGroups][0][filters][0][conditionType]': 'eq',
    'searchCriteria[filterGroups][0][filters][0][field]': 'name',
    'searchCriteria[filterGroups][0][filters][0][value]': name,
  };
  const strCriteria = [];
  for (const key in criteria) {
    if (Object.prototype.hasOwnProperty.call(criteria, key)) {
      strCriteria.push(`${key}=${criteria[key]}`);
    }
  }
  const token = await auth.getOAuthToken(method, url, criteria);
  // const token = await auth.getBearerToken(storeName);
  const config = {
    method,
    url: `${url}?${strCriteria.join('&')}`,
    headers: {
      Authorization: `OAuth ${token}`,
    },
  };

  const result = await axios(config);
  return result.data;
}

module.exports = {
  readAllCategories,
  readCategoryById,
  readCategoryByName,
};