Documentation
¶
Index ¶
- Constants
- Variables
- func AssertOKResponse(t *testing.T, req *http.Request, expectedRespBody string, backend *mock.API)
- func AssertResponse(t *testing.T, req *http.Request, status int, expectedRespBody string, ...)
- func ExecuteExperimentalRequest(req *http.Request, backend extended.API) *httptest.ResponseRecorder
- func ExecuteLegacyWsRequest(t *testing.T, req *http.Request, stateStreamApi state_stream.API, ...)
- func ExecuteRequest(req *http.Request, backend access.API) *httptest.ResponseRecorder
- func MethodURLToRoute(method, url string) (string, error)
- type RouterBuilder
- func (b *RouterBuilder) AddExperimentalRoutes(backend extended.API, chain flow.Chain, maxRequestSize int64, ...) *RouterBuilder
- func (b *RouterBuilder) AddLegacyWebsocketsRoutes(stateStreamApi state_stream.API, chain flow.Chain, ...) *RouterBuilderdeprecated
- func (b *RouterBuilder) AddRestRoutes(backend access.API, chain flow.Chain, maxRequestSize int64, ...) *RouterBuilder
- func (b *RouterBuilder) AddWebsocketsRoute(ctx irrecoverable.SignalerContext, chain flow.Chain, config websockets.Config, ...) *RouterBuilder
- func (b *RouterBuilder) Build() *mux.Router
- type TestHijackResponseRecorder
Constants ¶
const ( ExpandableFieldPayload = "payload" ExpandableExecutionResult = "execution_result" SealedHeightQueryParam = "sealed" FinalHeightQueryParam = "final" StartHeightQueryParam = "start_height" EndHeightQueryParam = "end_height" HeightQueryParam = "height" StartBlockIdQueryParam = "start_block_id" EventTypesQueryParams = "event_types" AddressesQueryParams = "addresses" ContractsQueryParams = "contracts" HeartbeatIntervalQueryParam = "heartbeat_interval" )
Variables ¶
var ExperimentalRoutes = []experimentalRoute{{ Method: http.MethodGet, Pattern: "/accounts/{address}/transactions", Name: "getAccountTransactions", Handler: routes.GetAccountTransactions, }, { Method: http.MethodGet, Pattern: "/accounts/{address}/ft/transfers", Name: "getAccountFungibleTokenTransfers", Handler: routes.GetAccountFungibleTokenTransfers, }, { Method: http.MethodGet, Pattern: "/accounts/{address}/nft/transfers", Name: "getAccountNonFungibleTokenTransfers", Handler: routes.GetAccountNonFungibleTokenTransfers, }, { Method: http.MethodGet, Pattern: "/scheduled", Name: "getScheduledTransactions", Handler: routes.GetScheduledTransactions, }, { Method: http.MethodGet, Pattern: "/scheduled/transaction/{id}", Name: "getScheduledTransaction", Handler: routes.GetScheduledTransaction, }, { Method: http.MethodGet, Pattern: "/accounts/{address}/scheduled", Name: "getScheduledTransactionsByAddress", Handler: routes.GetScheduledTransactionsByAddress, }, { Method: http.MethodGet, Pattern: "/contracts", Name: "getContracts", Handler: routes.GetContracts, }, { Method: http.MethodGet, Pattern: "/accounts/{address}/contracts", Name: "getContractsByAddress", Handler: routes.GetContractsByAddress, }, { Method: http.MethodGet, Pattern: "/contracts/{identifier}", Name: "getContract", Handler: routes.GetContract, }, { Method: http.MethodGet, Pattern: "/contracts/{identifier}/deployments", Name: "getContractDeployments", Handler: routes.GetContractDeployments, }}
Routes lists all experimental API routes.
var Routes = []route{{ Method: http.MethodGet, Pattern: "/transactions/{id}", Name: "getTransactionByID", Handler: routes.GetTransactionByID, }, { Method: http.MethodGet, Pattern: "/transactions", Name: "getTransactionsByBlock", Handler: routes.GetTransactionsByBlock, }, { Method: http.MethodPost, Pattern: "/transactions", Name: "createTransaction", Handler: routes.CreateTransaction, }, { Method: http.MethodGet, Pattern: "/transaction_results/{id}", Name: "getTransactionResultByID", Handler: routes.GetTransactionResultByID, }, { Method: http.MethodGet, Pattern: "/transaction_results", Name: "getTransactionResultsByBlock", Handler: routes.GetTransactionResultsByBlock, }, { Method: http.MethodGet, Pattern: "/blocks/{id}", Name: "getBlocksByIDs", Handler: routes.GetBlocksByIDs, }, { Method: http.MethodGet, Pattern: "/blocks", Name: "getBlocksByHeight", Handler: routes.GetBlocksByHeight, }, { Method: http.MethodGet, Pattern: "/blocks/{id}/payload", Name: "getBlockPayloadByID", Handler: routes.GetBlockPayloadByID, }, { Method: http.MethodGet, Pattern: "/execution_results/{id}", Name: "getExecutionResultByID", Handler: routes.GetExecutionResultByID, }, { Method: http.MethodGet, Pattern: "/execution_results", Name: "getExecutionResultByBlockID", Handler: routes.GetExecutionResultsByBlockIDs, }, { Method: http.MethodGet, Pattern: "/execution_receipts", Name: "getExecutionReceiptsByBlockID", Handler: routes.GetExecutionReceiptsByBlockID, }, { Method: http.MethodGet, Pattern: "/execution_receipts/results/{id}", Name: "getExecutionReceiptsByResultID", Handler: routes.GetExecutionReceiptsByResultID, }, { Method: http.MethodGet, Pattern: "/collections/{id}", Name: "getCollectionByID", Handler: routes.GetCollectionByID, }, { Method: http.MethodPost, Pattern: "/scripts", Name: "executeScript", Handler: routes.ExecuteScript, }, { Method: http.MethodGet, Pattern: "/accounts/{address}", Name: "getAccount", Handler: routes.GetAccount, }, { Method: http.MethodGet, Pattern: "/accounts/{address}/balance", Name: "getAccountBalance", Handler: routes.GetAccountBalance, }, { Method: http.MethodGet, Pattern: "/accounts/{address}/keys/{index}", Name: "getAccountKeyByIndex", Handler: routes.GetAccountKeyByIndex, }, { Method: http.MethodGet, Pattern: "/accounts/{address}/keys", Name: "getAccountKeys", Handler: routes.GetAccountKeys, }, { Method: http.MethodGet, Pattern: "/events", Name: "getEvents", Handler: routes.GetEvents, }, { Method: http.MethodGet, Pattern: "/network/parameters", Name: "getNetworkParameters", Handler: routes.GetNetworkParameters, }, { Method: http.MethodGet, Pattern: "/node_version_info", Name: "getNodeVersionInfo", Handler: routes.GetNodeVersionInfo, }}
var WSLegacyRoutes = []wsLegacyRoute{{ Method: http.MethodGet, Pattern: "/subscribe_events", Name: "subscribeEvents", Handler: routes.SubscribeEvents, }}
Functions ¶
func AssertOKResponse ¶
func AssertResponse ¶
func ExecuteExperimentalRequest ¶ added in v0.48.0
ExecuteExperimentalRequest builds a router with experimental routes and executes the given request. Named routes from the main v1 API (e.g. getTransactionByID) are registered as no-ops so that the link generator can produce proper expandable links without requiring a full access backend.
func ExecuteLegacyWsRequest ¶
func ExecuteLegacyWsRequest(t *testing.T, req *http.Request, stateStreamApi state_stream.API, responseRecorder *TestHijackResponseRecorder, chain flow.Chain)
func ExecuteRequest ¶
func MethodURLToRoute ¶ added in v0.45.0
MethodURLToRoute matches (method, url) against compiled route regexes and returns the route name.
Types ¶
type RouterBuilder ¶
type RouterBuilder struct {
LinkGenerator models.LinkGenerator
// contains filtered or unexported fields
}
RouterBuilder is a utility for building HTTP routers with common middleware and routes.
func NewRouterBuilder ¶
func NewRouterBuilder( logger zerolog.Logger, restCollector module.RestMetrics, ) *RouterBuilder
NewRouterBuilder creates a new RouterBuilder instance with common middleware and a v1 sub-router.
func (*RouterBuilder) AddExperimentalRoutes ¶ added in v0.48.0
func (b *RouterBuilder) AddExperimentalRoutes( backend extended.API, chain flow.Chain, maxRequestSize int64, maxResponseSize int64, ) *RouterBuilder
AddExperimentalRoutes adds experimental API routes under the /experimental prefix.
func (*RouterBuilder) AddLegacyWebsocketsRoutes
deprecated
func (b *RouterBuilder) AddLegacyWebsocketsRoutes( stateStreamApi state_stream.API, chain flow.Chain, stateStreamConfig backend.Config, maxRequestSize int64, maxResponseSize int64, limiter *limiters.ConcurrencyLimiter, ) *RouterBuilder
AddLegacyWebsocketsRoutes adds WebSocket routes to the router.
Deprecated: Use AddWebsocketsRoute instead, which allows managing multiple streams with a single endpoint.
func (*RouterBuilder) AddRestRoutes ¶
func (b *RouterBuilder) AddRestRoutes( backend access.API, chain flow.Chain, maxRequestSize int64, maxResponseSize int64, ) *RouterBuilder
AddRestRoutes adds rest routes to the router.
func (*RouterBuilder) AddWebsocketsRoute ¶
func (b *RouterBuilder) AddWebsocketsRoute( ctx irrecoverable.SignalerContext, chain flow.Chain, config websockets.Config, maxRequestSize int64, maxResponseSize int64, dataProviderFactory dp.DataProviderFactory, limiter *limiters.ConcurrencyLimiter, ) *RouterBuilder
func (*RouterBuilder) Build ¶
func (b *RouterBuilder) Build() *mux.Router
type TestHijackResponseRecorder ¶
type TestHijackResponseRecorder struct {
*httptest.ResponseRecorder
Closed chan struct{}
ResponseBuff *bytes.Buffer
}
TestHijackResponseRecorder is a custom ResponseRecorder that implements the http.Hijacker interface for testing WebSocket connections and hijacking.
func NewTestHijackResponseRecorder ¶
func NewTestHijackResponseRecorder() *TestHijackResponseRecorder
NewTestHijackResponseRecorder creates a new instance of TestHijackResponseRecorder.
func (*TestHijackResponseRecorder) Close ¶
func (w *TestHijackResponseRecorder) Close() error
func (*TestHijackResponseRecorder) Hijack ¶
func (w *TestHijackResponseRecorder) Hijack() (net.Conn, *bufio.ReadWriter, error)
Hijack implements the http.Hijacker interface by returning a fakeNetConn and a bufio.ReadWriter that simulate a hijacked connection.