user преди 6 години
родител
ревизия
535f3efd58
променени са 4 файла, в които са добавени 47 реда и са изтрити 2 реда
  1. 2 0
      lib/index.d.ts
  2. 22 0
      lib/index.js
  3. 1 1
      lib/index.js.map
  4. 22 1
      src/index.ts

+ 2 - 0
lib/index.d.ts

@@ -14,6 +14,8 @@ export declare class BankClient {
     getNonce(): Promise<number>;
     getBalance(): Promise<number>;
     upload(params: UploadItemParameters): Promise<any>;
+    appendBank(bankLink: string, itemHash: string): Promise<void>;
     private getPriv;
     private makePlaintextPayload;
+    private parseBankLink;
 }

+ 22 - 0
lib/index.js

@@ -136,6 +136,18 @@ class BankClient {
             return uploadResponse.hash;
         });
     }
+    appendBank(bankLink, itemHash) {
+        return __awaiter(this, void 0, void 0, function* () {
+            const payload = yield this.makePlaintextPayload(itemHash);
+            const { address, topic } = this.parseBankLink(bankLink);
+            const topicURL = this.urlBase + '/bank/private/' + encodeURIComponent(address) + '/' + encodeURIComponent(topic);
+            yield this.webClient.requestJSON({
+                body: payload,
+                method: 'POST',
+                url: topicURL
+            });
+        });
+    }
     getPriv() {
         if (!this.privateKey) {
             throw new Error('missing private key');
@@ -170,6 +182,16 @@ class BankClient {
             }));
         }));
     }
+    parseBankLink(bankLink) {
+        if (!bankLink.startsWith('bank:')) {
+            throw new Error('address must start with bank:');
+        }
+        const [address, topic] = bankLink.substring(5).split('/');
+        if (!address || !topic) {
+            throw new Error('cannot parse address and topic');
+        }
+        return { address, topic };
+    }
 }
 exports.BankClient = BankClient;
 //# sourceMappingURL=index.js.map

Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
lib/index.js.map


+ 22 - 1
src/index.ts

@@ -130,6 +130,17 @@ export class BankClient {
       return uploadResponse.hash;
     }
 
+    public async appendBank(bankLink: string, itemHash: string): Promise<void> {
+      const payload = await this.makePlaintextPayload(itemHash);
+      const { address, topic } = this.parseBankLink(bankLink);
+      const topicURL = this.urlBase + '/bank/private/' + encodeURIComponent(address) + '/' + encodeURIComponent(topic);
+      await this.webClient.requestJSON({
+        body: payload,
+        method: 'POST',
+        url: topicURL
+      });
+    }
+
     private getPriv(): RsaPrivateKey {
       if (!this.privateKey) {
         throw new Error('missing private key');
@@ -167,5 +178,15 @@ export class BankClient {
       });
     }
 
-    
+    private parseBankLink(bankLink: string) {
+      if (!bankLink.startsWith('bank:')) {
+        throw new Error('address must start with bank:');
+      }
+      const [ address, topic ] = bankLink.substring(5).split('/');
+      if (!address || !topic) {
+        throw new Error('cannot parse address and topic');
+      }
+      return { address, topic };
+    }
+  
 }