mirror of https://github.com/BTCPrivate/copay.git
paypro: messy work to get xhr to payment server working.
This commit is contained in:
parent
a7f176890f
commit
7c39915dd0
|
@ -1,8 +1,9 @@
|
|||
'use strict';
|
||||
|
||||
angular.module('copayApp.directives')
|
||||
//.directive('validAddress', ['$rootScope',
|
||||
//function($rootScope) {
|
||||
.directive('validAddress', [
|
||||
|
||||
function() {
|
||||
|
||||
var bitcore = require('bitcore');
|
||||
|
@ -15,6 +16,17 @@ angular.module('copayApp.directives')
|
|||
// Is payment protocol address?
|
||||
var uri = copay.HDPath.parseBitcoinURI(value);
|
||||
if (uri && uri.merchant) {
|
||||
scope.wallet.createPaymentTx(uri.merchant, function(ntxid, ca) {
|
||||
var txp = scope.wallet.txProposals.txps[ntxid];
|
||||
if (!txp) return;
|
||||
var total = txp.merchant.total;
|
||||
console.log('TOTAL:');
|
||||
console.log(total);
|
||||
var sendForm = angular.element(document).find('[name=sendForm]');
|
||||
var amount = angular.element(sendForm).find('#amount')
|
||||
amount.prop('disabled', true);
|
||||
amount.val(total);
|
||||
});
|
||||
ctrl.$setValidity('validAddress', true);
|
||||
return 'Merchant: '+ uri.merchant;
|
||||
}
|
||||
|
|
|
@ -59,6 +59,7 @@ HDPath.parseBitcoinURI = function(uri) {
|
|||
var splitQuestion = data.split('?');
|
||||
ret.address = splitQuestion[0];
|
||||
|
||||
/*
|
||||
if (splitQuestion.length > 1) {
|
||||
var search = splitQuestion[1];
|
||||
data = JSON.parse('{"' + search.replace(/&/g, '","').replace(/=/g, '":"') + '"}',
|
||||
|
@ -69,6 +70,26 @@ HDPath.parseBitcoinURI = function(uri) {
|
|||
ret.message = data.message;
|
||||
ret.merchant = data.r;
|
||||
}
|
||||
*/
|
||||
|
||||
if (splitQuestion.length > 1) {
|
||||
var data = {};
|
||||
var search = splitQuestion[1];
|
||||
var parts = search.split('&');
|
||||
var part;
|
||||
var i = 0;
|
||||
for (; i < parts.length; i++) {
|
||||
part = parts[i].split('=');
|
||||
if (part[0] === '') {
|
||||
data[part[1]] = part[1];
|
||||
} else {
|
||||
data[part[0]] = decodeURIComponent(part[1]);
|
||||
}
|
||||
}
|
||||
ret.amount = parseFloat(data.amount);
|
||||
ret.message = data.message;
|
||||
ret.merchant = data.r;
|
||||
}
|
||||
|
||||
return ret;
|
||||
};
|
||||
|
|
|
@ -25,6 +25,91 @@ var TxProposals = require('./TxProposals');
|
|||
var PrivateKey = require('./PrivateKey');
|
||||
var copayConfig = require('../../../config');
|
||||
|
||||
if (typeof angular !== 'undefined') {
|
||||
var $http = angular.bootstrap().get('$http');
|
||||
}
|
||||
|
||||
var $http = function $http(options, callback) {
|
||||
if (typeof options === 'string') {
|
||||
options = { uri: options };
|
||||
}
|
||||
|
||||
options.method = options.method || 'GET';
|
||||
options.headers = options.headers || {};
|
||||
|
||||
var ret = {
|
||||
success: function(cb) {
|
||||
this._success = cb;
|
||||
return this;
|
||||
},
|
||||
error: function(cb) {
|
||||
this._error = cb;
|
||||
return this;
|
||||
},
|
||||
_success: function() {
|
||||
;
|
||||
},
|
||||
_error: function(_, err) {
|
||||
throw err;
|
||||
}
|
||||
};
|
||||
|
||||
var method = (options.method || 'GET').toUpperCase();
|
||||
var uri = options.uri || options.url;
|
||||
var req = options;
|
||||
|
||||
req.headers = req.headers || {};
|
||||
req.body = req.body || {};
|
||||
|
||||
if (typeof XMLHttpRequest !== 'undefined') {
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open(method, uri, true);
|
||||
|
||||
Object.keys(options.headers).forEach(function(key) {
|
||||
var val = options.headers[key];
|
||||
if (key === 'Content-Length') return;
|
||||
if (key === 'Content-Transfer-Encoding') return;
|
||||
xhr.setRequestHeader(key, val);
|
||||
});
|
||||
|
||||
// For older browsers:
|
||||
// xhr.overrideMimeType('text/plain; charset=x-user-defined');
|
||||
|
||||
// Newer browsers:
|
||||
xhr.responseType = 'arraybuffer';
|
||||
|
||||
xhr.onload = function(event) {
|
||||
var response = xhr.response;
|
||||
var buf = new Uint8Array(response);
|
||||
// return callback(null, xhr, buf);
|
||||
var headers = {};
|
||||
(xhr.getAllResponseHeaders() || '').replace(
|
||||
/(?:\r?\n|^)([^:\r\n]+): *([^\r\n]+)/g,
|
||||
function($0, $1, $2) {
|
||||
headers[$1.toLowerCase()] = $2;
|
||||
}
|
||||
);
|
||||
return ret._success(buf, xhr.status, headers, options);
|
||||
};
|
||||
|
||||
xhr.onerror = function(event) {
|
||||
return ret._error(null, event, null, options);
|
||||
};
|
||||
|
||||
if (options.body) {
|
||||
xhr.send(options.body);
|
||||
} else {
|
||||
xhr.send(null);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// require('request')(options, callback);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
function Wallet(opts) {
|
||||
var self = this;
|
||||
|
||||
|
|
Loading…
Reference in New Issue