From 69ea21d0ffea13f3764248923d7e3d79e882d2f5 Mon Sep 17 00:00:00 2001 From: Alexander Khramov Date: Mon, 17 Jun 2024 21:58:44 +0300 Subject: [PATCH] feat: add httpMethodGuard middleware for api endpoints --- pages/api/eth-apr.ts | 3 +++ pages/api/eth-price.ts | 3 +++ pages/api/ldo-stats.ts | 3 +++ pages/api/lido-stats.ts | 3 +++ pages/api/lidostats.ts | 3 +++ pages/api/rpc.ts | 3 +++ pages/api/sma-steth-apr.ts | 3 +++ pages/api/totalsupply.ts | 3 +++ 8 files changed, 24 insertions(+) diff --git a/pages/api/eth-apr.ts b/pages/api/eth-apr.ts index 82c80039d..8afa84a3b 100644 --- a/pages/api/eth-apr.ts +++ b/pages/api/eth-apr.ts @@ -9,6 +9,8 @@ import { errorAndCacheDefaultWrappers, responseTimeMetric, rateLimit, + httpMethodGuard, + HttpMethod, } from 'utilsApi'; import Metrics from 'utilsApi/metrics'; @@ -31,6 +33,7 @@ const ethApr: API = async (_, res) => { }; export default wrapNextRequest([ + httpMethodGuard([HttpMethod.GET]), rateLimit, responseTimeMetric(Metrics.request.apiTimings, API_ROUTES.ETH_APR), ...errorAndCacheDefaultWrappers, diff --git a/pages/api/eth-price.ts b/pages/api/eth-price.ts index 413d1f84c..7529d1700 100644 --- a/pages/api/eth-price.ts +++ b/pages/api/eth-price.ts @@ -11,6 +11,8 @@ import { defaultErrorHandler, responseTimeMetric, rateLimit, + httpMethodGuard, + HttpMethod, } from 'utilsApi'; import Metrics from 'utilsApi/metrics'; import { API } from 'types'; @@ -36,6 +38,7 @@ const ethPrice: API = async (req, res) => { }; export default wrapNextRequest([ + httpMethodGuard([HttpMethod.GET]), rateLimit, responseTimeMetric(Metrics.request.apiTimings, API_ROUTES.ETH_PRICE), cacheControl({ headers: config.CACHE_ETH_PRICE_HEADERS }), diff --git a/pages/api/ldo-stats.ts b/pages/api/ldo-stats.ts index 1efdb4fc1..8e4b157b4 100644 --- a/pages/api/ldo-stats.ts +++ b/pages/api/ldo-stats.ts @@ -9,6 +9,8 @@ import { errorAndCacheDefaultWrappers, responseTimeMetric, rateLimit, + httpMethodGuard, + HttpMethod, } from 'utilsApi'; import Metrics from 'utilsApi/metrics'; import { API } from 'types'; @@ -37,6 +39,7 @@ const ldoStats: API = async (req, res) => { }; export default wrapNextRequest([ + httpMethodGuard([HttpMethod.GET]), rateLimit, responseTimeMetric(Metrics.request.apiTimings, API_ROUTES.LDO_STATS), ...errorAndCacheDefaultWrappers, diff --git a/pages/api/lido-stats.ts b/pages/api/lido-stats.ts index d1089efab..817b5500e 100644 --- a/pages/api/lido-stats.ts +++ b/pages/api/lido-stats.ts @@ -8,6 +8,8 @@ import { errorAndCacheDefaultWrappers, responseTimeMetric, rateLimit, + httpMethodGuard, + HttpMethod, } from 'utilsApi'; import Metrics from 'utilsApi/metrics'; import { API } from 'types'; @@ -35,6 +37,7 @@ const lidoStats: API = async (req, res) => { }; export default wrapNextRequest([ + httpMethodGuard([HttpMethod.GET]), rateLimit, responseTimeMetric(Metrics.request.apiTimings, API_ROUTES.LIDO_STATS), ...errorAndCacheDefaultWrappers, diff --git a/pages/api/lidostats.ts b/pages/api/lidostats.ts index d5b684707..defa19110 100644 --- a/pages/api/lidostats.ts +++ b/pages/api/lidostats.ts @@ -8,6 +8,8 @@ import { responseTimeMetric, errorAndCacheDefaultWrappers, rateLimit, + httpMethodGuard, + HttpMethod, } from 'utilsApi'; import Metrics from 'utilsApi/metrics'; import { API } from 'types'; @@ -36,6 +38,7 @@ const lidoStats: API = async (req, res) => { }; export default wrapNextRequest([ + httpMethodGuard([HttpMethod.GET]), rateLimit, responseTimeMetric(Metrics.request.apiTimings, API_ROUTES.LIDOSTATS), ...errorAndCacheDefaultWrappers, diff --git a/pages/api/rpc.ts b/pages/api/rpc.ts index 5680da397..a23c8950c 100644 --- a/pages/api/rpc.ts +++ b/pages/api/rpc.ts @@ -10,6 +10,8 @@ import { responseTimeMetric, defaultErrorHandler, requestAddressMetric, + httpMethodGuard, + HttpMethod, } from 'utilsApi'; import Metrics from 'utilsApi/metrics'; import { rpcUrls } from 'utilsApi/rpcUrls'; @@ -44,6 +46,7 @@ const rpc = rpcFactory({ }); export default wrapNextRequest([ + httpMethodGuard([HttpMethod.POST]), rateLimit, responseTimeMetric(Metrics.request.apiTimings, API_ROUTES.RPC), requestAddressMetric(Metrics.request.ethCallToAddress), diff --git a/pages/api/sma-steth-apr.ts b/pages/api/sma-steth-apr.ts index c13438d98..83b7ff176 100644 --- a/pages/api/sma-steth-apr.ts +++ b/pages/api/sma-steth-apr.ts @@ -9,6 +9,8 @@ import { errorAndCacheDefaultWrappers, rateLimit, getSmaStethApr, + httpMethodGuard, + HttpMethod, } from 'utilsApi'; import Metrics from 'utilsApi/metrics'; @@ -33,6 +35,7 @@ const smaStethApr: API = async (_, res) => { }; export default wrapNextRequest([ + httpMethodGuard([HttpMethod.GET]), rateLimit, responseTimeMetric(Metrics.request.apiTimings, API_ROUTES.SMA_STETH_APR), ...errorAndCacheDefaultWrappers, diff --git a/pages/api/totalsupply.ts b/pages/api/totalsupply.ts index 7518e0385..2621bd811 100644 --- a/pages/api/totalsupply.ts +++ b/pages/api/totalsupply.ts @@ -11,6 +11,8 @@ import { defaultErrorHandler, responseTimeMetric, rateLimit, + httpMethodGuard, + HttpMethod, } from 'utilsApi'; import Metrics from 'utilsApi/metrics'; import { API } from 'types'; @@ -36,6 +38,7 @@ const totalSupply: API = async (req, res) => { }; export default wrapNextRequest([ + httpMethodGuard([HttpMethod.GET]), rateLimit, responseTimeMetric(Metrics.request.apiTimings, API_ROUTES.TOTALSUPPLY), cacheControl({ headers: config.CACHE_TOTAL_SUPPLY_HEADERS }),