forked from cerc-io/laconicd-deprecated
Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e173f0a321 | ||
|
|
9bb3dc4216 |
+2
-2
@@ -163,7 +163,7 @@ func GetGQLAuction(auction *auctiontypes.Auction, bids []*auctiontypes.Bid) (*Au
|
||||
return &gqlAuction, nil
|
||||
}
|
||||
|
||||
func getReferences(ctx context.Context, resolver QueryResolver, r *registrytypes.RecordEncodable) ([]*Record, error) {
|
||||
func getReferences(ctx context.Context, resolver QueryResolver, r *registrytypes.ReadableRecord) ([]*Record, error) {
|
||||
var ids []string
|
||||
|
||||
// #nosec G705
|
||||
@@ -184,7 +184,7 @@ func getReferences(ctx context.Context, resolver QueryResolver, r *registrytypes
|
||||
return resolver.GetRecordsByIds(ctx, ids)
|
||||
}
|
||||
|
||||
func getAttributes(r *registrytypes.RecordEncodable) ([]*KeyValue, error) {
|
||||
func getAttributes(r *registrytypes.ReadableRecord) ([]*KeyValue, error) {
|
||||
return mapToKeyValuePairs(r.Attributes)
|
||||
}
|
||||
|
||||
|
||||
@@ -161,7 +161,7 @@ $ %s query %s list
|
||||
}
|
||||
|
||||
recordsList := res.GetRecords()
|
||||
records := make([]types.RecordEncodable, len(recordsList))
|
||||
records := make([]types.ReadableRecord, len(recordsList))
|
||||
for i, record := range res.GetRecords() {
|
||||
records[i] = record.ToReadableRecord()
|
||||
}
|
||||
|
||||
@@ -370,8 +370,8 @@ $ %s tx %s delete-name [crn]
|
||||
}
|
||||
|
||||
// GetPayloadFromFile Load payload object from YAML file.
|
||||
func GetPayloadFromFile(filePath string) (*types.PayloadEncodable, error) {
|
||||
var payload types.PayloadEncodable
|
||||
func GetPayloadFromFile(filePath string) (*types.ReadablePayload, error) {
|
||||
var payload types.ReadablePayload
|
||||
|
||||
data, err := os.ReadFile(filePath) // #nosec G304
|
||||
if err != nil {
|
||||
|
||||
@@ -60,7 +60,7 @@ func (s *IntegrationTestSuite) TestGRPCQueryParams() {
|
||||
}
|
||||
}
|
||||
|
||||
//nolint: all
|
||||
// nolint: all
|
||||
func (s *IntegrationTestSuite) TestGRPCQueryWhoIs() {
|
||||
val := s.network.Validators[0]
|
||||
sr := s.Require()
|
||||
@@ -180,7 +180,7 @@ func (s *IntegrationTestSuite) TestGRPCQueryLookup() {
|
||||
}
|
||||
}
|
||||
|
||||
//nolint: all
|
||||
// nolint: all
|
||||
func (s *IntegrationTestSuite) TestGRPCQueryRecordExpiryQueue() {
|
||||
val := s.network.Validators[0]
|
||||
sr := s.Require()
|
||||
@@ -252,7 +252,7 @@ func (s *IntegrationTestSuite) TestGRPCQueryRecordExpiryQueue() {
|
||||
}
|
||||
}
|
||||
|
||||
//nolint: all
|
||||
// nolint: all
|
||||
func (s *IntegrationTestSuite) TestGRPCQueryAuthorityExpiryQueue() {
|
||||
val := s.network.Validators[0]
|
||||
sr := s.Require()
|
||||
@@ -324,7 +324,7 @@ func (s *IntegrationTestSuite) TestGRPCQueryAuthorityExpiryQueue() {
|
||||
}
|
||||
}
|
||||
|
||||
//nolint: all
|
||||
// nolint: all
|
||||
func (s *IntegrationTestSuite) TestGRPCQueryListRecords() {
|
||||
val := s.network.Validators[0]
|
||||
sr := s.Require()
|
||||
@@ -433,7 +433,7 @@ func (s *IntegrationTestSuite) TestGRPCQueryGetRecordByID() {
|
||||
}
|
||||
out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, args)
|
||||
sr.NoError(err)
|
||||
var records []nstypes.RecordEncodable
|
||||
var records []nstypes.ReadableRecord
|
||||
err = json.Unmarshal(out.Bytes(), &records)
|
||||
sr.NoError(err)
|
||||
return records[0].ID
|
||||
|
||||
@@ -114,7 +114,7 @@ func (s *IntegrationTestSuite) TestGetCmdQueryForRecords() {
|
||||
sr.Error(err)
|
||||
} else {
|
||||
sr.NoError(err)
|
||||
var records []types.RecordEncodable
|
||||
var records []types.ReadableRecord
|
||||
err := json.Unmarshal(out.Bytes(), &records)
|
||||
sr.NoError(err)
|
||||
sr.Equal(tc.noOfRecords, len(records))
|
||||
|
||||
@@ -606,7 +606,7 @@ func (s *IntegrationTestSuite) TestGetCmdDissociateBond() {
|
||||
cmd = cli.GetCmdList()
|
||||
out, err = clitestutil.ExecTestCLICmd(clientCtx, cmd, args)
|
||||
sr.NoError(err)
|
||||
var records []nstypes.RecordEncodable
|
||||
var records []nstypes.ReadableRecord
|
||||
err = json.Unmarshal(out.Bytes(), &records)
|
||||
sr.NoError(err)
|
||||
return records[0].ID
|
||||
@@ -848,7 +848,7 @@ func (s *IntegrationTestSuite) TestGetCmdAssociateBond() {
|
||||
cmd = cli.GetCmdList()
|
||||
out, err = clitestutil.ExecTestCLICmd(clientCtx, cmd, args)
|
||||
sr.NoError(err)
|
||||
var records []nstypes.RecordEncodable
|
||||
var records []nstypes.ReadableRecord
|
||||
err = json.Unmarshal(out.Bytes(), &records)
|
||||
sr.NoError(err)
|
||||
|
||||
|
||||
@@ -236,9 +236,9 @@ func (k Keeper) GetRecordExpiryQueue(ctx sdk.Context) []*types.ExpiryQueueRecord
|
||||
}
|
||||
|
||||
// ProcessSetRecord creates a record.
|
||||
func (k Keeper) ProcessSetRecord(ctx sdk.Context, msg types.MsgSetRecord) (*types.RecordEncodable, error) {
|
||||
func (k Keeper) ProcessSetRecord(ctx sdk.Context, msg types.MsgSetRecord) (*types.ReadableRecord, error) {
|
||||
payload := msg.Payload.ToReadablePayload()
|
||||
record := types.RecordEncodable{Attributes: payload.Record, BondID: msg.BondId}
|
||||
record := types.ReadableRecord{Attributes: payload.Record, BondID: msg.BondId}
|
||||
|
||||
// Check signatures.
|
||||
resourceSignBytes, _ := record.GetSignBytes()
|
||||
@@ -279,7 +279,7 @@ func (k Keeper) ProcessSetRecord(ctx sdk.Context, msg types.MsgSetRecord) (*type
|
||||
return &record, nil
|
||||
}
|
||||
|
||||
func (k Keeper) processRecord(ctx sdk.Context, record *types.RecordEncodable, isRenewal bool) error {
|
||||
func (k Keeper) processRecord(ctx sdk.Context, record *types.ReadableRecord, isRenewal bool) error {
|
||||
params := k.GetParams(ctx)
|
||||
rent := params.RecordRent
|
||||
|
||||
@@ -300,8 +300,7 @@ func (k Keeper) processRecord(ctx sdk.Context, record *types.RecordEncodable, is
|
||||
}
|
||||
k.PutRecord(ctx, recordObj)
|
||||
|
||||
// TODO process type here
|
||||
// recordType, ok := record.Attributes["type"].(string)
|
||||
// TODO look up/validate record type here
|
||||
|
||||
if err := k.processAttributes(ctx, record.Attributes, record.ID, ""); err != nil {
|
||||
return err
|
||||
|
||||
+23
-27
@@ -13,19 +13,27 @@ const (
|
||||
AuthorityUnderAuction = "auction"
|
||||
)
|
||||
|
||||
// TODO if schema records are to be more permissive than allowing a map of fields, this type will
|
||||
// become specific to content records. schema records will either occupy a new message or have new
|
||||
// more general purpose helper types.
|
||||
|
||||
// PayloadEncodable represents a signed record payload that can be serialized from/to YAML.
|
||||
type PayloadEncodable struct {
|
||||
// ReadablePayload represents a signed record payload that can be serialized from/to YAML.
|
||||
type ReadablePayload struct {
|
||||
Record map[string]interface{} `json:"record"`
|
||||
Signatures []Signature `json:"signatures"`
|
||||
}
|
||||
|
||||
// ReadableRecord represents a WNS record.
|
||||
type ReadableRecord struct {
|
||||
ID string `json:"id,omitempty"`
|
||||
Names []string `json:"names,omitempty"`
|
||||
BondID string `json:"bondId,omitempty"`
|
||||
CreateTime string `json:"createTime,omitempty"`
|
||||
ExpiryTime string `json:"expiryTime,omitempty"`
|
||||
Deleted bool `json:"deleted,omitempty"`
|
||||
Owners []string `json:"owners,omitempty"`
|
||||
Attributes map[string]interface{} `json:"attributes,omitempty"`
|
||||
}
|
||||
|
||||
// ToPayload converts PayloadEncodable to Payload object.
|
||||
// Why? Because go-amino can't handle maps: https://github.com/tendermint/go-amino/issues/4.
|
||||
func (payloadObj *PayloadEncodable) ToPayload() Payload {
|
||||
func (payloadObj *ReadablePayload) ToPayload() Payload {
|
||||
// Note: record directly contains the attributes here
|
||||
attributes := helpers.MarshalMapToJSONBytes(payloadObj.Record)
|
||||
payload := Payload{
|
||||
@@ -41,8 +49,8 @@ func (payloadObj *PayloadEncodable) ToPayload() Payload {
|
||||
}
|
||||
|
||||
// ToReadablePayload converts Payload to a serializable object
|
||||
func (payload Payload) ToReadablePayload() PayloadEncodable {
|
||||
var encodable PayloadEncodable
|
||||
func (payload Payload) ToReadablePayload() ReadablePayload {
|
||||
var encodable ReadablePayload
|
||||
|
||||
encodable.Record = helpers.UnMarshalMapFromJSONBytes(payload.Record.Attributes)
|
||||
encodable.Signatures = payload.Signatures
|
||||
@@ -51,8 +59,8 @@ func (payload Payload) ToReadablePayload() PayloadEncodable {
|
||||
}
|
||||
|
||||
// ToReadableRecord converts Record to a serializable object
|
||||
func (r *Record) ToReadableRecord() RecordEncodable {
|
||||
var resourceObj RecordEncodable
|
||||
func (r *Record) ToReadableRecord() ReadableRecord {
|
||||
var resourceObj ReadableRecord
|
||||
|
||||
resourceObj.ID = r.Id
|
||||
resourceObj.BondID = r.BondId
|
||||
@@ -66,21 +74,9 @@ func (r *Record) ToReadableRecord() RecordEncodable {
|
||||
return resourceObj
|
||||
}
|
||||
|
||||
// RecordEncodable represents a WNS record.
|
||||
type RecordEncodable struct {
|
||||
ID string `json:"id,omitempty"`
|
||||
Names []string `json:"names,omitempty"`
|
||||
BondID string `json:"bondId,omitempty"`
|
||||
CreateTime string `json:"createTime,omitempty"`
|
||||
ExpiryTime string `json:"expiryTime,omitempty"`
|
||||
Deleted bool `json:"deleted,omitempty"`
|
||||
Owners []string `json:"owners,omitempty"`
|
||||
Attributes map[string]interface{} `json:"attributes,omitempty"`
|
||||
}
|
||||
|
||||
// ToRecordObj converts Record to RecordObj.
|
||||
// Why? Because go-amino can't handle maps: https://github.com/tendermint/go-amino/issues/4.
|
||||
func (r *RecordEncodable) ToRecordObj() (Record, error) {
|
||||
func (r *ReadableRecord) ToRecordObj() (Record, error) {
|
||||
attributes := helpers.MarshalMapToJSONBytes(r.Attributes)
|
||||
|
||||
var resourceObj Record
|
||||
@@ -97,7 +93,7 @@ func (r *RecordEncodable) ToRecordObj() (Record, error) {
|
||||
}
|
||||
|
||||
// CanonicalJSON returns the canonical JSON representation of the record.
|
||||
func (r *RecordEncodable) CanonicalJSON() []byte {
|
||||
func (r *ReadableRecord) CanonicalJSON() []byte {
|
||||
bytes, err := canonicalJson.Marshal(r.Attributes)
|
||||
if err != nil {
|
||||
panic("Record marshal error.")
|
||||
@@ -107,7 +103,7 @@ func (r *RecordEncodable) CanonicalJSON() []byte {
|
||||
}
|
||||
|
||||
// GetSignBytes generates a record hash to be signed.
|
||||
func (r *RecordEncodable) GetSignBytes() ([]byte, []byte) {
|
||||
func (r *ReadableRecord) GetSignBytes() ([]byte, []byte) {
|
||||
// Double SHA256 hash.
|
||||
|
||||
// Input to the first round of hashing.
|
||||
@@ -127,7 +123,7 @@ func (r *RecordEncodable) GetSignBytes() ([]byte, []byte) {
|
||||
}
|
||||
|
||||
// GetCID gets the record CID.
|
||||
func (r *RecordEncodable) GetCID() (string, error) {
|
||||
func (r *ReadableRecord) GetCID() (string, error) {
|
||||
id, err := helpers.GetCid(r.CanonicalJSON())
|
||||
if err != nil {
|
||||
return "", err
|
||||
|
||||
Reference in New Issue
Block a user