@3sixty/api-models 0.0.0-stage → 0.20.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +24 -2
- package/dist/es/errors/forbiddenError.js +23 -0
- package/dist/es/errors/forbiddenError.js.map +1 -0
- package/dist/es/errors/tooManyRequestsError.js +25 -0
- package/dist/es/errors/tooManyRequestsError.js.map +1 -0
- package/dist/es/factories/mimeTypeProcessorFactory.js +9 -0
- package/dist/es/factories/mimeTypeProcessorFactory.js.map +1 -0
- package/dist/es/factories/restClientProcessorFactory.js +9 -0
- package/dist/es/factories/restClientProcessorFactory.js.map +1 -0
- package/dist/es/factories/restRouteProcessorFactory.js +9 -0
- package/dist/es/factories/restRouteProcessorFactory.js.map +1 -0
- package/dist/es/factories/socketRouteProcessorFactory.js +9 -0
- package/dist/es/factories/socketRouteProcessorFactory.js.map +1 -0
- package/dist/es/helpers/httpErrorHelper.js +75 -0
- package/dist/es/helpers/httpErrorHelper.js.map +1 -0
- package/dist/es/helpers/httpHeaderHelper.js +120 -0
- package/dist/es/helpers/httpHeaderHelper.js.map +1 -0
- package/dist/es/helpers/httpParameterHelper.js +41 -0
- package/dist/es/helpers/httpParameterHelper.js.map +1 -0
- package/dist/es/helpers/httpUrlHelper.js +156 -0
- package/dist/es/helpers/httpUrlHelper.js.map +1 -0
- package/dist/es/index.js +81 -0
- package/dist/es/index.js.map +1 -0
- package/dist/es/models/IHealth.js +2 -0
- package/dist/es/models/IHealth.js.map +1 -0
- package/dist/es/models/api/IServerFavIconResponse.js +2 -0
- package/dist/es/models/api/IServerFavIconResponse.js.map +1 -0
- package/dist/es/models/api/IServerHealthResponse.js +2 -0
- package/dist/es/models/api/IServerHealthResponse.js.map +1 -0
- package/dist/es/models/api/IServerInfoResponse.js +2 -0
- package/dist/es/models/api/IServerInfoResponse.js.map +1 -0
- package/dist/es/models/api/IServerLivezResponse.js +2 -0
- package/dist/es/models/api/IServerLivezResponse.js.map +1 -0
- package/dist/es/models/api/IServerReadyzResponse.js +2 -0
- package/dist/es/models/api/IServerReadyzResponse.js.map +1 -0
- package/dist/es/models/api/IServerRootResponse.js +2 -0
- package/dist/es/models/api/IServerRootResponse.js.map +1 -0
- package/dist/es/models/api/IServerSpecResponse.js +2 -0
- package/dist/es/models/api/IServerSpecResponse.js.map +1 -0
- package/dist/es/models/client/IRestClientProcessor.js +2 -0
- package/dist/es/models/client/IRestClientProcessor.js.map +1 -0
- package/dist/es/models/client/IRestClientProcessorContext.js +2 -0
- package/dist/es/models/client/IRestClientProcessorContext.js.map +1 -0
- package/dist/es/models/config/IBaseRestClientConfig.js +2 -0
- package/dist/es/models/config/IBaseRestClientConfig.js.map +1 -0
- package/dist/es/models/config/IBaseSocketClientConfig.js +2 -0
- package/dist/es/models/config/IBaseSocketClientConfig.js.map +1 -0
- package/dist/es/models/healthCategory.js +17 -0
- package/dist/es/models/healthCategory.js.map +1 -0
- package/dist/es/models/healthStatus.js +21 -0
- package/dist/es/models/healthStatus.js.map +1 -0
- package/dist/es/models/httpContextIdKeys.js +39 -0
- package/dist/es/models/httpContextIdKeys.js.map +1 -0
- package/dist/es/models/protocol/IHttpRequest.js +2 -0
- package/dist/es/models/protocol/IHttpRequest.js.map +1 -0
- package/dist/es/models/protocol/IHttpRequestContext.js +2 -0
- package/dist/es/models/protocol/IHttpRequestContext.js.map +1 -0
- package/dist/es/models/protocol/IHttpRequestPathParams.js +4 -0
- package/dist/es/models/protocol/IHttpRequestPathParams.js.map +1 -0
- package/dist/es/models/protocol/IHttpRequestQuery.js +4 -0
- package/dist/es/models/protocol/IHttpRequestQuery.js.map +1 -0
- package/dist/es/models/protocol/IHttpResponse.js +2 -0
- package/dist/es/models/protocol/IHttpResponse.js.map +1 -0
- package/dist/es/models/protocol/IHttpServerRequest.js +2 -0
- package/dist/es/models/protocol/IHttpServerRequest.js.map +1 -0
- package/dist/es/models/protocol/ISocketRequestContext.js +2 -0
- package/dist/es/models/protocol/ISocketRequestContext.js.map +1 -0
- package/dist/es/models/protocol/ISocketServerRequest.js +2 -0
- package/dist/es/models/protocol/ISocketServerRequest.js.map +1 -0
- package/dist/es/models/requests/INoContentRequest.js +2 -0
- package/dist/es/models/requests/INoContentRequest.js.map +1 -0
- package/dist/es/models/responses/errors/IBadRequestResponse.js +2 -0
- package/dist/es/models/responses/errors/IBadRequestResponse.js.map +1 -0
- package/dist/es/models/responses/errors/IConflictResponse.js +2 -0
- package/dist/es/models/responses/errors/IConflictResponse.js.map +1 -0
- package/dist/es/models/responses/errors/IForbiddenResponse.js +2 -0
- package/dist/es/models/responses/errors/IForbiddenResponse.js.map +1 -0
- package/dist/es/models/responses/errors/IInternalServerErrorResponse.js +2 -0
- package/dist/es/models/responses/errors/IInternalServerErrorResponse.js.map +1 -0
- package/dist/es/models/responses/errors/INotFoundResponse.js +2 -0
- package/dist/es/models/responses/errors/INotFoundResponse.js.map +1 -0
- package/dist/es/models/responses/errors/INotImplementedResponse.js +2 -0
- package/dist/es/models/responses/errors/INotImplementedResponse.js.map +1 -0
- package/dist/es/models/responses/errors/ITooManyRequestsResponse.js +2 -0
- package/dist/es/models/responses/errors/ITooManyRequestsResponse.js.map +1 -0
- package/dist/es/models/responses/errors/IUnauthorizedResponse.js +2 -0
- package/dist/es/models/responses/errors/IUnauthorizedResponse.js.map +1 -0
- package/dist/es/models/responses/errors/IUnprocessableEntityResponse.js +2 -0
- package/dist/es/models/responses/errors/IUnprocessableEntityResponse.js.map +1 -0
- package/dist/es/models/responses/success/IAcceptedResponse.js +2 -0
- package/dist/es/models/responses/success/IAcceptedResponse.js.map +1 -0
- package/dist/es/models/responses/success/ICreatedResponse.js +2 -0
- package/dist/es/models/responses/success/ICreatedResponse.js.map +1 -0
- package/dist/es/models/responses/success/INoContentResponse.js +2 -0
- package/dist/es/models/responses/success/INoContentResponse.js.map +1 -0
- package/dist/es/models/responses/success/IOkResponse.js +2 -0
- package/dist/es/models/responses/success/IOkResponse.js.map +1 -0
- package/dist/es/models/routes/IBaseRoute.js +2 -0
- package/dist/es/models/routes/IBaseRoute.js.map +1 -0
- package/dist/es/models/routes/IBaseRouteEntryPoint.js +2 -0
- package/dist/es/models/routes/IBaseRouteEntryPoint.js.map +1 -0
- package/dist/es/models/routes/IRestRoute.js +2 -0
- package/dist/es/models/routes/IRestRoute.js.map +1 -0
- package/dist/es/models/routes/IRestRouteEntryPoint.js +2 -0
- package/dist/es/models/routes/IRestRouteEntryPoint.js.map +1 -0
- package/dist/es/models/routes/IRestRouteExample.js +4 -0
- package/dist/es/models/routes/IRestRouteExample.js.map +1 -0
- package/dist/es/models/routes/IRestRouteRequestExample.js +2 -0
- package/dist/es/models/routes/IRestRouteRequestExample.js.map +1 -0
- package/dist/es/models/routes/IRestRouteResponseAttachmentOptions.js +4 -0
- package/dist/es/models/routes/IRestRouteResponseAttachmentOptions.js.map +1 -0
- package/dist/es/models/routes/IRestRouteResponseExample.js +2 -0
- package/dist/es/models/routes/IRestRouteResponseExample.js.map +1 -0
- package/dist/es/models/routes/IRestRouteResponseOptions.js +2 -0
- package/dist/es/models/routes/IRestRouteResponseOptions.js.map +1 -0
- package/dist/es/models/routes/IRouteAuthorization.js +4 -0
- package/dist/es/models/routes/IRouteAuthorization.js.map +1 -0
- package/dist/es/models/routes/ISocketRoute.js +2 -0
- package/dist/es/models/routes/ISocketRoute.js.map +1 -0
- package/dist/es/models/routes/ISocketRouteEntryPoint.js +2 -0
- package/dist/es/models/routes/ISocketRouteEntryPoint.js.map +1 -0
- package/dist/es/models/routes/ITag.js +4 -0
- package/dist/es/models/routes/ITag.js.map +1 -0
- package/dist/es/models/routes/httpBodyLimit.js +17 -0
- package/dist/es/models/routes/httpBodyLimit.js.map +1 -0
- package/dist/es/models/server/IBaseRouteProcessor.js +2 -0
- package/dist/es/models/server/IBaseRouteProcessor.js.map +1 -0
- package/dist/es/models/server/IMimeTypeProcessor.js +2 -0
- package/dist/es/models/server/IMimeTypeProcessor.js.map +1 -0
- package/dist/es/models/server/IRestRouteProcessor.js +2 -0
- package/dist/es/models/server/IRestRouteProcessor.js.map +1 -0
- package/dist/es/models/server/ISocketRouteProcessor.js +2 -0
- package/dist/es/models/server/ISocketRouteProcessor.js.map +1 -0
- package/dist/es/models/server/IWebServer.js +2 -0
- package/dist/es/models/server/IWebServer.js.map +1 -0
- package/dist/es/models/server/IWebServerOptions.js +2 -0
- package/dist/es/models/server/IWebServerOptions.js.map +1 -0
- package/dist/es/models/services/IHealthApplicationCallback.js +2 -0
- package/dist/es/models/services/IHealthApplicationCallback.js.map +1 -0
- package/dist/es/models/services/IHealthComponent.js +2 -0
- package/dist/es/models/services/IHealthComponent.js.map +1 -0
- package/dist/es/models/services/IHealthProviderComponent.js +2 -0
- package/dist/es/models/services/IHealthProviderComponent.js.map +1 -0
- package/dist/es/models/services/IInformationComponent.js +2 -0
- package/dist/es/models/services/IInformationComponent.js.map +1 -0
- package/dist/es/models/services/IPlatformComponent.js +2 -0
- package/dist/es/models/services/IPlatformComponent.js.map +1 -0
- package/dist/es/models/services/IServerInfo.js +4 -0
- package/dist/es/models/services/IServerInfo.js.map +1 -0
- package/dist/es/models/services/ITenant.js +4 -0
- package/dist/es/models/services/ITenant.js.map +1 -0
- package/dist/es/models/services/ITenantAdminComponent.js +2 -0
- package/dist/es/models/services/ITenantAdminComponent.js.map +1 -0
- package/dist/es/models/services/tenantEventCallback.js +2 -0
- package/dist/es/models/services/tenantEventCallback.js.map +1 -0
- package/dist/es/models/services/tenantEventType.js +21 -0
- package/dist/es/models/services/tenantEventType.js.map +1 -0
- package/dist/types/errors/forbiddenError.d.ts +20 -0
- package/dist/types/errors/tooManyRequestsError.d.ts +22 -0
- package/dist/types/factories/mimeTypeProcessorFactory.d.ts +6 -0
- package/dist/types/factories/restClientProcessorFactory.d.ts +6 -0
- package/dist/types/factories/restRouteProcessorFactory.d.ts +6 -0
- package/dist/types/factories/socketRouteProcessorFactory.d.ts +6 -0
- package/dist/types/helpers/httpErrorHelper.d.ts +32 -0
- package/dist/types/helpers/httpHeaderHelper.d.ts +62 -0
- package/dist/types/helpers/httpParameterHelper.d.ts +29 -0
- package/dist/types/helpers/httpUrlHelper.d.ts +73 -0
- package/dist/types/index.d.ts +77 -0
- package/dist/types/models/IHealth.d.ts +42 -0
- package/dist/types/models/api/IServerFavIconResponse.d.ts +23 -0
- package/dist/types/models/api/IServerHealthResponse.d.ts +14 -0
- package/dist/types/models/api/IServerInfoResponse.d.ts +10 -0
- package/dist/types/models/api/IServerLivezResponse.d.ts +16 -0
- package/dist/types/models/api/IServerReadyzResponse.d.ts +16 -0
- package/dist/types/models/api/IServerRootResponse.d.ts +16 -0
- package/dist/types/models/api/IServerSpecResponse.d.ts +14 -0
- package/dist/types/models/client/IRestClientProcessor.d.ts +22 -0
- package/dist/types/models/client/IRestClientProcessorContext.d.ts +42 -0
- package/dist/types/models/config/IBaseRestClientConfig.d.ts +46 -0
- package/dist/types/models/config/IBaseSocketClientConfig.d.ts +22 -0
- package/dist/types/models/healthCategory.d.ts +17 -0
- package/dist/types/models/healthStatus.d.ts +21 -0
- package/dist/types/models/httpContextIdKeys.d.ts +38 -0
- package/dist/types/models/protocol/IHttpRequest.d.ts +24 -0
- package/dist/types/models/protocol/IHttpRequestContext.d.ts +20 -0
- package/dist/types/models/protocol/IHttpRequestPathParams.d.ts +6 -0
- package/dist/types/models/protocol/IHttpRequestQuery.d.ts +6 -0
- package/dist/types/models/protocol/IHttpResponse.d.ts +18 -0
- package/dist/types/models/protocol/IHttpServerRequest.d.ts +15 -0
- package/dist/types/models/protocol/ISocketRequestContext.d.ts +10 -0
- package/dist/types/models/protocol/ISocketServerRequest.d.ts +10 -0
- package/dist/types/models/requests/INoContentRequest.d.ts +22 -0
- package/dist/types/models/responses/errors/IBadRequestResponse.d.ts +15 -0
- package/dist/types/models/responses/errors/IConflictResponse.d.ts +15 -0
- package/dist/types/models/responses/errors/IForbiddenResponse.d.ts +15 -0
- package/dist/types/models/responses/errors/IInternalServerErrorResponse.d.ts +15 -0
- package/dist/types/models/responses/errors/INotFoundResponse.d.ts +20 -0
- package/dist/types/models/responses/errors/INotImplementedResponse.d.ts +15 -0
- package/dist/types/models/responses/errors/ITooManyRequestsResponse.d.ts +15 -0
- package/dist/types/models/responses/errors/IUnauthorizedResponse.d.ts +15 -0
- package/dist/types/models/responses/errors/IUnprocessableEntityResponse.d.ts +15 -0
- package/dist/types/models/responses/success/IAcceptedResponse.d.ts +19 -0
- package/dist/types/models/responses/success/ICreatedResponse.d.ts +19 -0
- package/dist/types/models/responses/success/INoContentResponse.d.ts +10 -0
- package/dist/types/models/responses/success/IOkResponse.d.ts +10 -0
- package/dist/types/models/routes/IBaseRoute.d.ts +39 -0
- package/dist/types/models/routes/IBaseRouteEntryPoint.d.ts +22 -0
- package/dist/types/models/routes/IRestRoute.d.ts +80 -0
- package/dist/types/models/routes/IRestRouteEntryPoint.d.ts +6 -0
- package/dist/types/models/routes/IRestRouteExample.d.ts +13 -0
- package/dist/types/models/routes/IRestRouteRequestExample.d.ts +10 -0
- package/dist/types/models/routes/IRestRouteResponseAttachmentOptions.d.ts +17 -0
- package/dist/types/models/routes/IRestRouteResponseExample.d.ts +10 -0
- package/dist/types/models/routes/IRestRouteResponseOptions.d.ts +10 -0
- package/dist/types/models/routes/IRouteAuthorization.d.ts +17 -0
- package/dist/types/models/routes/ISocketRoute.d.ts +41 -0
- package/dist/types/models/routes/ISocketRouteEntryPoint.d.ts +6 -0
- package/dist/types/models/routes/ITag.d.ts +13 -0
- package/dist/types/models/routes/httpBodyLimit.d.ts +17 -0
- package/dist/types/models/server/IBaseRouteProcessor.d.ts +42 -0
- package/dist/types/models/server/IMimeTypeProcessor.d.ts +17 -0
- package/dist/types/models/server/IRestRouteProcessor.d.ts +24 -0
- package/dist/types/models/server/ISocketRouteProcessor.d.ts +38 -0
- package/dist/types/models/server/IWebServer.d.ts +36 -0
- package/dist/types/models/server/IWebServerOptions.d.ts +54 -0
- package/dist/types/models/services/IHealthApplicationCallback.d.ts +6 -0
- package/dist/types/models/services/IHealthComponent.d.ts +16 -0
- package/dist/types/models/services/IHealthProviderComponent.d.ts +31 -0
- package/dist/types/models/services/IInformationComponent.d.ts +41 -0
- package/dist/types/models/services/IPlatformComponent.d.ts +44 -0
- package/dist/types/models/services/IServerInfo.d.ts +13 -0
- package/dist/types/models/services/ITenant.d.ts +37 -0
- package/dist/types/models/services/ITenantAdminComponent.d.ts +70 -0
- package/dist/types/models/services/tenantEventCallback.d.ts +6 -0
- package/dist/types/models/services/tenantEventType.d.ts +21 -0
- package/docs/changelog.md +10 -0
- package/docs/examples.md +200 -0
- package/docs/reference/classes/ForbiddenError.md +57 -0
- package/docs/reference/classes/HttpErrorHelper.md +99 -0
- package/docs/reference/classes/HttpHeaderHelper.md +182 -0
- package/docs/reference/classes/HttpParameterHelper.md +125 -0
- package/docs/reference/classes/HttpUrlHelper.md +262 -0
- package/docs/reference/classes/TooManyRequestsError.md +69 -0
- package/docs/reference/index.md +95 -0
- package/docs/reference/interfaces/IAcceptedResponse.md +25 -0
- package/docs/reference/interfaces/IBadRequestResponse.md +19 -0
- package/docs/reference/interfaces/IBaseRestClientConfig.md +99 -0
- package/docs/reference/interfaces/IBaseRoute.md +89 -0
- package/docs/reference/interfaces/IBaseRouteEntryPoint.md +55 -0
- package/docs/reference/interfaces/IBaseRouteProcessor.md +134 -0
- package/docs/reference/interfaces/IBaseSocketClientConfig.md +35 -0
- package/docs/reference/interfaces/IConflictResponse.md +19 -0
- package/docs/reference/interfaces/ICreatedResponse.md +25 -0
- package/docs/reference/interfaces/IForbiddenResponse.md +19 -0
- package/docs/reference/interfaces/IHealth.md +71 -0
- package/docs/reference/interfaces/IHealthComponent.md +21 -0
- package/docs/reference/interfaces/IHealthProviderComponent.md +76 -0
- package/docs/reference/interfaces/IHttpRequest.md +46 -0
- package/docs/reference/interfaces/IHttpRequestContext.md +35 -0
- package/docs/reference/interfaces/IHttpRequestPathParams.md +7 -0
- package/docs/reference/interfaces/IHttpRequestQuery.md +7 -0
- package/docs/reference/interfaces/IHttpResponse.md +33 -0
- package/docs/reference/interfaces/IHttpServerRequest.md +81 -0
- package/docs/reference/interfaces/IInformationComponent.md +91 -0
- package/docs/reference/interfaces/IInternalServerErrorResponse.md +19 -0
- package/docs/reference/interfaces/IMimeTypeProcessor.md +43 -0
- package/docs/reference/interfaces/INoContentRequest.md +55 -0
- package/docs/reference/interfaces/INoContentResponse.md +11 -0
- package/docs/reference/interfaces/INotFoundResponse.md +27 -0
- package/docs/reference/interfaces/INotImplementedResponse.md +19 -0
- package/docs/reference/interfaces/IOkResponse.md +11 -0
- package/docs/reference/interfaces/IPlatformComponent.md +139 -0
- package/docs/reference/interfaces/IRestClientProcessor.md +69 -0
- package/docs/reference/interfaces/IRestClientProcessorContext.md +75 -0
- package/docs/reference/interfaces/IRestRoute.md +245 -0
- package/docs/reference/interfaces/IRestRouteExample.md +24 -0
- package/docs/reference/interfaces/IRestRouteProcessor.md +177 -0
- package/docs/reference/interfaces/IRestRouteRequestExample.md +45 -0
- package/docs/reference/interfaces/IRestRouteResponseAttachmentOptions.md +27 -0
- package/docs/reference/interfaces/IRestRouteResponseExample.md +45 -0
- package/docs/reference/interfaces/IRestRouteResponseOptions.md +11 -0
- package/docs/reference/interfaces/IRouteAuthorization.md +27 -0
- package/docs/reference/interfaces/IServerFavIconResponse.md +33 -0
- package/docs/reference/interfaces/IServerHealthResponse.md +19 -0
- package/docs/reference/interfaces/IServerInfo.md +19 -0
- package/docs/reference/interfaces/IServerInfoResponse.md +11 -0
- package/docs/reference/interfaces/IServerLivezResponse.md +23 -0
- package/docs/reference/interfaces/IServerReadyzResponse.md +23 -0
- package/docs/reference/interfaces/IServerRootResponse.md +23 -0
- package/docs/reference/interfaces/IServerSpecResponse.md +19 -0
- package/docs/reference/interfaces/ISocketRequestContext.md +55 -0
- package/docs/reference/interfaces/ISocketRoute.md +198 -0
- package/docs/reference/interfaces/ISocketRouteProcessor.md +247 -0
- package/docs/reference/interfaces/ISocketServerRequest.md +93 -0
- package/docs/reference/interfaces/ITag.md +19 -0
- package/docs/reference/interfaces/ITenant.md +67 -0
- package/docs/reference/interfaces/ITenantAdminComponent.md +227 -0
- package/docs/reference/interfaces/ITooManyRequestsResponse.md +19 -0
- package/docs/reference/interfaces/IUnauthorizedResponse.md +19 -0
- package/docs/reference/interfaces/IUnprocessableEntityResponse.md +19 -0
- package/docs/reference/interfaces/IWebServer.md +109 -0
- package/docs/reference/interfaces/IWebServerOptions.md +113 -0
- package/docs/reference/type-aliases/HealthApplicationCallback.md +16 -0
- package/docs/reference/type-aliases/HealthCategory.md +5 -0
- package/docs/reference/type-aliases/HealthStatus.md +5 -0
- package/docs/reference/type-aliases/HttpBodyLimit.md +5 -0
- package/docs/reference/type-aliases/HttpContextIdKeys.md +5 -0
- package/docs/reference/type-aliases/IRestRouteEntryPoint.md +5 -0
- package/docs/reference/type-aliases/ISocketRouteEntryPoint.md +5 -0
- package/docs/reference/type-aliases/TenantEventCallback.md +20 -0
- package/docs/reference/type-aliases/TenantEventType.md +5 -0
- package/docs/reference/variables/HealthCategory.md +19 -0
- package/docs/reference/variables/HealthStatus.md +25 -0
- package/docs/reference/variables/HttpBodyLimit.md +19 -0
- package/docs/reference/variables/HttpContextIdKeys.md +50 -0
- package/docs/reference/variables/MimeTypeProcessorFactory.md +5 -0
- package/docs/reference/variables/RestClientProcessorFactory.md +5 -0
- package/docs/reference/variables/RestRouteProcessorFactory.md +5 -0
- package/docs/reference/variables/SocketRouteProcessorFactory.md +5 -0
- package/docs/reference/variables/TenantEventType.md +25 -0
- package/locales/en.json +8 -0
- package/package.json +53 -5
package/docs/examples.md
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
# Models Examples
|
|
2
|
+
|
|
3
|
+
These snippets show practical helpers for URL manipulation, request parameter conversion, consistent error responses, and secure parameter encryption.
|
|
4
|
+
|
|
5
|
+
## HttpUrlHelper
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { HttpUrlHelper } from '@3sixty/api-models';
|
|
9
|
+
|
|
10
|
+
const fullUrl = 'https://tenant.example.org/orders?page=2';
|
|
11
|
+
|
|
12
|
+
console.log(HttpUrlHelper.extractOrigin(fullUrl)); // https://tenant.example.org
|
|
13
|
+
console.log(HttpUrlHelper.extractPath(fullUrl)); // /orders
|
|
14
|
+
console.log(HttpUrlHelper.extractSearch(fullUrl)); // ?page=2
|
|
15
|
+
console.log(HttpUrlHelper.extractPathAndSearch(fullUrl)); // /orders?page=2
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import { HttpUrlHelper } from '@3sixty/api-models';
|
|
20
|
+
|
|
21
|
+
const combined = HttpUrlHelper.combineParts('https://tenant.example.org/', '/api/v1/orders');
|
|
22
|
+
const replaced = HttpUrlHelper.replaceOrigin(combined ?? '', 'https://edge.example.org');
|
|
23
|
+
|
|
24
|
+
console.log(combined); // https://tenant.example.org/api/v1/orders
|
|
25
|
+
console.log(replaced); // https://edge.example.org/api/v1/orders
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## HttpParameterHelper
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import { HttpParameterHelper } from '@3sixty/api-models';
|
|
32
|
+
|
|
33
|
+
const ids = HttpParameterHelper.arrayFromString('id-1,id-2,id-3');
|
|
34
|
+
const idsAsString = HttpParameterHelper.arrayToString(ids);
|
|
35
|
+
|
|
36
|
+
const filterObject = HttpParameterHelper.objectFromString('{"status":"active"}');
|
|
37
|
+
const filterString = HttpParameterHelper.objectToString(filterObject);
|
|
38
|
+
|
|
39
|
+
console.log(ids.length); // 3
|
|
40
|
+
console.log(idsAsString); // id-1,id-2,id-3
|
|
41
|
+
console.log(filterString); // {"status":"active"}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## HttpErrorHelper
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
import { HttpErrorHelper } from '@3sixty/api-models';
|
|
48
|
+
|
|
49
|
+
try {
|
|
50
|
+
throw new Error('Invalid request');
|
|
51
|
+
} catch (err) {
|
|
52
|
+
const mapped = HttpErrorHelper.processError(err, false);
|
|
53
|
+
const response: {
|
|
54
|
+
body?: unknown;
|
|
55
|
+
statusCode?: number;
|
|
56
|
+
headers?: { [id: string]: string };
|
|
57
|
+
} = {};
|
|
58
|
+
HttpErrorHelper.buildResponse(response, mapped.error, mapped.httpStatusCode);
|
|
59
|
+
|
|
60
|
+
console.log(response.statusCode); // 500
|
|
61
|
+
console.log(mapped.error.message); // Error: Invalid request
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## IHostingComponent
|
|
66
|
+
|
|
67
|
+
When working with the hosting component, you can encrypt and decrypt query parameters for secure transmission. The encryption mechanism automatically handles salt generation to prevent rainbow table attacks.
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
import type { IComponent, IHttpRequestQuery } from '@3sixty/api-models';
|
|
71
|
+
import { ComponentFactory } from '@3sixty/core';
|
|
72
|
+
|
|
73
|
+
interface IHostingComponent extends IComponent {
|
|
74
|
+
addEncryptedParamsToUrl(url: string, params: IHttpRequestQuery): Promise<string>;
|
|
75
|
+
getDecryptedParamsFromQueryParams(
|
|
76
|
+
queryParams: IHttpRequestQuery | undefined,
|
|
77
|
+
keys: string[]
|
|
78
|
+
): Promise<IHttpRequestQuery>;
|
|
79
|
+
encryptParam(paramValue: string): Promise<string>;
|
|
80
|
+
decryptParam(encryptedValue: string): Promise<string>;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Get the hosting component from the component factory
|
|
84
|
+
const hosting = ComponentFactory.get<IHostingComponent>('hosting');
|
|
85
|
+
|
|
86
|
+
// Encrypt parameters and add them to a URL
|
|
87
|
+
const baseUrl = 'https://api.example.com/callback';
|
|
88
|
+
const encrypted = await hosting.addEncryptedParamsToUrl(baseUrl, {
|
|
89
|
+
token: 'secret-token-123',
|
|
90
|
+
userId: 'user-456'
|
|
91
|
+
});
|
|
92
|
+
console.log(encrypted); // https://api.example.com/callback?x-enc-token=...&x-enc-userId=...
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
import type { IHttpRequestQuery } from '@3sixty/api-models';
|
|
97
|
+
import { ComponentFactory } from '@3sixty/core';
|
|
98
|
+
|
|
99
|
+
interface IHostingComponent {
|
|
100
|
+
addEncryptedParamsToUrl(url: string, params: IHttpRequestQuery): Promise<string>;
|
|
101
|
+
getDecryptedParamsFromQueryParams(
|
|
102
|
+
queryParams: IHttpRequestQuery | undefined,
|
|
103
|
+
keys: string[]
|
|
104
|
+
): Promise<IHttpRequestQuery>;
|
|
105
|
+
encryptQueryParams(
|
|
106
|
+
httpRequestQuery: IHttpRequestQuery | undefined,
|
|
107
|
+
keys: string[]
|
|
108
|
+
): Promise<void>;
|
|
109
|
+
decryptQueryParams(
|
|
110
|
+
httpRequestQuery: IHttpRequestQuery | undefined,
|
|
111
|
+
keys: string[]
|
|
112
|
+
): Promise<void>;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const hosting = ComponentFactory.get<IHostingComponent>('hosting');
|
|
116
|
+
|
|
117
|
+
// Decrypt specific parameters from a query object
|
|
118
|
+
const queryParams: IHttpRequestQuery = {
|
|
119
|
+
'x-enc-token': 'CngBAgMEBQYH...',
|
|
120
|
+
'x-enc-userId': 'CxgICSoLDAwN...',
|
|
121
|
+
status: 'active'
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
const decrypted = await hosting.getDecryptedParamsFromQueryParams(queryParams, ['token', 'userId']);
|
|
125
|
+
console.log(decrypted); // { token: 'secret-token-123', userId: 'user-456' }
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
import type { IHttpRequestQuery } from '@3sixty/api-models';
|
|
130
|
+
import { ComponentFactory } from '@3sixty/core';
|
|
131
|
+
|
|
132
|
+
interface IHostingComponent {
|
|
133
|
+
addTenantTokenToUrl(url: string, tenantId: string): Promise<string>;
|
|
134
|
+
getTenantTokenFromQueryParams(
|
|
135
|
+
queryParams: IHttpRequestQuery | undefined
|
|
136
|
+
): Promise<string | undefined>;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
const hosting = ComponentFactory.get<IHostingComponent>('hosting');
|
|
140
|
+
|
|
141
|
+
// Add encrypted tenant token to a URL
|
|
142
|
+
const redirectUrl = 'https://tenant.example.com/dashboard';
|
|
143
|
+
const urlWithTenant = await hosting.addTenantTokenToUrl(
|
|
144
|
+
redirectUrl,
|
|
145
|
+
'a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6'
|
|
146
|
+
);
|
|
147
|
+
console.log(urlWithTenant); // https://tenant.example.com/dashboard?x-enc-tenant-token=...
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
import type { IHttpRequestQuery } from '@3sixty/api-models';
|
|
152
|
+
import { ComponentFactory } from '@3sixty/core';
|
|
153
|
+
|
|
154
|
+
interface IHostingComponent {
|
|
155
|
+
encryptQueryParams(
|
|
156
|
+
httpRequestQuery: IHttpRequestQuery | undefined,
|
|
157
|
+
keys: string[]
|
|
158
|
+
): Promise<void>;
|
|
159
|
+
decryptQueryParams(
|
|
160
|
+
httpRequestQuery: IHttpRequestQuery | undefined,
|
|
161
|
+
keys: string[]
|
|
162
|
+
): Promise<void>;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const hosting = ComponentFactory.get<IHostingComponent>('hosting');
|
|
166
|
+
|
|
167
|
+
// Encrypt specific query parameters in place
|
|
168
|
+
const query: IHttpRequestQuery = {
|
|
169
|
+
token: 'secret-123',
|
|
170
|
+
apiKey: 'key-456',
|
|
171
|
+
status: 'active'
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
await hosting.encryptQueryParams(query, ['token', 'apiKey']);
|
|
175
|
+
console.log(query); // { 'x-enc-token': '...', 'x-enc-apiKey': '...', status: 'active' }
|
|
176
|
+
|
|
177
|
+
// Decrypt the parameters back to their original keys
|
|
178
|
+
await hosting.decryptQueryParams(query, ['token', 'apiKey']);
|
|
179
|
+
console.log(query); // { token: 'secret-123', apiKey: 'key-456', status: 'active' }
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
```typescript
|
|
183
|
+
import { ComponentFactory } from '@3sixty/core';
|
|
184
|
+
|
|
185
|
+
interface IHostingComponent {
|
|
186
|
+
encryptParam(paramValue: string): Promise<string>;
|
|
187
|
+
decryptParam(encryptedValue: string): Promise<string>;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
const hosting = ComponentFactory.get<IHostingComponent>('hosting');
|
|
191
|
+
|
|
192
|
+
// Encrypt a single parameter value
|
|
193
|
+
const plainText = 'confidential-data';
|
|
194
|
+
const encrypted = await hosting.encryptParam(plainText);
|
|
195
|
+
console.log(encrypted); // CngBAgMEBQYHCAkKCwwNDg8QERAh...
|
|
196
|
+
|
|
197
|
+
// Decrypt the parameter value
|
|
198
|
+
const decrypted = await hosting.decryptParam(encrypted);
|
|
199
|
+
console.log(decrypted); // confidential-data
|
|
200
|
+
```
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Class: ForbiddenError
|
|
2
|
+
|
|
3
|
+
Class to handle errors which are triggered by forbidden actions.
|
|
4
|
+
|
|
5
|
+
## Extends
|
|
6
|
+
|
|
7
|
+
- `BaseError`
|
|
8
|
+
|
|
9
|
+
## Constructors
|
|
10
|
+
|
|
11
|
+
### Constructor
|
|
12
|
+
|
|
13
|
+
> **new ForbiddenError**(`source`, `message`, `properties?`, `cause?`): `ForbiddenError`
|
|
14
|
+
|
|
15
|
+
Create a new instance of ForbiddenError.
|
|
16
|
+
|
|
17
|
+
#### Parameters
|
|
18
|
+
|
|
19
|
+
##### source
|
|
20
|
+
|
|
21
|
+
`string`
|
|
22
|
+
|
|
23
|
+
The source of the error.
|
|
24
|
+
|
|
25
|
+
##### message
|
|
26
|
+
|
|
27
|
+
`string`
|
|
28
|
+
|
|
29
|
+
The message as a code.
|
|
30
|
+
|
|
31
|
+
##### properties?
|
|
32
|
+
|
|
33
|
+
\{\[`id`: `string`\]: `unknown`; \}
|
|
34
|
+
|
|
35
|
+
Any additional information for the error.
|
|
36
|
+
|
|
37
|
+
##### cause?
|
|
38
|
+
|
|
39
|
+
`unknown`
|
|
40
|
+
|
|
41
|
+
The cause of the error if we have wrapped another error.
|
|
42
|
+
|
|
43
|
+
#### Returns
|
|
44
|
+
|
|
45
|
+
`ForbiddenError`
|
|
46
|
+
|
|
47
|
+
#### Overrides
|
|
48
|
+
|
|
49
|
+
`BaseError.constructor`
|
|
50
|
+
|
|
51
|
+
## Properties
|
|
52
|
+
|
|
53
|
+
### CLASS\_NAME {#class_name}
|
|
54
|
+
|
|
55
|
+
> `readonly` `static` **CLASS\_NAME**: `string`
|
|
56
|
+
|
|
57
|
+
Runtime name for the class.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Class: HttpErrorHelper
|
|
2
|
+
|
|
3
|
+
Class to help with processing http errors.
|
|
4
|
+
|
|
5
|
+
## Constructors
|
|
6
|
+
|
|
7
|
+
### Constructor
|
|
8
|
+
|
|
9
|
+
> **new HttpErrorHelper**(): `HttpErrorHelper`
|
|
10
|
+
|
|
11
|
+
#### Returns
|
|
12
|
+
|
|
13
|
+
`HttpErrorHelper`
|
|
14
|
+
|
|
15
|
+
## Properties
|
|
16
|
+
|
|
17
|
+
### ERROR\_TYPE\_MAP {#error_type_map}
|
|
18
|
+
|
|
19
|
+
> `readonly` `static` **ERROR\_TYPE\_MAP**: `object`
|
|
20
|
+
|
|
21
|
+
Mapping of error types to status codes.
|
|
22
|
+
|
|
23
|
+
#### Index Signature
|
|
24
|
+
|
|
25
|
+
\[`id`: `string`\]: `HttpStatusCode`
|
|
26
|
+
|
|
27
|
+
## Methods
|
|
28
|
+
|
|
29
|
+
### processError() {#processerror}
|
|
30
|
+
|
|
31
|
+
> `static` **processError**(`err`, `includeStack?`): `object`
|
|
32
|
+
|
|
33
|
+
Process the errors from the routes.
|
|
34
|
+
|
|
35
|
+
#### Parameters
|
|
36
|
+
|
|
37
|
+
##### err
|
|
38
|
+
|
|
39
|
+
`unknown`
|
|
40
|
+
|
|
41
|
+
The error to process.
|
|
42
|
+
|
|
43
|
+
##### includeStack?
|
|
44
|
+
|
|
45
|
+
`boolean`
|
|
46
|
+
|
|
47
|
+
Should the stack be included in the error.
|
|
48
|
+
|
|
49
|
+
#### Returns
|
|
50
|
+
|
|
51
|
+
`object`
|
|
52
|
+
|
|
53
|
+
The status code and additional error data.
|
|
54
|
+
|
|
55
|
+
##### error
|
|
56
|
+
|
|
57
|
+
> **error**: `IError`
|
|
58
|
+
|
|
59
|
+
##### httpStatusCode
|
|
60
|
+
|
|
61
|
+
> **httpStatusCode**: `HttpStatusCode`
|
|
62
|
+
|
|
63
|
+
***
|
|
64
|
+
|
|
65
|
+
### buildResponse() {#buildresponse}
|
|
66
|
+
|
|
67
|
+
> `static` **buildResponse**(`response`, `error`, `statusCode`, `includeStack`): `void`
|
|
68
|
+
|
|
69
|
+
Build an error response.
|
|
70
|
+
|
|
71
|
+
#### Parameters
|
|
72
|
+
|
|
73
|
+
##### response
|
|
74
|
+
|
|
75
|
+
[`IHttpResponse`](../interfaces/IHttpResponse.md)
|
|
76
|
+
|
|
77
|
+
The response to build the error into.
|
|
78
|
+
|
|
79
|
+
##### error
|
|
80
|
+
|
|
81
|
+
`IError`
|
|
82
|
+
|
|
83
|
+
The error to build the response for.
|
|
84
|
+
|
|
85
|
+
##### statusCode
|
|
86
|
+
|
|
87
|
+
`HttpStatusCode`
|
|
88
|
+
|
|
89
|
+
The status code to use for the error.
|
|
90
|
+
|
|
91
|
+
##### includeStack
|
|
92
|
+
|
|
93
|
+
`boolean`
|
|
94
|
+
|
|
95
|
+
Should the stack be included in the error.
|
|
96
|
+
|
|
97
|
+
#### Returns
|
|
98
|
+
|
|
99
|
+
`void`
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
# Class: HttpHeaderHelper
|
|
2
|
+
|
|
3
|
+
Class to help with handling http headers.
|
|
4
|
+
|
|
5
|
+
## Constructors
|
|
6
|
+
|
|
7
|
+
### Constructor
|
|
8
|
+
|
|
9
|
+
> **new HttpHeaderHelper**(): `HttpHeaderHelper`
|
|
10
|
+
|
|
11
|
+
#### Returns
|
|
12
|
+
|
|
13
|
+
`HttpHeaderHelper`
|
|
14
|
+
|
|
15
|
+
## Properties
|
|
16
|
+
|
|
17
|
+
### CLASS\_NAME {#class_name}
|
|
18
|
+
|
|
19
|
+
> `readonly` `static` **CLASS\_NAME**: `string`
|
|
20
|
+
|
|
21
|
+
Runtime name for the class.
|
|
22
|
+
|
|
23
|
+
## Methods
|
|
24
|
+
|
|
25
|
+
### buildCursor() {#buildcursor}
|
|
26
|
+
|
|
27
|
+
> `static` **buildCursor**(`headers`, `url`, `publicOrigin`, `cursor`): asserts headers is IHttpHeaders & \{ link: string \| undefined \}
|
|
28
|
+
|
|
29
|
+
Set the Link header with a next cursor relation when a cursor is present.
|
|
30
|
+
|
|
31
|
+
#### Parameters
|
|
32
|
+
|
|
33
|
+
##### headers
|
|
34
|
+
|
|
35
|
+
`IHttpHeaders`
|
|
36
|
+
|
|
37
|
+
The response headers to mutate.
|
|
38
|
+
|
|
39
|
+
##### url
|
|
40
|
+
|
|
41
|
+
`string`
|
|
42
|
+
|
|
43
|
+
The request URL used as the base for the link.
|
|
44
|
+
|
|
45
|
+
##### publicOrigin
|
|
46
|
+
|
|
47
|
+
`string` \| `undefined`
|
|
48
|
+
|
|
49
|
+
The public origin to substitute into the URL, if any.
|
|
50
|
+
|
|
51
|
+
##### cursor
|
|
52
|
+
|
|
53
|
+
`string` \| `undefined`
|
|
54
|
+
|
|
55
|
+
The cursor value; when undefined or empty the header is not set.
|
|
56
|
+
|
|
57
|
+
#### Returns
|
|
58
|
+
|
|
59
|
+
asserts headers is IHttpHeaders & \{ link: string \| undefined \}
|
|
60
|
+
|
|
61
|
+
***
|
|
62
|
+
|
|
63
|
+
### buildId() {#buildid}
|
|
64
|
+
|
|
65
|
+
> `static` **buildId**(`headers`, `id`, `urlTemplate?`): `asserts headers is IHttpHeaders & { location: string }`
|
|
66
|
+
|
|
67
|
+
Set the Location header to the encoded ID, optionally placed within a URL template.
|
|
68
|
+
When the template contains `:id` (e.g. "/path1/:id/path2" or "/path?p=:id") the
|
|
69
|
+
encoded ID is substituted at that position; otherwise it is appended.
|
|
70
|
+
When no template is provided the bare encoded ID is used.
|
|
71
|
+
Callers that need to combine a public origin with a path should use
|
|
72
|
+
HttpUrlHelper.combineOriginPath to build the template before calling this method.
|
|
73
|
+
|
|
74
|
+
#### Parameters
|
|
75
|
+
|
|
76
|
+
##### headers
|
|
77
|
+
|
|
78
|
+
`IHttpHeaders`
|
|
79
|
+
|
|
80
|
+
The response headers to mutate.
|
|
81
|
+
|
|
82
|
+
##### id
|
|
83
|
+
|
|
84
|
+
`string`
|
|
85
|
+
|
|
86
|
+
The resource ID to encode and place.
|
|
87
|
+
|
|
88
|
+
##### urlTemplate?
|
|
89
|
+
|
|
90
|
+
`string`
|
|
91
|
+
|
|
92
|
+
The optional URL template (absolute or relative).
|
|
93
|
+
|
|
94
|
+
#### Returns
|
|
95
|
+
|
|
96
|
+
`asserts headers is IHttpHeaders & { location: string }`
|
|
97
|
+
|
|
98
|
+
***
|
|
99
|
+
|
|
100
|
+
### buildJsonContentType() {#buildjsoncontenttype}
|
|
101
|
+
|
|
102
|
+
> `static` **buildJsonContentType**(`headers`, `requestHeaders?`): asserts headers is IHttpHeaders & \{ content-type: "application/json" \| "application/ld+json" \}
|
|
103
|
+
|
|
104
|
+
Set the Content-Type header to JSON-LD or JSON depending on the request Accept header.
|
|
105
|
+
Uses HeaderHelper.extractAccept which parses the Accept header per RFC 7231 and returns
|
|
106
|
+
entries ordered by quality descending, preserving original order for equal q-values.
|
|
107
|
+
|
|
108
|
+
#### Parameters
|
|
109
|
+
|
|
110
|
+
##### headers
|
|
111
|
+
|
|
112
|
+
`IHttpHeaders`
|
|
113
|
+
|
|
114
|
+
The response headers to mutate.
|
|
115
|
+
|
|
116
|
+
##### requestHeaders?
|
|
117
|
+
|
|
118
|
+
`IHttpHeaders`
|
|
119
|
+
|
|
120
|
+
The request headers to inspect for the Accept value.
|
|
121
|
+
|
|
122
|
+
#### Returns
|
|
123
|
+
|
|
124
|
+
asserts headers is IHttpHeaders & \{ content-type: "application/json" \| "application/ld+json" \}
|
|
125
|
+
|
|
126
|
+
***
|
|
127
|
+
|
|
128
|
+
### extractCursor() {#extractcursor}
|
|
129
|
+
|
|
130
|
+
> `static` **extractCursor**(`headers?`): `string` \| `undefined`
|
|
131
|
+
|
|
132
|
+
Extract the cursor from the Link header's next relation.
|
|
133
|
+
|
|
134
|
+
#### Parameters
|
|
135
|
+
|
|
136
|
+
##### headers?
|
|
137
|
+
|
|
138
|
+
`IHttpHeaders`
|
|
139
|
+
|
|
140
|
+
The response headers to extract the cursor from.
|
|
141
|
+
|
|
142
|
+
#### Returns
|
|
143
|
+
|
|
144
|
+
`string` \| `undefined`
|
|
145
|
+
|
|
146
|
+
The cursor value or undefined if not present.
|
|
147
|
+
|
|
148
|
+
***
|
|
149
|
+
|
|
150
|
+
### extractId() {#extractid}
|
|
151
|
+
|
|
152
|
+
> `static` **extractId**(`headers?`, `templateUrl?`): `string`
|
|
153
|
+
|
|
154
|
+
Extract the resource ID from the Location response header.
|
|
155
|
+
Handles absolute URLs, relative paths, and bare ID values.
|
|
156
|
+
When a templateUrl containing ':id' is supplied (e.g. "/path1/:id/path2" or
|
|
157
|
+
"https://host/path/:id") the ID is extracted via pattern matching at the ':id'
|
|
158
|
+
position. Without a matching template the last path segment is returned.
|
|
159
|
+
|
|
160
|
+
#### Parameters
|
|
161
|
+
|
|
162
|
+
##### headers?
|
|
163
|
+
|
|
164
|
+
`IHttpHeaders`
|
|
165
|
+
|
|
166
|
+
The response headers containing the Location header.
|
|
167
|
+
|
|
168
|
+
##### templateUrl?
|
|
169
|
+
|
|
170
|
+
`string`
|
|
171
|
+
|
|
172
|
+
Optional URL template containing the ':id' placeholder, e.g. "/path1/:id/path2".
|
|
173
|
+
|
|
174
|
+
#### Returns
|
|
175
|
+
|
|
176
|
+
`string`
|
|
177
|
+
|
|
178
|
+
The extracted ID string.
|
|
179
|
+
|
|
180
|
+
#### Throws
|
|
181
|
+
|
|
182
|
+
GeneralError If the Location header is missing or the ID cannot be extracted.
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Class: HttpParameterHelper
|
|
2
|
+
|
|
3
|
+
Class to help with handling http parameters.
|
|
4
|
+
|
|
5
|
+
## Constructors
|
|
6
|
+
|
|
7
|
+
### Constructor
|
|
8
|
+
|
|
9
|
+
> **new HttpParameterHelper**(): `HttpParameterHelper`
|
|
10
|
+
|
|
11
|
+
#### Returns
|
|
12
|
+
|
|
13
|
+
`HttpParameterHelper`
|
|
14
|
+
|
|
15
|
+
## Methods
|
|
16
|
+
|
|
17
|
+
### arrayFromString() {#arrayfromstring}
|
|
18
|
+
|
|
19
|
+
> `static` **arrayFromString**\<`T`\>(`values?`): `T`[] \| `undefined`
|
|
20
|
+
|
|
21
|
+
Convert list query to array.
|
|
22
|
+
|
|
23
|
+
#### Type Parameters
|
|
24
|
+
|
|
25
|
+
##### T {#t}
|
|
26
|
+
|
|
27
|
+
`T` = `string`
|
|
28
|
+
|
|
29
|
+
#### Parameters
|
|
30
|
+
|
|
31
|
+
##### values?
|
|
32
|
+
|
|
33
|
+
`string`
|
|
34
|
+
|
|
35
|
+
The values query string.
|
|
36
|
+
|
|
37
|
+
#### Returns
|
|
38
|
+
|
|
39
|
+
`T`[] \| `undefined`
|
|
40
|
+
|
|
41
|
+
The array of values.
|
|
42
|
+
|
|
43
|
+
***
|
|
44
|
+
|
|
45
|
+
### arrayToString() {#arraytostring}
|
|
46
|
+
|
|
47
|
+
> `static` **arrayToString**\<`T`\>(`values?`): `string` \| `undefined`
|
|
48
|
+
|
|
49
|
+
Convert array of values to query string.
|
|
50
|
+
|
|
51
|
+
#### Type Parameters
|
|
52
|
+
|
|
53
|
+
##### T {#t-1}
|
|
54
|
+
|
|
55
|
+
`T` = `string`
|
|
56
|
+
|
|
57
|
+
#### Parameters
|
|
58
|
+
|
|
59
|
+
##### values?
|
|
60
|
+
|
|
61
|
+
`T`[]
|
|
62
|
+
|
|
63
|
+
The values to combine string.
|
|
64
|
+
|
|
65
|
+
#### Returns
|
|
66
|
+
|
|
67
|
+
`string` \| `undefined`
|
|
68
|
+
|
|
69
|
+
The combined.
|
|
70
|
+
|
|
71
|
+
***
|
|
72
|
+
|
|
73
|
+
### objectFromString() {#objectfromstring}
|
|
74
|
+
|
|
75
|
+
> `static` **objectFromString**\<`T`\>(`value?`): `T` \| `undefined`
|
|
76
|
+
|
|
77
|
+
Convert object string to object.
|
|
78
|
+
|
|
79
|
+
#### Type Parameters
|
|
80
|
+
|
|
81
|
+
##### T {#t-2}
|
|
82
|
+
|
|
83
|
+
`T` = `unknown`
|
|
84
|
+
|
|
85
|
+
#### Parameters
|
|
86
|
+
|
|
87
|
+
##### value?
|
|
88
|
+
|
|
89
|
+
`string`
|
|
90
|
+
|
|
91
|
+
The value query string.
|
|
92
|
+
|
|
93
|
+
#### Returns
|
|
94
|
+
|
|
95
|
+
`T` \| `undefined`
|
|
96
|
+
|
|
97
|
+
The object.
|
|
98
|
+
|
|
99
|
+
***
|
|
100
|
+
|
|
101
|
+
### objectToString() {#objecttostring}
|
|
102
|
+
|
|
103
|
+
> `static` **objectToString**\<`T`\>(`value?`): `string` \| `undefined`
|
|
104
|
+
|
|
105
|
+
Convert object to query string.
|
|
106
|
+
|
|
107
|
+
#### Type Parameters
|
|
108
|
+
|
|
109
|
+
##### T {#t-3}
|
|
110
|
+
|
|
111
|
+
`T` = `unknown`
|
|
112
|
+
|
|
113
|
+
#### Parameters
|
|
114
|
+
|
|
115
|
+
##### value?
|
|
116
|
+
|
|
117
|
+
`T`
|
|
118
|
+
|
|
119
|
+
The value to convert to a string.
|
|
120
|
+
|
|
121
|
+
#### Returns
|
|
122
|
+
|
|
123
|
+
`string` \| `undefined`
|
|
124
|
+
|
|
125
|
+
The converted object.
|