diff --git a/package.json b/package.json index f4930c7..0de9131 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@expressms/smartapp-sdk", - "version": "1.13.0-alpha.9", + "version": "1.13.0-alpha.10", "description": "Smartapp SDK", "main": "build/main/index.js", "typings": "build/main/index.d.ts", diff --git a/src/index.ts b/src/index.ts index b0ddc44..f042ef5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,6 +7,7 @@ export * from './lib/notification' export * from './lib/routing' export * from './lib/proxy' export * from './lib/devices' - import Bridge from '@expressms/smartapp-bridge' -export { Bridge } +import * as ExpressDisk from './lib/express-disk' + +export { Bridge, ExpressDisk } diff --git a/src/lib/express-disk/index.ts b/src/lib/express-disk/index.ts new file mode 100644 index 0000000..3a68f20 --- /dev/null +++ b/src/lib/express-disk/index.ts @@ -0,0 +1,19 @@ +import bridge from '@expressms/smartapp-bridge' +import { ERROR_CODES, METHODS } from '../../types' +import { GetAuthCodeResponse } from '../../types/express-disk' + +/** + * Get auth code for eXpress Disk + * @returns Promise that'll be fullfilled with `payload.auth` on success, otherwise rejected with reason + */ +export const getAuthCode = (): Promise => { + if (!bridge) return Promise.reject(ERROR_CODES.NO_BRIDGE) + + return bridge + .sendClientEvent({ + method: METHODS.GET_EXPRESS_DISK_AUTH_CODE, + params: {}, + hide_recv_event_data: true, + }) + .then(event => event as GetAuthCodeResponse) +} diff --git a/src/types/bridge.ts b/src/types/bridge.ts index e3c4e2c..818b691 100644 --- a/src/types/bridge.ts +++ b/src/types/bridge.ts @@ -55,6 +55,7 @@ export enum METHODS { WRITE_NFC_TAG = 'write_nfc_tag', ALLOW_IOS_SWIPE_NAVIGATION = 'allow_ios_swipe_navigation', HIDE_RECV_DATA = 'hide_recv_data', + GET_EXPRESS_DISK_AUTH_CODE = 'get_express_disk_auth_code', } export enum STATUS { diff --git a/src/types/express-disk.ts b/src/types/express-disk.ts new file mode 100644 index 0000000..b8026a0 --- /dev/null +++ b/src/types/express-disk.ts @@ -0,0 +1,16 @@ +import { EmitterEventPayload } from '@expressms/smartapp-bridge/build/main/types/eventEmitter' +import { STATUS } from './bridge' + +export interface GetAuthCodeResponse extends Omit { + payload: { + status: STATUS + errorCode?: string | null + auth: { + diskHost: string + code: string + codeChallenge: null | string + codeChallengeMethod: string + expiresIn: number + } + } +}