Skip to content

Commit

Permalink
Restore original validation logic
Browse files Browse the repository at this point in the history
  • Loading branch information
2opremio committed Jan 23, 2025
1 parent adb6fa0 commit acd480f
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 26 deletions.
29 changes: 14 additions & 15 deletions cmd/stellar-rpc/internal/methods/get_events.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,20 @@ func (g *GetEventsRequest) Valid(maxLimit uint) error {
return err
}

// Validate the paging limit (if it exists)
if g.Pagination != nil && g.Pagination.Cursor != nil {
if g.StartLedger != 0 || g.EndLedger != 0 {
return errors.New("ledger ranges and cursor cannot both be set")
}
} else if g.StartLedger <= 0 {
// Note: Endledger == 0 indicates it's unset (unlimited)
return errors.New("startLedger must be positive and <= than endLedger")
}

if g.Pagination != nil && g.Pagination.Limit > maxLimit {
return fmt.Errorf("limit must not exceed %d", maxLimit)
}

// Validate filters
if len(g.Filters) > maxFiltersLimit {
return errors.New("maximum 5 filters per request")
Expand All @@ -128,21 +142,6 @@ func (g *GetEventsRequest) Valid(maxLimit uint) error {
}
}

if g.Pagination != nil { //nolint:nestif
if g.Pagination.Cursor != nil && (g.StartLedger != 0 || g.EndLedger != 0) {
return errors.New("ledger ranges and cursor cannot both be set")
}
if g.Pagination.Limit > maxLimit {
return fmt.Errorf("limit must not exceed %d", maxLimit)
}
}
if g.StartLedger <= 0 {
return errors.New("startLedger must be positive")
}
if g.EndLedger > 0 && g.EndLedger < g.StartLedger {
return errors.New("startLedger must be <= endLedger")
}

return nil
}

Expand Down
19 changes: 8 additions & 11 deletions cmd/stellar-rpc/internal/methods/get_transactions.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,26 +36,23 @@ type GetTransactionsRequest struct {

// isValid checks the validity of the request parameters.
func (req GetTransactionsRequest) isValid(maxLimit uint, ledgerRange ledgerbucketwindow.LedgerRange) error {
if err := IsValidFormat(req.Format); err != nil {
return err
}
if req.Pagination != nil {
if req.Pagination.Cursor != "" && req.StartLedger != 0 {
if req.Pagination != nil && req.Pagination.Cursor != "" {
if req.StartLedger != 0 {
return errors.New("startLedger and cursor cannot both be set")
}
if req.Pagination.Limit > maxLimit {
return fmt.Errorf("limit must not exceed %d", maxLimit)
}
}
if req.StartLedger < ledgerRange.FirstLedger.Sequence || req.StartLedger > ledgerRange.LastLedger.Sequence {
} else if req.StartLedger < ledgerRange.FirstLedger.Sequence || req.StartLedger > ledgerRange.LastLedger.Sequence {
return fmt.Errorf(
"start ledger must be between the oldest ledger: %d and the latest ledger: %d for this rpc instance",
ledgerRange.FirstLedger.Sequence,
ledgerRange.LastLedger.Sequence,
)
}

return nil
if req.Pagination != nil && req.Pagination.Limit > maxLimit {
return fmt.Errorf("limit must not exceed %d", maxLimit)
}

return IsValidFormat(req.Format)
}

type TransactionDetails struct {
Expand Down

0 comments on commit acd480f

Please sign in to comment.