OSDN Git Service

adjust structure
[bytom/bytom-java-sdk.git] / java-sdk / src / main / java / io / bytom / api / Wallet.java
1 package io.bytom.api;
2
3 import com.google.gson.annotations.SerializedName;
4 import io.bytom.common.Utils;
5 import io.bytom.exception.BytomException;
6 import io.bytom.http.Client;
7 import org.apache.log4j.Logger;
8
9 import java.util.HashMap;
10 import java.util.List;
11 import java.util.Map;
12
13 /**
14  * <h1>Wallet Class</h1>
15  */
16 public class Wallet {
17
18     @SerializedName("account_image")
19     public AccountImage accountImage;
20
21     @SerializedName("asset_image")
22     public AssetImage assetImage;
23
24     @SerializedName("key_images")
25     public KeyImages keyImages;
26
27     private static Logger logger = Logger.getLogger(Wallet.class);
28
29     /**
30      * Serializes the Address into a form that is safe to transfer over the wire.
31      *
32      * @return the JSON-serialized representation of the Receiver object
33      */
34     public String toJson() {
35         return Utils.serializer.toJson(this);
36     }
37
38     /**
39      * Call backup-wallet api
40      *
41      * @param client
42      * @return
43      * @throws BytomException
44      */
45     public static Wallet backupWallet(Client client) throws BytomException {
46         Wallet wallet = client.request("backup-wallet", null, Wallet.class);
47
48         logger.info("backup-wallet:");
49         logger.info(wallet.toJson());
50
51         return wallet;
52     }
53
54     /**
55      * Call restore-wallet api
56      *
57      * @param client
58      * @param accountImage
59      * @param assetImage
60      * @param keyImages
61      * @throws BytomException
62      */
63     public static void restoreWallet(Client client ,Object accountImage, Object assetImage , Object keyImages) throws BytomException{
64         Map<String, Object> body = new HashMap<String, Object>();
65         body.put("account_image", accountImage);
66         body.put("asset_image", assetImage);
67         body.put("key_images", keyImages);
68
69         logger.info("restore-wallet:");
70         logger.info(body.toString());
71
72         client.request("restore-wallet", body);
73     }
74
75     public static class AccountImage {
76
77         public Slices[] slices;
78
79         public static class Slices {
80
81             @SerializedName("contract_index")
82             public int contractIndex;
83
84             public Account account;
85
86             public static class Account {
87
88                 public String type;
89
90                 public List<String> xpubs;
91
92                 public int quorum;
93
94                 @SerializedName("key_index")
95                 public int keyIndex;
96
97                 public String id;
98
99                 public String alias;
100
101             }
102
103         }
104     }
105
106     public static class AssetImage {
107
108         public Assets[] assets;
109
110         public static class Assets {
111             public String type;
112             public List<String> xpubs;
113             public int quorum;
114             public String id;
115             public String alias;
116             public Map<String, Object> definition;
117             @SerializedName("key_index")
118             public int keyIndex;
119             @SerializedName("vm_version")
120             public int vmVersion;
121             @SerializedName("asset_image")
122             public String issueProgram;
123             @SerializedName("raw_definition_byte")
124             public String rawDefinitionByte;
125         }
126     }
127
128     public static class KeyImages {
129
130         public Xkeys[] xkeys;
131
132         public static class Xkeys {
133
134             public Crypto crypto;
135             public String id;
136             public String type;
137             public int version;
138             public String alias;
139             public String xpub;
140
141             public static class Crypto {
142                 public String cipher;
143                 public String ciphertext;
144                 public Map<String, Object> cipherparams;
145                 public String kdf;
146                 public Map<String, Object> kdfparams;
147                 public String mac;
148             }
149
150         }
151     }
152
153 }