diff --git a/public/views/buyGlidera.html b/public/views/buyGlidera.html new file mode 100644 index 000000000..8776a1515 --- /dev/null +++ b/public/views/buyGlidera.html @@ -0,0 +1,29 @@ +
+
+ + +
+
+
+ +

Buy Bitcoin

+ +
+ + +
+ +
+ {{buyPrice}} -- + +
+
+
+
+
diff --git a/public/views/glidera.html b/public/views/glidera.html new file mode 100644 index 000000000..93c66931f --- /dev/null +++ b/public/views/glidera.html @@ -0,0 +1,48 @@ + +
+
+ + +
+
+
+ + + Connect to Glidera + + +
+ Connected to Glidera - Preferences + +
+ + +
+ +

Transactions

+
    +
  • + {{tx.transactionUuid}} -- + {{tx.transactionDate}} -- + {{tx.type}} -- + {{tx.price}} -- + {{tx.subtotal}} -- + {{tx.fees}} -- + {{tx.total}} -- + {{tx.currency}} -- + {{tx.estimatedDeliveryDate}} -- + {{tx.transactionHash}} -- + {{tx.status}}

    +
  • +
+ + +
+ +
+
+
+
diff --git a/public/views/preferencesGlidera.html b/public/views/preferencesGlidera.html index 381d7c02e..58b2dcc58 100644 --- a/public/views/preferencesGlidera.html +++ b/public/views/preferencesGlidera.html @@ -1,25 +1,28 @@
+ ng-init="titleSection='Preferences Glidera'; goBackToState = 'glidera'">
- + Glidera diff --git a/src/js/controllers/buyGlidera.js b/src/js/controllers/buyGlidera.js new file mode 100644 index 000000000..4064c59b8 --- /dev/null +++ b/src/js/controllers/buyGlidera.js @@ -0,0 +1,13 @@ +'use strict'; + +angular.module('copayApp.controllers').controller('buyGlideraController', + function() { + + this.getBuyPrice = function(token, price) { + var self = this; + glideraService.buyPrice(token, price, function(error, sellPrice) { + self.sellPrice = sellPrice; + }); + }; + + }); diff --git a/src/js/controllers/glidera.js b/src/js/controllers/glidera.js new file mode 100644 index 000000000..202f5490e --- /dev/null +++ b/src/js/controllers/glidera.js @@ -0,0 +1,13 @@ +'use strict'; + +angular.module('copayApp.controllers').controller('glideraController', + function(glideraService) { + + this.init = function(token) { + var self = this; + glideraService.getTransactions(token, function(error, txs) { + self.txs = txs; + }); + }; + + }); diff --git a/src/js/controllers/sellGlidera.js b/src/js/controllers/sellGlidera.js new file mode 100644 index 000000000..e2ac49514 --- /dev/null +++ b/src/js/controllers/sellGlidera.js @@ -0,0 +1,14 @@ +'use strict'; + +angular.module('copayApp.controllers').controller('sellGlideraController', + function(glideraService) { + + this.getSellPrice = function(token, price) { + var self = this; + glideraService.sellPrice(token, price, function(error, sellPrice) { + self.sellPrice = sellPrice; + }); + }; + + + }); diff --git a/src/js/routes.js b/src/js/routes.js index 5c175d76f..0b13d4e8f 100644 --- a/src/js/routes.js +++ b/src/js/routes.js @@ -288,6 +288,36 @@ angular }, } }) + .state('glidera', { + url: '/glidera', + walletShouldBeComplete: true, + needProfile: true, + views: { + 'main': { + templateUrl: 'views/glidera.html' + }, + } + }) + .state('buyGlidera', { + url: '/buy', + walletShouldBeComplete: true, + needProfile: true, + views: { + 'main': { + templateUrl: 'views/buyGlidera.html' + }, + } + }) + .state('sellGlidera', { + url: '/sell', + walletShouldBeComplete: true, + needProfile: true, + views: { + 'main': { + templateUrl: 'views/sellGlidera.html' + }, + } + }) .state('preferencesGlidera', { url: '/preferencesGlidera', @@ -500,9 +530,12 @@ angular payment: -1, preferences: 11, + glidera: 11, preferencesColor: 12, backup: 12, preferencesAdvanced: 12, + buyGlidera: 12, + sellGlidera: 12, preferencesGlidera: 12, delete: 13, preferencesLanguage: 12, diff --git a/src/js/services/glideraService.js b/src/js/services/glideraService.js index 0c744749a..60f5e127d 100644 --- a/src/js/services/glideraService.js +++ b/src/js/services/glideraService.js @@ -30,13 +30,13 @@ angular.module('copayApp.services').factory('glideraService', function($http, $l client_secret: CLIENT_SECRET, redirect_uri: REDIRECT_URI } - } + }; $http(req).then(function(data) { - $log.info('Authorization Access Token: SUCCESS'); + $log.info('Glidera Authorization Access Token: SUCCESS'); return cb(null, data); }, function(data) { - $log.error('Authorization Access Token: ERROR ' + data.statusText); + $log.error('Glidera Authorization Access Token: ERROR ' + data.statusText); return cb(data.statusText); }); }; @@ -47,10 +47,8 @@ angular.module('copayApp.services').factory('glideraService', function($http, $l url: HOST + '/api/v1' + endpoint, headers: { 'Content-Type': 'application/json', - 'Accept': 'application/json' - }, - params: { - access_token: token + 'Accept': 'application/json', + 'Authorization': 'Bearer ' + token } }; }; @@ -58,10 +56,10 @@ angular.module('copayApp.services').factory('glideraService', function($http, $l root.getPermissions = function(token, cb) { if (!token) return cb('Invalid Token'); $http(_get('/oauth/token', token)).then(function(data) { - $log.info('Access Token Permissions: SUCCESS'); + $log.info('Glidera Access Token Permissions: SUCCESS'); return cb(null, data.data); }, function(data) { - $log.error('Access Token Permissions: ERROR ' + data.statusText); + $log.error('Glidera Access Token Permissions: ERROR ' + data.statusText); return cb(data.statusText); }); }; @@ -69,10 +67,10 @@ angular.module('copayApp.services').factory('glideraService', function($http, $l root.getEmail = function(token, cb) { if (!token) return cb('Invalid Token'); $http(_get('/user/email', token)).then(function(data) { - $log.info('Get Email: SUCCESS'); + $log.info('Glidera Get Email: SUCCESS'); return cb(null, data.data); }, function(data) { - $log.error('Get Email: ERROR ' + data.statusText); + $log.error('Glidera Get Email: ERROR ' + data.statusText); return cb(data.statusText); }); }; @@ -80,10 +78,10 @@ angular.module('copayApp.services').factory('glideraService', function($http, $l root.getPersonalInfo = function(token, cb) { if (!token) return cb('Invalid Token'); $http(_get('/user/personalinfo', token)).then(function(data) { - $log.info('Get Personal Info: SUCCESS'); + $log.info('Glidera Get Personal Info: SUCCESS'); return cb(null, data.data); }, function(data) { - $log.error('Get Personal Info: ERROR ' + data.statusText); + $log.error('Glidera Get Personal Info: ERROR ' + data.statusText); return cb(data.statusText); }); }; @@ -91,10 +89,10 @@ angular.module('copayApp.services').factory('glideraService', function($http, $l root.getStatus = function(token, cb) { if (!token) return cb('Invalid Token'); $http(_get('/user/status', token)).then(function(data) { - $log.info('User Status: SUCCESS'); + $log.info('Glidera User Status: SUCCESS'); return cb(null, data.data); }, function(data) { - $log.error('User Status: ERROR ' + data.statusText); + $log.error('Glidera User Status: ERROR ' + data.statusText); return cb(data.statusText); }); }; @@ -102,10 +100,107 @@ angular.module('copayApp.services').factory('glideraService', function($http, $l root.getLimits = function(token, cb) { if (!token) return cb('Invalid Token'); $http(_get('/user/limits', token)).then(function(data) { - $log.info('Transaction Limits: SUCCESS'); + $log.info('Glidera Transaction Limits: SUCCESS'); return cb(null, data.data); }, function(data) { - $log.error('Transaction Limits: ERROR ' + data.statusText); + $log.error('Glidera Transaction Limits: ERROR ' + data.statusText); + return cb(data.statusText); + }); + }; + + root.getTransactions = function(token, cb) { + if (!token) return cb('Invalid Token'); + $http(_get('/transaction', token)).then(function(data) { + $log.info('Glidera Transaction: SUCCESS'); + return cb(null, data.data); + }, function(data) { + $log.error('Glidera Transaction: ERROR ' + data.statusText); + return cb(data.statusText); + }); + }; + + root.getSellAddress = function(token, cb) { + if (!token) return cb('Invalid Token'); + $http(_get('/user/create_sell_address', token)).then(function(data) { + $log.info('Glidera Create Sell Address: SUCCESS'); + return cb(null, data.data); + }, function(data) { + $log.error('Glidera Create Sell Address: ERROR ' + data.statusText); + return cb(data.statusText); + }); + }; + + var _post = function(endpoint, token, data) { + return { + method: 'POST', + url: HOST + '/api/v1' + endpoint, + headers: { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': 'Bearer ' + token + }, + data: data + }; + }; + + root.sellPrice = function(token, price, cb) { + var data = { + qty: price.qty, + fiat: price.fiat + }; + $http(_post('/prices/sell', token, data)).then(function(data) { + $log.info('Glidera Sell Price: SUCCESS'); + return cb(null, data); + }, function(data) { + $log.error('Glidera Sell Price: ERROR ' + data.statusText); + return cb(data.statusText); + }); + }; + + root.sell = function(token, data, cb) { + var data = { + refundAddress: data.refundAddress, + signedTransaction: data.signedTransaction, + priceUuid: data.priceUuid, + useCurrentPrice: data.useCurrentPrice, + ip: data.ip + }; + $http(_post('/prices/buy', token, data)).then(function(data) { + $log.info('Glidera Buy: SUCCESS'); + return cb(null, data); + }, function(data) { + $log.error('Glidera Buy: ERROR ' + data.statusText); + return cb(data.statusText); + }); + }; + + root.buyPrice = function(token, price, cb) { + var data = { + qty: price.qty, + fiat: price.fiat + }; + $http(_post('/prices/buy', token, data)).then(function(data) { + $log.info('Glidera Buy Price: SUCCESS'); + return cb(null, data); + }, function(data) { + $log.error('Glidera Buy Price: ERROR ' + data.statusText); + return cb(data.statusText); + }); + }; + + root.buy = function(token, data, cb) { + var data = { + destinationAddress: data.destinationAddress, + qty: data.qty, + priceUuid: data.priceUuid, + useCurrentPrice: data.useCurrentPrice, + ip: data.ip + }; + $http(_post('/prices/buy', token, data)).then(function(data) { + $log.info('Glidera Buy: SUCCESS'); + return cb(null, data); + }, function(data) { + $log.error('Glidera Buy: ERROR ' + data.statusText); return cb(data.statusText); }); };