UNPKG

aps-data-api

Version:

package for data extraction from APS company for omnimetic project

185 lines (128 loc) 4.11 kB
# aps-data-api `npm` package for APS company for data extraction - This package contains two methods of data extraction 1. `getServiceAccounts` - It gives the response in the form of list of `service-accounts` related to given `user-account` 2. `getMonthlyUtilityData` - It gives the response in the form of list of `monthly-utility-data` for given `service-account` # Installation `npm i aps-data-api --save` ## How to use? ``` import { APSUtilityDataService } from 'aps-data-api'; const apsUtilityDataService = new APSUtilityDataService(); const payload: GetDataPayload = { password: string; username: string; }; const res = await apsUtilityDataService.getServiceAccounts(payload) ``` After data extraction, we will get response as - ``` res: UtilityUserAccountResponse = { id: string name: string serviceAccounts[]: [{id:string, address:Address}] }; ``` ``` const res = await apsUtilityDataService.getMonthlyUtilityData(payload) ``` After data extraction, we will get response as - ``` res: MonthlyUtilityData[] = { id: string amountInCents: number energyConsumptionInWatts: number month: string serviceAccountId: string year: number }; ``` ## Methods ``` getServiceAccounts: ( payload: GetDataPayload, ) => Promise<UtilityUserAccountResponse>; getMonthlyUtilityData: ( payload: GetDataPayload, ) => Promise<MonthlyUtilityData[]>; setProxy:(proxy: string[]) => Promise<void> ``` ## Options ``` GetDataPayload = { password: string; username: string; }; WHERE, password: password of the user-account username: username of the user-account proxy:string[] WHERE, proxy: VGS proxy we set ``` ## Responses ``` UtilityUserAccountResponse = { id: string name: string serviceAccounts[]: [{id:string, address:Address}] }; WHERE, id: user-account id name: Name of the user serviceAccounts[]: List of service-accounts which are linked to given user-account id ``` ``` MonthlyUtilityData[] = { id: string amountInCents: number energyConsumptionInWatts: number month: string serviceAccountId: string year: number }; WHERE, id: id of monthly utility data model amountInCents: Cost of electricity used in respective month and year in cents energyConsumptionInWatts: Amount of electricity consumed in respective month and year in watts month: Month of year for which utility data is extracted serviceAccountId: service-account id for which utility data is extracted year: Year of calender for which utility data is extracted ``` ## Scripts - `npm run build` - For building the app. - `npm run test` - Run automated test cases via `mocha` and `chai`. - `npm run start` - For starting the app. - `npm run serve` - For building and starting the app with auto-reload on changes. - `npm run lint` - To perform linting ## Overview - Typescript support - Environment specific configuation support. The application use [config](https://www.npmjs.com/package/config) npm module. - Linting support ``` npm run lint ``` ## Error Handling - If we pass incorrect credentials for getting utility-data, then... ``` import { APSUtilityDataService } from 'aps-data-api'; const apsUtilityDataService = new APSUtilityDataService(); const payload: GetDataPayload = { password: incorrect-username; username: incorrect-password; }; const res = await apsUtilityDataService.getServiceAccounts(payload) ``` - The Promise gets rejected with `AuthenticationError` with message - `access_denied` - If we pass correct credentials for getting utility-data, but data extraction failed and service cannot extract data, then... ``` import { APSUtilityDataService } from 'aps-data-api'; const apsUtilityDataService = new APSUtilityDataService(); const payload: GetDataPayload = { password: correct-username; username: correct-password; }; const res = await apsUtilityDataService.getMonthlyUtilityData(payload) ``` - The Promise gets rejected with `DataExtractionError` with message - `Failed to extract data`