OSDN Git Service

server api
authorxuhongxin <xuhongxin@luojilab.com>
Thu, 11 Oct 2018 15:26:31 +0000 (23:26 +0800)
committerxuhongxin <xuhongxin@luojilab.com>
Thu, 11 Oct 2018 15:26:31 +0000 (23:26 +0800)
src/http.js
src/index.js
src/sdk/accounts.js
src/sdk/keys.js
src/wasm/func.js

index 71e74af..530ec4f 100644 (file)
@@ -1,6 +1,26 @@
 import axios from 'axios';
 
-function http(baseUrl, token) {
+const basePath = 'api/v1/btm/';
+
+export function serverHttp(host) {
+    this.host = host;
+    this.request = function(path, body) {
+        var config = {
+            url: `${this.host}${basePath}${path}`,
+            method: 'POST',
+            headers: {
+                Accept: 'application/json',
+            },
+            data: body,
+            timeout: 1000
+        };
+
+        //return Promise
+        return axios.request(config);
+    };
+}
+
+export function http(baseUrl, token) {
     this.baseUrl = baseUrl;
     this.token = token;
     this.request = function(path, body) {
@@ -27,6 +47,4 @@ function http(baseUrl, token) {
             return resp.data;
         });
     };
-}
-
-export default http;
\ No newline at end of file
+}
\ No newline at end of file
index 5023139..b0c16d6 100644 (file)
@@ -4,7 +4,7 @@ import transactionsApi from './api/transactions.js';
 import keysSDK from './sdk/keys.js';
 import accountsSDK from './sdk/accounts.js';
 import transactionSDK from './sdk/transaction.js';
-import http from './http.js';
+import {serverHttp, http} from './http.js';
 
 //todo vue use
 function Bytom(serverHost, wasmPath, baseURL, token) {
@@ -14,16 +14,16 @@ function Bytom(serverHost, wasmPath, baseURL, token) {
     
     if(baseURL) {
         this.http = new http(baseURL, token);
-
         this.keys = new keysApi(this.http);
         this.accounts = new accountsApi(this.http);
         this.transactions = new transactionsApi(this.http);
     }
 
     Bytom.wasmPath = wasmPath;
+    this.serverHttp = new serverHttp(serverHost);
     this.sdk = {};
     this.sdk.keys = new keysSDK();
-    this.sdk.accounts = new accountsSDK();
+    this.sdk.accounts = new accountsSDK(this.serverHttp);
     this.sdk.transaction = new transactionSDK();
 }
 
index 56e0c24..e250223 100644 (file)
@@ -1,9 +1,66 @@
 import {getDB} from '../db/db';
 import {createAccount, createAccountReceiver} from '../wasm/func';
 
-function accountsSDK(){    
+function accountsSDK(http){
+    this.http = http;
 }
 
+accountsSDK.prototype.createAccountReceiverUseServer = function(guid) {
+    let retPromise = new Promise((resolve, reject) => {
+        this.http.request('account/new-address', {guid:guid}).then(resp => {
+            let dbData = resp.data.data;
+            dbData.guid = guid;
+            getDB().then(db => {
+                let transaction = db.transaction(['addresses-server'], 'readwrite');
+                let objectStore = transaction.objectStore('addresses-server');
+                delete dbData.rootXPub;
+                let request = objectStore.add(dbData);
+                request.onsuccess = function() {
+                    resolve(dbData);
+                };
+                request.onerror = function() {
+                    reject(request.error);
+                };
+            });
+        }).catch(error => {
+            reject(error);
+        });
+    });
+    return retPromise;
+};
+
+accountsSDK.prototype.createAccountUseServer = function(rootXPub) {
+    let retPromise = new Promise((resolve, reject) => {
+        this.http.request('account/create', {pubkey: rootXPub}).then(resp => {
+            let dbData = resp.data.data;
+            dbData.rootXPub = rootXPub;
+            getDB().then(db => {
+                let transaction = db.transaction(['accounts-server'], 'readwrite');
+                let objectStore = transaction.objectStore('accounts-server');
+                let request = objectStore.add(dbData);
+                request.onsuccess = function() {
+                    let transaction = db.transaction(['addresses-server'], 'readwrite');
+                    let objectStore = transaction.objectStore('addresses-server');
+                    delete dbData.rootXPub;
+                    let request = objectStore.add(dbData);
+                    request.onsuccess = function() {
+                        resolve(dbData);
+                    };
+                    request.onerror = function() {
+                        reject(request.error);
+                    };
+                };
+                request.onerror = function() {
+                    reject(request.error);
+                };
+            });
+        }).catch(error => {
+            reject(error);
+        });
+    });
+    return retPromise;
+};
+
 /**
  * create account
  * 
@@ -12,7 +69,7 @@ function accountsSDK(){
  * @param {String} rootXPub 
  */
 accountsSDK.prototype.createAccount = function(alias, quorum, rootXPub) {
-    let returnPromise = new Promise((resolve, reject) => {
+    let retPromise = new Promise((resolve, reject) => {
         getDB().then(db => {
             let transaction = db.transaction(['accounts'], 'readwrite');
             let objectStore = transaction.objectStore('accounts');
@@ -22,15 +79,15 @@ accountsSDK.prototype.createAccount = function(alias, quorum, rootXPub) {
             request.onsuccess = function () {
                 let data = {alias:alias, quorum:quorum, rootXPub:rootXPub, nextIndex:request.result};
                 createAccount(data).then(res => {
-                    let JsonData = JSON.parse(res.data);
+                    let jsonData = JSON.parse(res.data);
                     let putTransaction = db.transaction(['accounts'], 'readwrite');
                     let putObjectStore = putTransaction.objectStore('accounts');
-                    let putRequest = putObjectStore.put(JsonData, request.result);
+                    let putRequest = putObjectStore.put(jsonData, request.result);
                     putRequest.onsuccess = function() {
-                        resolve(JsonData);
+                        resolve(jsonData);
                     };
                     putRequest.onerror = function() {
-                        resolve(putRequest.error);
+                        reject(putRequest.error);
                     };
                 }).catch(error => {
                     reject(error);
@@ -43,7 +100,7 @@ accountsSDK.prototype.createAccount = function(alias, quorum, rootXPub) {
             reject(error);
         });
     });
-    return returnPromise;
+    return retPromise;
 };
 
 /**
@@ -52,7 +109,7 @@ accountsSDK.prototype.createAccount = function(alias, quorum, rootXPub) {
  * @param {Int} nextIndex 
  */
 accountsSDK.prototype.createAccountReceiver = function(account) {
-    let returnPromise = new Promise((resolve, reject) => {
+    let retPromise = new Promise((resolve, reject) => {
         getDB().then(db => {
             let transaction = db.transaction(['addresses'], 'readwrite');
             let objectStore = transaction.objectStore('addresses');
@@ -63,21 +120,21 @@ accountsSDK.prototype.createAccountReceiver = function(account) {
             request.onsuccess = function() {
                 let data = {account:JSON.stringify(account), nextIndex: request.result};
                 createAccountReceiver(data).then(res => {
-                    let JsonData = JSON.parse(res.data);
-                    let JsonDB = JSON.parse(res.db);
+                    let jsonData = JSON.parse(res.data);
+                    let jsonDB = JSON.parse(res.db);
                     let putTransaction = db.transaction(['addresses'], 'readwrite');
                     let putObjectStore = putTransaction.objectStore('addresses');
                     let putRequest = null;
-                    for (let key in JsonDB) {
-                        if(!JsonDB.hasOwnProperty(key)) continue;
-                        let putData = JSON.parse(JsonDB[key]);
+                    for (let key in jsonDB) {
+                        if(!jsonDB.hasOwnProperty(key)) continue;
+                        let putData = JSON.parse(jsonDB[key]);
                         putRequest = putObjectStore.put(putData, request.result);
                     }
                     putRequest.onsuccess = function() {
-                        resolve(JsonData);
+                        resolve(jsonData);
                     };
                     putRequest.onerror = function() {
-                        resolve(putRequest.error);
+                        reject(putRequest.error);
                     };
                 }).catch(error => {
                     reject(error);
@@ -90,7 +147,7 @@ accountsSDK.prototype.createAccountReceiver = function(account) {
             reject(error);
         });
     });
-    return returnPromise;
+    return retPromise;
 };
 
 export default accountsSDK;
\ No newline at end of file
index 59ddc78..f7683d0 100644 (file)
@@ -12,7 +12,7 @@ function keysSDK() {
  * @param {String} newPassword 
  */
 keysSDK.prototype.resetKeyPassword = function(rootXPub, oldPassword, newPassword) {
-    let returnPromise = new Promise((resolve, reject) => {
+    let retPromise = new Promise((resolve, reject) => {
         let data = {rootXPub: rootXPub, oldPassword:oldPassword, newPassword:newPassword};
         resetKeyPassword(data).then(res => {
             getDB().then(db => {
@@ -46,7 +46,7 @@ keysSDK.prototype.resetKeyPassword = function(rootXPub, oldPassword, newPassword
             reject(error);
         });
     });
-    return returnPromise;
+    return retPromise;
 };
 
 /**
@@ -55,7 +55,7 @@ keysSDK.prototype.resetKeyPassword = function(rootXPub, oldPassword, newPassword
  * @param {String} xpub 
  */
 keysSDK.prototype.getKeyByXPub = function(xpub) {
-    let returnPromise = new Promise((resolve, reject) => {
+    let retPromise = new Promise((resolve, reject) => {
         getDB().then(db => {
             let getRequest = db.transaction(['keys'], 'readonly')
                 .objectStore('keys')
@@ -75,7 +75,7 @@ keysSDK.prototype.getKeyByXPub = function(xpub) {
             reject(error);
         });
     });
-    return returnPromise;
+    return retPromise;
 };
 
 /**
@@ -86,7 +86,7 @@ keysSDK.prototype.getKeyByXPub = function(xpub) {
  */
 keysSDK.prototype.create = function(alias, password) {
     var normalizedAlias = alias.toLowerCase().trim();
-    let returnPromise = new Promise((resolve, reject) => {
+    let retPromise = new Promise((resolve, reject) => {
         getDB().then(db => {
             let getRequest = db.transaction(['keys'], 'readonly')
                 .objectStore('keys')
@@ -127,7 +127,7 @@ keysSDK.prototype.create = function(alias, password) {
             reject(error);
         });
     });
-    return returnPromise;
+    return retPromise;
 };
 
 export default keysSDK;
\ No newline at end of file
index 63e8de6..b8f8c00 100644 (file)
@@ -26,14 +26,14 @@ window.resetWasmStatus = function() {
 //wasm call js func getKeyByXPub
 window.getKeyByXPub = function (XPub) {
     let keys = new keysSDK();
-    let returnPromise = new Promise((resolve, reject) => {
+    let retPromise = new Promise((resolve, reject) => {
         keys.getKeyByXPub(XPub).then(res => {
             resolve(res);
         }).catch(error => {
             reject(error);
         });
     });
-    return returnPromise;
+    return retPromise;
 };
 
 export async function resetKeyPassword(data) {