UNPKG

ih-black-lion

Version:

State handler for Arus projects

48 lines (43 loc) 1.82 kB
import { parseString } from 'xml2js'; import Connector from './Connector'; import { Fault } from '../models'; import Request from '../Request'; import serialize from '../serialize'; import { toCamelCase, interceptFault } from './utils'; const URLS = { tryURL: __STUDENT_ACCOUNT_URL__, catchURL: process.env.STUDENT_ACCOUNT_URL, }; export default class StudentAccountConnector extends Connector { constructor(requestMethod, requestParams, Model, term, extraParam = undefined) { super(requestMethod, requestParams, Model, URLS, extraParam); this.term = term; this.modifySend(); } modifySend() { if (!this.params.send) { this.params.send = `<SSF_GET_STUDENT_ACCT_REQ><STUDENT_ACCOUNT_REQUEST><EMPLID/><STRM>${this.term}</STRM><ACCOUNT_VIEWS><ACCOUNT_VIEW_REQUEST><SSF_ACCOUNT_VIEW>01</SSF_ACCOUNT_VIEW></ACCOUNT_VIEW_REQUEST><ACCOUNT_VIEW_REQUEST><SSF_ACCOUNT_VIEW>02</SSF_ACCOUNT_VIEW></ACCOUNT_VIEW_REQUEST><ACCOUNT_VIEW_REQUEST><SSF_ACCOUNT_VIEW>03</SSF_ACCOUNT_VIEW></ACCOUNT_VIEW_REQUEST><ACCOUNT_VIEW_REQUEST><SSF_ACCOUNT_VIEW>04</SSF_ACCOUNT_VIEW></ACCOUNT_VIEW_REQUEST></ACCOUNT_VIEWS></STUDENT_ACCOUNT_REQUEST></SSF_GET_STUDENT_ACCT_REQ>`; } } get Promise() { this.checkTypes(); // Checking the types here to simplify the usage of the Connectors. return new Promise((resolve, reject) => { Request.post(this.params) .then(({ data }) => { let res; parseString(data, (err, parsedRes) => { if (!err) { res = parsedRes; } else { reject(err); } }); if (interceptFault(res)) { reject(new Fault(serialize(res))); } else { resolve(new this.Model(serialize(res))); } }).catch(reject); }); } }