summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchris erway <chris.erway@algorand.com>2022-02-24 08:44:16 -0500
committerchris erway <chris.erway@algorand.com>2022-02-24 08:44:16 -0500
commitd498d79a797ac1f32611d167236696dbfed647ed (patch)
treec1b14a205d57ad48982d46849a5246565da91fd1
parentf7b26de2680226c13ed795460d3e0eb4ecb121b5 (diff)
update for CR
-rw-r--r--cmd/goal/application.go8
-rw-r--r--cmd/goal/interact.go8
-rw-r--r--daemon/algod/api/algod.oas2.json4
-rw-r--r--daemon/algod/api/spec/v2/model.go28
-rw-r--r--daemon/algod/api/spec/v2/msgp_gen.go215
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)
}