All files / client/methods appshare.js

100% Statements 13/13
100% Branches 1/1
100% Functions 3/3
100% Lines 13/13
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            15x   19x           5x 4x 4x 4x   4x 3x 3x 3x 2x   2x                 2x    
/* @flow */
 
import invariant from "invariant";
import type { MethodApi } from "../types";
import { isEmail } from "../../utils";
 
const permissionsMap = { view: 0, edit: 7 };
 
export default ({ client, type }: MethodApi) => (
  folderid: number,
  userid: number,
  clientid: string,
  access: "view" | "edit" = "view"
): Promise<boolean> => {
  invariant(type === "pcloud", "This method supports only clients of type `pcloud`.");
  invariant(typeof folderid === "number", "`folderid` must be number.");
  invariant(folderid !== 0, "`folderid` cannot be 0.");
  invariant(["view", "edit"].indexOf(access) != -1, "`permissions` can be either `view` or `edit`.");
 
  invariant(userid, "`userid` is required.");
  invariant(typeof userid === "number", "`userid` is required.");
  invariant(parseInt(userid), "`userid` must be either number or a valid mail address.");
  invariant(clientid, "`clientid` is required");
  invariant(typeof clientid === "string", "`clientid` is required");
 
  return client
    .api("sharefolder", {
      params: {
        folderid: folderid,
        permissions: permissionsMap[access],
        userid: userid,
        client_id: clientid
      }
    })
    .then(() => true);
};