m.Handle("/create-asset", jsonHandler(a.createAsset))
m.Handle("/update-asset-alias", jsonHandler(a.updateAssetAlias))
+ m.Handle("/get-asset", jsonHandler(a.getAsset))
m.Handle("/list-assets", jsonHandler(a.listAssets))
m.Handle("/create-key", jsonHandler(a.pseudohsmCreateKey))
return NewSuccessResponse(annotatedAccounts)
}
-// POST /list-assets
-func (a *API) listAssets(ctx context.Context, filter struct {
+// POST /get-asset
+func (a *API) getAsset(ctx context.Context, filter struct {
ID string `json:"id"`
}) Response {
- assets, err := a.wallet.AssetReg.ListAssets(filter.ID)
+ asset, err := a.wallet.AssetReg.GetAsset(filter.ID)
+ if err != nil {
+ log.Errorf("getAsset: %v", err)
+ return NewErrorResponse(err)
+ }
+
+ return NewSuccessResponse(asset)
+}
+
+// POST /list-assets
+func (a *API) listAssets(ctx context.Context) Response {
+ assets, err := a.wallet.AssetReg.ListAssets()
if err != nil {
log.Errorf("listAssets: %v", err)
return NewErrorResponse(err)
return *asset.Alias
}
+// GetAsset get asset by assetID
+func (reg *Registry) GetAsset(id string) (*Asset, error) {
+ asset := &Asset{}
+ if interAsset := reg.db.Get([]byte(assetPrefix + id)); interAsset != nil {
+ if err := json.Unmarshal(interAsset, asset); err != nil {
+ return nil, err
+ }
+ return asset, nil
+ }
+
+ if extAsset := reg.db.Get([]byte(ExternalAssetPrefix + id)); extAsset != nil {
+ if err := json.Unmarshal(extAsset, asset); err != nil {
+ return nil, err
+ }
+ }
+ return asset, nil
+}
+
// ListAssets returns the accounts in the db
-func (reg *Registry) ListAssets(id string) ([]*Asset, error) {
+func (reg *Registry) ListAssets() ([]*Asset, error) {
assets := []*Asset{DefaultNativeAsset}
- assetIter := reg.db.IteratorPrefix([]byte(assetPrefix + id))
+ assetIter := reg.db.IteratorPrefix([]byte(assetPrefix))
defer assetIter.Release()
for assetIter.Next() {
}
assets = append(assets, asset)
}
+
+ extAssetIter := reg.db.IteratorPrefix([]byte(ExternalAssetPrefix))
+ defer extAssetIter.Release()
+
+ for extAssetIter.Next() {
+ asset := &Asset{}
+ if err := json.Unmarshal(extAssetIter.Value(), asset); err != nil {
+ return nil, err
+ }
+ assets = append(assets, asset)
+ }
+
return assets, nil
}
createAssetCmd.PersistentFlags().IntVarP(&assetQuorum, "quorom", "q", 1, "quorum must be greater than 0 and less than or equal to the number of signers")
createAssetCmd.PersistentFlags().StringVarP(&assetToken, "access", "a", "", "access token")
createAssetCmd.PersistentFlags().StringVarP(&assetDefiniton, "definition", "d", "", "definition for the asset")
-
- listAssetsCmd.PersistentFlags().StringVar(&assetID, "id", "", "ID of asset")
}
var (
- assetID = ""
assetQuorum = 1
assetToken = ""
assetDefiniton = ""
},
}
+var getAssetCmd = &cobra.Command{
+ Use: "get-asset <assetID>",
+ Short: "get asset by assetID",
+ Args: cobra.ExactArgs(1),
+ Run: func(cmd *cobra.Command, args []string) {
+ filter := struct {
+ ID string `json:"id"`
+ }{ID: args[0]}
+
+ data, exitCode := util.ClientCall("/get-asset", &filter)
+ if exitCode != util.Success {
+ os.Exit(exitCode)
+ }
+
+ printJSONList(data)
+ },
+}
+
var listAssetsCmd = &cobra.Command{
Use: "list-assets",
Short: "List the existing assets",
Args: cobra.NoArgs,
Run: func(cmd *cobra.Command, args []string) {
- filter := struct {
- ID string `json:"id"`
- }{ID: assetID}
-
- data, exitCode := util.ClientCall("/list-assets", &filter)
+ data, exitCode := util.ClientCall("/list-assets")
if exitCode != util.Success {
os.Exit(exitCode)
}
BytomcliCmd.AddCommand(validateAddressCmd)
BytomcliCmd.AddCommand(createAssetCmd)
+ BytomcliCmd.AddCommand(getAssetCmd)
BytomcliCmd.AddCommand(listAssetsCmd)
BytomcliCmd.AddCommand(updateAssetAliasCmd)