diff options
author | chris erway <chris.erway@algorand.com> | 2022-02-24 08:44:16 -0500 |
---|---|---|
committer | chris erway <chris.erway@algorand.com> | 2022-02-24 08:44:16 -0500 |
commit | d498d79a797ac1f32611d167236696dbfed647ed (patch) | |
tree | c1b14a205d57ad48982d46849a5246565da91fd1 | |
parent | f7b26de2680226c13ed795460d3e0eb4ecb121b5 (diff) |
update for CR
-rw-r--r-- | cmd/goal/application.go | 8 | ||||
-rw-r--r-- | cmd/goal/interact.go | 8 | ||||
-rw-r--r-- | daemon/algod/api/algod.oas2.json | 4 | ||||
-rw-r--r-- | daemon/algod/api/spec/v2/model.go | 28 | ||||
-rw-r--r-- | daemon/algod/api/spec/v2/msgp_gen.go | 215 |
5 files changed, 199 insertions, 64 deletions
diff --git a/cmd/goal/application.go b/cmd/goal/application.go index 0f9553468..6d1c1979d 100644 --- a/cmd/goal/application.go +++ b/cmd/goal/application.go @@ -955,6 +955,10 @@ var readStateAppCmd = &cobra.Command{ // Fetching local state. Get account information ai, err := client.RawAccountApplicationInformation(account, appIdx) if err != nil { + reportErrorf(errorRequestFail, err) + } + + if ai.AppLocalState == nil { reportErrorf(errorAccountNotOptedInToApp, account, appIdx) } @@ -981,6 +985,10 @@ var readStateAppCmd = &cobra.Command{ // Get creator information ai, err := client.RawAccountApplicationInformation(app.Params.Creator, appIdx) if err != nil { + reportErrorf(errorRequestFail, err) + } + + if ai.AppParams == nil { reportErrorf(errorAccountNotOptedInToApp, account, appIdx) } diff --git a/cmd/goal/interact.go b/cmd/goal/interact.go index 5192984ea..0dabb2699 100644 --- a/cmd/goal/interact.go +++ b/cmd/goal/interact.go @@ -673,6 +673,10 @@ var appQueryCmd = &cobra.Command{ // Fetching local state. Get account information ai, err := client.RawAccountApplicationInformation(account, appIdx) if err != nil { + reportErrorf(errorRequestFail, err) + } + + if ai.AppLocalState == nil { reportErrorf(errorAccountNotOptedInToApp, account, appIdx) } @@ -690,6 +694,10 @@ var appQueryCmd = &cobra.Command{ // Get creator information ai, err := client.RawAccountApplicationInformation(app.Params.Creator, appIdx) if err != nil { + reportErrorf(errorRequestFail, err) + } + + if ai.AppParams == nil { reportErrorf(errorAccountNotOptedInToApp, account, appIdx) } diff --git a/daemon/algod/api/algod.oas2.json b/daemon/algod/api/algod.oas2.json index 205955e4d..a083cc7b8 100644 --- a/daemon/algod/api/algod.oas2.json +++ b/daemon/algod/api/algod.oas2.json @@ -2676,7 +2676,7 @@ } }, "AccountAssetResponse": { - "description": "AccountAssetResponse describes the asset data for a specific account and asset ID.", + "description": "AccountAssetResponse describes the account's asset holding and asset parameters (if either exist) for a specific asset ID. Asset parameters will only be returned if the provided address is the asset's creator.", "schema": { "type": "object", "required": [ @@ -2699,7 +2699,7 @@ } }, "AccountApplicationResponse": { - "description": "AccountApplicationResponse describes the application data for a specific account and application ID.", + "description": "AccountApplicationResponse describes the account's account's application local state and global state (AppLocalState and AppParams, if either exists) for a specific application ID. Global state will only be returned if the provided address is the application's creator.", "schema": { "type": "object", "required": [ diff --git a/daemon/algod/api/spec/v2/model.go b/daemon/algod/api/spec/v2/model.go index 587c56295..9b964accc 100644 --- a/daemon/algod/api/spec/v2/model.go +++ b/daemon/algod/api/spec/v2/model.go @@ -26,38 +26,30 @@ import ( type AccountAssetModel struct { _struct struct{} `codec:",omitempty,omitemptyarray"` - AssetParams basics.AssetParams `codec:"asset-params"` - AssetHolding basics.AssetHolding `codec:"asset-holding"` + AssetParams *basics.AssetParams `codec:"asset-params"` + AssetHolding *basics.AssetHolding `codec:"asset-holding"` } // AccountApplicationModel is returned by AccountApplicationInformation when msgpack format is specified type AccountApplicationModel struct { _struct struct{} `codec:",omitempty,omitemptyarray"` - AppLocalState basics.AppLocalState `codec:"app-local-state"` - AppParams basics.AppParams `codec:"app-params"` + AppLocalState *basics.AppLocalState `codec:"app-local-state"` + AppParams *basics.AppParams `codec:"app-params"` } // AccountResourceToAccountAssetModel converts AccountResource to AccountAssetModel func AccountResourceToAccountAssetModel(resource ledgercore.AccountResource) AccountAssetModel { - resourceModel := AccountAssetModel{} - if resource.AssetParams != nil { - resourceModel.AssetParams = *resource.AssetParams + return AccountAssetModel{ + AssetParams: resource.AssetParams, + AssetHolding: resource.AssetHolding, } - if resource.AssetHolding != nil { - resourceModel.AssetHolding = *resource.AssetHolding - } - return resourceModel } // AccountResourceToAccountApplicationModel converts AccountResource to AccountApplicationModel func AccountResourceToAccountApplicationModel(resource ledgercore.AccountResource) AccountApplicationModel { - resourceModel := AccountApplicationModel{} - if resource.AppParams != nil { - resourceModel.AppParams = *resource.AppParams - } - if resource.AppLocalState != nil { - resourceModel.AppLocalState = *resource.AppLocalState + return AccountApplicationModel{ + AppParams: resource.AppParams, + AppLocalState: resource.AppLocalState, } - return resourceModel } diff --git a/daemon/algod/api/spec/v2/msgp_gen.go b/daemon/algod/api/spec/v2/msgp_gen.go index 0a1ce27d4..48590fd11 100644 --- a/daemon/algod/api/spec/v2/msgp_gen.go +++ b/daemon/algod/api/spec/v2/msgp_gen.go @@ -3,6 +3,7 @@ package v2 // Code generated by github.com/algorand/msgp DO NOT EDIT. import ( + "github.com/algorand/go-algorand/data/basics" "github.com/algorand/msgp/msgp" ) @@ -30,11 +31,11 @@ func (z *AccountApplicationModel) MarshalMsg(b []byte) (o []byte) { // omitempty: check for empty values zb0001Len := uint32(2) var zb0001Mask uint8 /* 3 bits */ - if (*z).AppLocalState.MsgIsZero() { + if (*z).AppLocalState == nil { zb0001Len-- zb0001Mask |= 0x2 } - if (*z).AppParams.MsgIsZero() { + if (*z).AppParams == nil { zb0001Len-- zb0001Mask |= 0x4 } @@ -44,12 +45,20 @@ func (z *AccountApplicationModel) MarshalMsg(b []byte) (o []byte) { if (zb0001Mask & 0x2) == 0 { // if not empty // string "app-local-state" o = append(o, 0xaf, 0x61, 0x70, 0x70, 0x2d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x65) - o = (*z).AppLocalState.MarshalMsg(o) + if (*z).AppLocalState == nil { + o = msgp.AppendNil(o) + } else { + o = (*z).AppLocalState.MarshalMsg(o) + } } if (zb0001Mask & 0x4) == 0 { // if not empty // string "app-params" o = append(o, 0xaa, 0x61, 0x70, 0x70, 0x2d, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73) - o = (*z).AppParams.MarshalMsg(o) + if (*z).AppParams == nil { + o = msgp.AppendNil(o) + } else { + o = (*z).AppParams.MarshalMsg(o) + } } } return @@ -75,18 +84,40 @@ func (z *AccountApplicationModel) UnmarshalMsg(bts []byte) (o []byte, err error) } if zb0001 > 0 { zb0001-- - bts, err = (*z).AppLocalState.UnmarshalMsg(bts) - if err != nil { - err = msgp.WrapError(err, "struct-from-array", "AppLocalState") - return + if msgp.IsNil(bts) { + bts, err = msgp.ReadNilBytes(bts) + if err != nil { + return + } + (*z).AppLocalState = nil + } else { + if (*z).AppLocalState == nil { + (*z).AppLocalState = new(basics.AppLocalState) + } + bts, err = (*z).AppLocalState.UnmarshalMsg(bts) + if err != nil { + err = msgp.WrapError(err, "struct-from-array", "AppLocalState") + return + } } } if zb0001 > 0 { zb0001-- - bts, err = (*z).AppParams.UnmarshalMsg(bts) - if err != nil { - err = msgp.WrapError(err, "struct-from-array", "AppParams") - return + if msgp.IsNil(bts) { + bts, err = msgp.ReadNilBytes(bts) + if err != nil { + return + } + (*z).AppParams = nil + } else { + if (*z).AppParams == nil { + (*z).AppParams = new(basics.AppParams) + } + bts, err = (*z).AppParams.UnmarshalMsg(bts) + if err != nil { + err = msgp.WrapError(err, "struct-from-array", "AppParams") + return + } } } if zb0001 > 0 { @@ -113,16 +144,38 @@ func (z *AccountApplicationModel) UnmarshalMsg(bts []byte) (o []byte, err error) } switch string(field) { case "app-local-state": - bts, err = (*z).AppLocalState.UnmarshalMsg(bts) - if err != nil { - err = msgp.WrapError(err, "AppLocalState") - return + if msgp.IsNil(bts) { + bts, err = msgp.ReadNilBytes(bts) + if err != nil { + return + } + (*z).AppLocalState = nil + } else { + if (*z).AppLocalState == nil { + (*z).AppLocalState = new(basics.AppLocalState) + } + bts, err = (*z).AppLocalState.UnmarshalMsg(bts) + if err != nil { + err = msgp.WrapError(err, "AppLocalState") + return + } } case "app-params": - bts, err = (*z).AppParams.UnmarshalMsg(bts) - if err != nil { - err = msgp.WrapError(err, "AppParams") - return + if msgp.IsNil(bts) { + bts, err = msgp.ReadNilBytes(bts) + if err != nil { + return + } + (*z).AppParams = nil + } else { + if (*z).AppParams == nil { + (*z).AppParams = new(basics.AppParams) + } + bts, err = (*z).AppParams.UnmarshalMsg(bts) + if err != nil { + err = msgp.WrapError(err, "AppParams") + return + } } default: err = msgp.ErrNoField(string(field)) @@ -144,13 +197,24 @@ func (_ *AccountApplicationModel) CanUnmarshalMsg(z interface{}) bool { // Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message func (z *AccountApplicationModel) Msgsize() (s int) { - s = 1 + 16 + (*z).AppLocalState.Msgsize() + 11 + (*z).AppParams.Msgsize() + s = 1 + 16 + if (*z).AppLocalState == nil { + s += msgp.NilSize + } else { + s += (*z).AppLocalState.Msgsize() + } + s += 11 + if (*z).AppParams == nil { + s += msgp.NilSize + } else { + s += (*z).AppParams.Msgsize() + } return } // MsgIsZero returns whether this is a zero value func (z *AccountApplicationModel) MsgIsZero() bool { - return ((*z).AppLocalState.MsgIsZero()) && ((*z).AppParams.MsgIsZero()) + return ((*z).AppLocalState == nil) && ((*z).AppParams == nil) } // MarshalMsg implements msgp.Marshaler @@ -159,11 +223,11 @@ func (z *AccountAssetModel) MarshalMsg(b []byte) (o []byte) { // omitempty: check for empty values zb0001Len := uint32(2) var zb0001Mask uint8 /* 3 bits */ - if (*z).AssetHolding.MsgIsZero() { + if (*z).AssetHolding == nil { zb0001Len-- zb0001Mask |= 0x2 } - if (*z).AssetParams.MsgIsZero() { + if (*z).AssetParams == nil { zb0001Len-- zb0001Mask |= 0x4 } @@ -173,12 +237,20 @@ func (z *AccountAssetModel) MarshalMsg(b []byte) (o []byte) { if (zb0001Mask & 0x2) == 0 { // if not empty // string "asset-holding" o = append(o, 0xad, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2d, 0x68, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67) - o = (*z).AssetHolding.MarshalMsg(o) + if (*z).AssetHolding == nil { + o = msgp.AppendNil(o) + } else { + o = (*z).AssetHolding.MarshalMsg(o) + } } if (zb0001Mask & 0x4) == 0 { // if not empty // string "asset-params" o = append(o, 0xac, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2d, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73) - o = (*z).AssetParams.MarshalMsg(o) + if (*z).AssetParams == nil { + o = msgp.AppendNil(o) + } else { + o = (*z).AssetParams.MarshalMsg(o) + } } } return @@ -204,18 +276,40 @@ func (z *AccountAssetModel) UnmarshalMsg(bts []byte) (o []byte, err error) { } if zb0001 > 0 { zb0001-- - bts, err = (*z).AssetParams.UnmarshalMsg(bts) - if err != nil { - err = msgp.WrapError(err, "struct-from-array", "AssetParams") - return + if msgp.IsNil(bts) { + bts, err = msgp.ReadNilBytes(bts) + if err != nil { + return + } + (*z).AssetParams = nil + } else { + if (*z).AssetParams == nil { + (*z).AssetParams = new(basics.AssetParams) + } + bts, err = (*z).AssetParams.UnmarshalMsg(bts) + if err != nil { + err = msgp.WrapError(err, "struct-from-array", "AssetParams") + return + } } } if zb0001 > 0 { zb0001-- - bts, err = (*z).AssetHolding.UnmarshalMsg(bts) - if err != nil { - err = msgp.WrapError(err, "struct-from-array", "AssetHolding") - return + if msgp.IsNil(bts) { + bts, err = msgp.ReadNilBytes(bts) + if err != nil { + return + } + (*z).AssetHolding = nil + } else { + if (*z).AssetHolding == nil { + (*z).AssetHolding = new(basics.AssetHolding) + } + bts, err = (*z).AssetHolding.UnmarshalMsg(bts) + if err != nil { + err = msgp.WrapError(err, "struct-from-array", "AssetHolding") + return + } } } if zb0001 > 0 { @@ -242,16 +336,38 @@ func (z *AccountAssetModel) UnmarshalMsg(bts []byte) (o []byte, err error) { } switch string(field) { case "asset-params": - bts, err = (*z).AssetParams.UnmarshalMsg(bts) - if err != nil { - err = msgp.WrapError(err, "AssetParams") - return + if msgp.IsNil(bts) { + bts, err = msgp.ReadNilBytes(bts) + if err != nil { + return + } + (*z).AssetParams = nil + } else { + if (*z).AssetParams == nil { + (*z).AssetParams = new(basics.AssetParams) + } + bts, err = (*z).AssetParams.UnmarshalMsg(bts) + if err != nil { + err = msgp.WrapError(err, "AssetParams") + return + } } case "asset-holding": - bts, err = (*z).AssetHolding.UnmarshalMsg(bts) - if err != nil { - err = msgp.WrapError(err, "AssetHolding") - return + if msgp.IsNil(bts) { + bts, err = msgp.ReadNilBytes(bts) + if err != nil { + return + } + (*z).AssetHolding = nil + } else { + if (*z).AssetHolding == nil { + (*z).AssetHolding = new(basics.AssetHolding) + } + bts, err = (*z).AssetHolding.UnmarshalMsg(bts) + if err != nil { + err = msgp.WrapError(err, "AssetHolding") + return + } } default: err = msgp.ErrNoField(string(field)) @@ -273,11 +389,22 @@ func (_ *AccountAssetModel) CanUnmarshalMsg(z interface{}) bool { // Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message func (z *AccountAssetModel) Msgsize() (s int) { - s = 1 + 13 + (*z).AssetParams.Msgsize() + 14 + (*z).AssetHolding.Msgsize() + s = 1 + 13 + if (*z).AssetParams == nil { + s += msgp.NilSize + } else { + s += (*z).AssetParams.Msgsize() + } + s += 14 + if (*z).AssetHolding == nil { + s += msgp.NilSize + } else { + s += (*z).AssetHolding.Msgsize() + } return } // MsgIsZero returns whether this is a zero value func (z *AccountAssetModel) MsgIsZero() bool { - return ((*z).AssetParams.MsgIsZero()) && ((*z).AssetHolding.MsgIsZero()) + return ((*z).AssetParams == nil) && ((*z).AssetHolding == nil) } |