Fix vaa parse endpoint (#1078)
This commit is contained in:
parent
d8aeb72cb6
commit
c4707fbb69
|
@ -250,7 +250,7 @@ func (s *Service) discardVaaNotIndexed(ctx context.Context, chain sdk.ChainID, e
|
|||
}
|
||||
|
||||
// ParseVaa parse a vaa payload.
|
||||
func (s *Service) ParseVaa(ctx context.Context, vaaByte []byte) (vaaPayloadParser.ParseVaaWithStandarizedPropertiesdResponse, error) {
|
||||
func (s *Service) ParseVaa(ctx context.Context, vaaByte []byte) (any, error) {
|
||||
// unmarshal vaa
|
||||
vaa, err := sdk.Unmarshal(vaaByte)
|
||||
if err != nil {
|
||||
|
@ -263,11 +263,11 @@ func (s *Service) ParseVaa(ctx context.Context, vaaByte []byte) (vaaPayloadParse
|
|||
parsedVaa, err := s.parseVaaFunc(vaa)
|
||||
if err != nil {
|
||||
if errors.Is(err, vaaPayloadParser.ErrNotFound) {
|
||||
return vaaPayloadParser.ParseVaaWithStandarizedPropertiesdResponse{}, errs.ErrNotFound
|
||||
return nil, errs.ErrNotFound
|
||||
}
|
||||
requestID := fmt.Sprintf("%v", ctx.Value("requestid"))
|
||||
s.logger.Error("error parse vaa", zap.Error(err), zap.String("requestID", requestID))
|
||||
return vaaPayloadParser.ParseVaaWithStandarizedPropertiesdResponse{}, errs.ErrInternalError
|
||||
return nil, errs.ErrInternalError
|
||||
}
|
||||
return *parsedVaa, nil
|
||||
return parsedVaa, nil
|
||||
}
|
||||
|
|
|
@ -356,8 +356,8 @@ func NewRateLimiter(ctx context.Context, cfg *config.AppConfig, logger *zap.Logg
|
|||
// NewVaaParserFunc returns a function to parse VAA payload.
|
||||
func NewVaaParserFunc(cfg *config.AppConfig, logger *zap.Logger) (vaaPayloadParser.ParseVaaFunc, error) {
|
||||
if cfg.RunMode == config.RunModeDevelopmernt && !cfg.VaaPayloadParser.Enabled {
|
||||
return func(vaa *sdk.VAA) (*vaaPayloadParser.ParseVaaWithStandarizedPropertiesdResponse, error) {
|
||||
return &vaaPayloadParser.ParseVaaWithStandarizedPropertiesdResponse{}, nil
|
||||
return func(vaa *sdk.VAA) (any, error) {
|
||||
return nil, nil
|
||||
}, nil
|
||||
}
|
||||
vaaPayloadParserClient, err := vaaPayloadParser.NewParserVAAAPIClient(cfg.VaaPayloadParser.Timeout,
|
||||
|
@ -365,5 +365,5 @@ func NewVaaParserFunc(cfg *config.AppConfig, logger *zap.Logger) (vaaPayloadPars
|
|||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to initialize VAA parser client: %w", err)
|
||||
}
|
||||
return vaaPayloadParserClient.ParseVaaWithStandarizedProperties, nil
|
||||
return vaaPayloadParserClient.ParseVaa, nil
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ type ParserVAAAPIClient struct {
|
|||
}
|
||||
|
||||
// ParseVaaFunc represent a parse vaa function.
|
||||
type ParseVaaFunc func(vaa *sdk.VAA) (*ParseVaaWithStandarizedPropertiesdResponse, error)
|
||||
type ParseVaaFunc func(vaa *sdk.VAA) (any, error)
|
||||
|
||||
// NewParserVAAAPIClient create new instances of ParserVAAAPIClient.
|
||||
func NewParserVAAAPIClient(timeout int64, baseURL string, logger *zap.Logger) (ParserVAAAPIClient, error) {
|
||||
|
@ -167,3 +167,37 @@ func (c *ParserVAAAPIClient) ParseVaaWithStandarizedProperties(vaa *sdk.VAA) (*P
|
|||
return nil, ErrInternalError
|
||||
}
|
||||
}
|
||||
|
||||
// ParseVaa invoke the endpoint to parse a VAA from the VAAParserAPI.
|
||||
func (c *ParserVAAAPIClient) ParseVaa(vaa *sdk.VAA) (any, error) {
|
||||
endpointUrl := fmt.Sprintf("%s/vaas/parse", c.BaseURL)
|
||||
|
||||
vaaBytes, err := vaa.Marshal()
|
||||
if err != nil {
|
||||
return nil, errors.New("error marshalling vaa")
|
||||
}
|
||||
|
||||
body := base64.StdEncoding.EncodeToString(vaaBytes)
|
||||
response, err := c.Client.Post(endpointUrl, "text/plain", bytes.NewBuffer([]byte(body)))
|
||||
if err != nil {
|
||||
c.Logger.Error("error call parse vaa endpoint", zap.Error(err), zap.Uint16("chainID", uint16(vaa.EmitterChain)),
|
||||
zap.String("address", vaa.EmitterAddress.String()), zap.Uint64("sequence", vaa.Sequence))
|
||||
return nil, ErrCallEndpoint
|
||||
}
|
||||
defer response.Body.Close()
|
||||
|
||||
switch response.StatusCode {
|
||||
case http.StatusCreated:
|
||||
var parsedVAA any
|
||||
json.NewDecoder(response.Body).Decode(&parsedVAA)
|
||||
return &parsedVAA, nil
|
||||
case http.StatusNotFound:
|
||||
return nil, ErrNotFound
|
||||
case http.StatusBadRequest:
|
||||
return nil, ErrBadRequest
|
||||
case http.StatusUnprocessableEntity:
|
||||
return nil, ErrUnproceesableEntity
|
||||
default:
|
||||
return nil, ErrInternalError
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue