ih-black-lion
Version:
State handler for Arus projects
48 lines (43 loc) • 1.82 kB
JavaScript
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);
});
}
}