All files / src/api/account index.js

100% Statements 11/11
100% Branches 2/2
100% Functions 2/2
100% Lines 11/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50    1x 1x 1x 1x 1x 1x                                         3x     2x   3x 1x               2x              
// @flow
 
import logger from '../../logger';
import callGQConsole, { type GQConsoleConf } from '../../service/gq-console';
import keys, { type AccountKeysAPI } from './keys';
import password, { type AccountPasswordAPI } from './password';
import { profile, gqConsoleProfile, type AccountProfileAPI } from './profile';
import projects, { type AccountProjectsAPI } from './projects';
 
export type Caller = (
  method: string,
  command: string,
  data?: any,
) => Promise<any>;
 
type AccountConf = GQConsoleConf;
 
/**
 * The account API - An interface with qstack’s account system.
 */
export interface Account {
  keys: AccountKeysAPI;
  password: AccountPasswordAPI;
  profile: AccountProfileAPI;
  projects: AccountProjectsAPI;
}
 
export default function account(conf: AccountConf): Account {
  logger.silly(`Account conf=${JSON.stringify(conf)}`);
 
  function call(method, command, data) {
    return callGQConsole(conf, method, command, data);
  }
  if (conf.legacy) {
    return {
      keys: keys(conf),
      password: password(call),
      profile: gqConsoleProfile(call),
      projects: projects(call),
    };
  }
 
  return {
    keys: keys(conf),
    password: password(call),
    profile: profile(call),
    projects: projects(call),
  };
}