Kinvey/js-sdk

View on GitHub
packages/js-sdk/src/http/utils.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { format } from 'url';
import urlJoin from 'url-join';
import { isPlainObject } from 'lodash-es';
import { getBaasProtocol, getBaasHost, getAuthProtocol, getAuthHost, getAppKey } from '../kinvey'

function clean(value: { [key: string]: any }) {
  return Object.keys(value)
    .reduce((cleanVal: { [key: string]: any }, key) => {
      let objVal = value[key];

      if (isPlainObject(objVal)) {
        objVal = clean(objVal);
      }

      if (typeof objVal !== 'undefined' && objVal !== null) {
        cleanVal[key] = objVal;
      }

      return cleanVal;
    }, {});
}

export enum KinveyBaasNamespace {
  AppData = 'appdata',
  Blob = 'blob',
  Push = 'push',
  Rpc = 'rpc',
  User = 'user'
}

export function formatKinveyBaasUrl(namespace: KinveyBaasNamespace, path?: string, query?: { [key: string]: any }) {
  return format({
    protocol: getBaasProtocol(),
    host: getBaasHost(),
    pathname: path ? urlJoin(namespace, getAppKey(), path) : urlJoin(namespace, getAppKey()),
    query: query ? clean(query) : undefined
  });
}

export function formatKinveyAuthUrl(path?: string, query?: { [key: string]: any }) {
  return format({
    protocol: getAuthProtocol(),
    host: getAuthHost(),
    pathname: path,
    query: query ? clean(query) : undefined
  });
}