got oscarhost soap api to work

This commit is contained in:
David Baldwynn 2015-08-14 09:40:34 -07:00
parent 9c6fb5df87
commit c6b5cad9bf
4 changed files with 81 additions and 2 deletions

4
.gitignore vendored
View file

@ -1,4 +1,6 @@
Oscar_Credentials.md
docs/Oscar_Credentials.md
scripts/test_oscarhost.js
scripts/oscarhost/private/
# iOS / Apple
# ===========

View file

@ -21,7 +21,7 @@
"postinstall": "bower install --config.interactive=false; grunt build"
},
"dependencies": {
"async": "^1.4.0",
"async": "^1.4.2",
"body-parser": "~1.9.0",
"bower": "~1.3.8",
"chalk": "~1.0.0",
@ -78,6 +78,8 @@
"passport-local": "~1.0.0",
"passport-twitter": "~1.0.2",
"raven": "^0.8.1",
"request": "^2.60.0",
"request-promise": "^0.4.3",
"satelize": "~0.1.1",
"should": "~4.1.0",
"supertest": "~0.14.0",

View file

@ -0,0 +1,23 @@
"use strict";
var crypto = require('crypto'),
passwordDigest = require('soap/lib/utils').passwordDigest;
function WSSecurity(username, password) {
this._username = username;
this._password = password;
}
WSSecurity.prototype.toXML = function() {
var password = "<wsse:Password Type=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\">" + this._password + "</wsse:Password>";
return "<wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\" xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\" soap:mustUnderstand=\"1\">" +
"<wsse:UsernameToken xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\" wsu:Id=\"UsernameToken-1\">" +
"<wsse:Username>" + this._username + "</wsse:Username>" +
password +
"</wsse:UsernameToken>" +
"</wsse:Security>";
};
module.exports = WSSecurity;

View file

@ -0,0 +1,52 @@
var soap = require('soap'),
request = require('request'),
async = require('async'),
OscarSecurity = require('./OscarSecurity');
var url_login = 'http://someurl.com/ws?wsdl',
url_demo = 'http://someurl.com/ws?wsdl',
args_demo = {arg0: 12351235},
args_login = {arg0: 'mylogin', arg1: 'mypassword'};
var options = {
ignoredNamespaces: {
namespaces: ['targetNamespace', 'typedNamespace'],
override: true
}
}
async.waterfall([
function (callback) {
soap.createClient(url_login, options, function(err, client) {
client.login(args_login, function (err, result) {
if(err) callback(err);
callback(null, result.return);
});
});
},
function (security_obj, callback) {
console.log(security_obj);
soap.createClient(url_demo, options, function(err, client) {
client.setSecurity(new OscarSecurity(security_obj.securityId, security_obj.securityTokenKey) );
client.getDemographic(args_demo, function (err, result) {
if(err) callback(err);
console.log(result);
callback(null, 'DemographicService');
});
});
}
], function(err, result) {
if(err) throw err;
console.log(result);
});