/
request.go
111 lines (102 loc) · 4.65 KB
/
request.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/*
Copyright [2019] - [2020], PERSISTENCE TECHNOLOGIES PTE. LTD. and the persistenceSDK contributors
SPDX-License-Identifier: Apache-2.0
*/
package issue
import (
"encoding/json"
"github.com/asaskevich/govalidator"
"github.com/cosmos/cosmos-sdk/client/context"
sdkTypes "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/rest"
"github.com/persistenceOne/persistenceSDK/constants/flags"
"github.com/persistenceOne/persistenceSDK/schema/helpers"
"github.com/persistenceOne/persistenceSDK/schema/types/base"
)
type transactionRequest struct {
BaseReq rest.BaseReq `json:"baseReq"`
To string `json:"to" valid:"required~required field to missing matches(^commit[a-z0-9]{39}$)~invalid field to"`
FromID string `json:"fromID" valid:"required~required field fromID missing matches(^[a-z]$)~invalid field fromID "`
ClassificationID string `json:"classificationID" valid:"required~required field classificationID missing matches(^[A-Za-z]$)~invalid field classificationID"`
ImmutableMetaProperties string `json:"immutableMetaProperties" valid:"required~required field immutableMetaProperties missing matches(^[A-Za-z]$)~invalid field immutableMetaProperties"`
ImmutableProperties string `json:"immutableProperties" valid:"required~required field immutableProperties missing matches(^[A-Za-z]$)~invalid field immutableProperties"`
MutableMetaProperties string `json:"mutableMetaProperties" valid:"required~required field mutableMetaProperties missing matches(^[A-Za-z]$)~invalid field mutableMetaProperties"`
MutableProperties string `json:"mutableProperties" valid:"required~required field mutableProperties missing matches(^[A-Za-z]$)~invalid field mutableProperties"`
}
var _ helpers.TransactionRequest = (*transactionRequest)(nil)
func (transactionRequest transactionRequest) Validate() error {
_, Error := govalidator.ValidateStruct(transactionRequest)
return Error
}
func (transactionRequest transactionRequest) FromCLI(cliCommand helpers.CLICommand, cliContext context.CLIContext) (helpers.TransactionRequest, error) {
return newTransactionRequest(
cliCommand.ReadBaseReq(cliContext),
cliCommand.ReadString(flags.To),
cliCommand.ReadString(flags.FromID),
cliCommand.ReadString(flags.ClassificationID),
cliCommand.ReadString(flags.ImmutableMetaProperties),
cliCommand.ReadString(flags.ImmutableProperties),
cliCommand.ReadString(flags.MutableMetaProperties),
cliCommand.ReadString(flags.MutableProperties),
), nil
}
func (transactionRequest transactionRequest) FromJSON(rawMessage json.RawMessage) (helpers.TransactionRequest, error) {
if Error := json.Unmarshal(rawMessage, &transactionRequest); Error != nil {
return nil, Error
}
return transactionRequest, nil
}
func (transactionRequest transactionRequest) GetBaseReq() rest.BaseReq {
return transactionRequest.BaseReq
}
func (transactionRequest transactionRequest) MakeMsg() (sdkTypes.Msg, error) {
from, Error := sdkTypes.AccAddressFromBech32(transactionRequest.GetBaseReq().From)
if Error != nil {
return nil, Error
}
to, Error := sdkTypes.AccAddressFromBech32(transactionRequest.To)
if Error != nil {
return nil, Error
}
immutableMetaProperties, Error := base.ReadMetaProperties(transactionRequest.ImmutableMetaProperties)
if Error != nil {
return nil, Error
}
immutableProperties, Error := base.ReadProperties(transactionRequest.ImmutableProperties)
if Error != nil {
return nil, Error
}
mutableMetaProperties, Error := base.ReadMetaProperties(transactionRequest.MutableMetaProperties)
if Error != nil {
return nil, Error
}
mutableProperties, Error := base.ReadProperties(transactionRequest.MutableProperties)
if Error != nil {
return nil, Error
}
return newMessage(
from,
to,
base.NewID(transactionRequest.FromID),
base.NewID(transactionRequest.ClassificationID),
immutableMetaProperties,
immutableProperties,
mutableMetaProperties,
mutableProperties,
), nil
}
func requestPrototype() helpers.TransactionRequest {
return transactionRequest{}
}
func newTransactionRequest(baseReq rest.BaseReq, to string, fromID string, classificationID string, immutableMetaProperties string, immutableProperties string, mutableMetaProperties string, mutableProperties string) helpers.TransactionRequest {
return transactionRequest{
BaseReq: baseReq,
To: to,
FromID: fromID,
ClassificationID: classificationID,
ImmutableMetaProperties: immutableMetaProperties,
ImmutableProperties: immutableProperties,
MutableMetaProperties: mutableMetaProperties,
MutableProperties: mutableProperties,
}
}