MCPcopy Create free account
hub / github.com/AssetMantle/node / handler

Function handler

utilities/rest/sign/handler.go:19–100  ·  view source on GitHub ↗
(context client.Context)

Source from the content-addressed store, hash-verified

17)
18
19func handler(context client.Context) http.HandlerFunc {
20 return func(responseWriter http.ResponseWriter, httpRequest *http.Request) {
21 var request request
22 if !rest.ReadRESTReq(responseWriter, httpRequest, context.LegacyAmino, &request) {
23 rest.WriteErrorResponse(responseWriter, http.StatusBadRequest, "")
24 return
25 }
26
27 if request.BaseRequest.ChainID == "" {
28 request.BaseRequest.ChainID = viper.GetString(flags.FlagChainID)
29 if request.BaseRequest.ChainID == "" {
30 rest.WriteErrorResponse(responseWriter, http.StatusBadRequest, "Chain-ID required but not specified")
31 return
32 }
33 }
34
35 context = context.WithFrom(request.BaseRequest.From).WithChainID(request.BaseRequest.ChainID)
36
37 keyInfo, err := context.Keyring.Key(request.BaseRequest.From)
38 if err != nil {
39 rest.WriteErrorResponse(responseWriter, http.StatusBadRequest, err.Error())
40 return
41 }
42 context = context.WithFromAddress(keyInfo.GetAddress())
43 account, err := context.AccountRetriever.GetAccount(context, keyInfo.GetAddress())
44 if err != nil {
45 rest.WriteErrorResponse(responseWriter, http.StatusBadRequest, err.Error())
46 return
47 }
48
49 txFactory := tx.Factory{}.WithKeybase(context.Keyring).WithTxConfig(context.TxConfig).WithAccountRetriever(context.AccountRetriever).WithAccountNumber(account.GetAccountNumber()).WithSequence(account.GetSequence()).WithFees(request.BaseRequest.Fees.String())
50 txFactory = txFactory.WithChainID(request.BaseRequest.ChainID)
51 txBuilder, err := tx.BuildUnsignedTx(txFactory, request.StdTx.GetMsgs()...)
52 if err != nil {
53 rest.WriteErrorResponse(responseWriter, http.StatusBadRequest, err.Error())
54 return
55 }
56
57 signerData := authSigning.SignerData{
58 ChainID: context.ChainID,
59 AccountNumber: account.GetAccountNumber(),
60 Sequence: account.GetSequence(),
61 }
62 signatureData := signing.SingleSignatureData{
63 SignMode: context.TxConfig.SignModeHandler().DefaultMode(),
64 Signature: nil,
65 }
66 signature := signing.SignatureV2{
67 PubKey: account.GetPubKey(),
68 Data: &signatureData,
69 Sequence: txFactory.Sequence(),
70 }
71
72 signMode := context.TxConfig.SignModeHandler().DefaultMode()
73 bytesToSign, err := context.TxConfig.SignModeHandler().GetSignBytes(signMode, signerData, txBuilder.GetTx())
74 if err != nil {
75 rest.WriteErrorResponse(responseWriter, http.StatusBadRequest, err.Error())
76 return

Callers 3

RegisterRESTRoutesFunction · 0.70
TestHandlerFunction · 0.70
RegisterRESTRoutesFunction · 0.50

Calls 2

ErrorMethod · 0.80
newResponseFunction · 0.70

Tested by 1

TestHandlerFunction · 0.56