ih-black-lion
Version:
State handler for Arus projects
44 lines (40 loc) • 1.26 kB
JavaScript
import xml2js 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: __ACADEMIC_PROFILE_URL__,
catchURL: process.env.ACADEMIC_PROFILE_URL,
};
export default class AcademicProfileConnector extends Connector {
constructor(requestMethod, requestParams, Model) {
super(requestMethod, requestParams, Model, URLS);
}
get Promise() {
this.checkTypes(); // Checking the types here to simplify the usage of the Connectors.
return new Promise((resolve, reject) => {
Request.get(this.params)
.then(({ data }) => {
let res;
const parser = new xml2js.Parser({
ignoreAttrs: true,
});
parser.parseString(data, (err, parsedRes) => {
if (!err) {
res = parsedRes;
} else {
reject(err);
}
});
const fault = interceptFault(res);
if (fault) {
reject(new Fault(serialize(res)));
} else {
resolve(new this.Model(serialize(res)));
}
}).catch(reject);
});
}
}