@effect/platform 0.66.1 → 0.66.3
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/dist/cjs/Command.js.map +1 -1
- package/dist/cjs/Cookies.js.map +1 -1
- package/dist/cjs/Effectify.js.map +1 -1
- package/dist/cjs/Headers.js.map +1 -1
- package/dist/cjs/HttpApi.js.map +1 -1
- package/dist/cjs/HttpApiBuilder.js.map +1 -1
- package/dist/cjs/HttpApiEndpoint.js.map +1 -1
- package/dist/cjs/HttpApiGroup.js.map +1 -1
- package/dist/cjs/HttpApiSchema.js.map +1 -1
- package/dist/cjs/HttpApiSecurity.js.map +1 -1
- package/dist/cjs/HttpApp.js.map +1 -1
- package/dist/cjs/HttpClient.js +8 -1
- package/dist/cjs/HttpClient.js.map +1 -1
- package/dist/cjs/HttpClientError.js +8 -1
- package/dist/cjs/HttpClientError.js.map +1 -1
- package/dist/cjs/HttpClientRequest.js.map +1 -1
- package/dist/cjs/HttpClientResponse.js +11 -1
- package/dist/cjs/HttpClientResponse.js.map +1 -1
- package/dist/cjs/HttpIncomingMessage.js.map +1 -1
- package/dist/cjs/HttpMiddleware.js.map +1 -1
- package/dist/cjs/HttpMultiplex.js.map +1 -1
- package/dist/cjs/HttpRouter.js.map +1 -1
- package/dist/cjs/HttpServer.js.map +1 -1
- package/dist/cjs/HttpServerResponse.js.map +1 -1
- package/dist/cjs/KeyValueStore.js.map +1 -1
- package/dist/cjs/Multipart.js.map +1 -1
- package/dist/cjs/OpenApi.js.map +1 -1
- package/dist/cjs/OpenApiJsonSchema.js +40 -27
- package/dist/cjs/OpenApiJsonSchema.js.map +1 -1
- package/dist/cjs/PlatformLogger.js.map +1 -1
- package/dist/cjs/Socket.js +4 -1
- package/dist/cjs/Socket.js.map +1 -1
- package/dist/cjs/Transferable.js.map +1 -1
- package/dist/cjs/UrlParams.js.map +1 -1
- package/dist/cjs/internal/httpClient.js +12 -14
- package/dist/cjs/internal/httpClient.js.map +1 -1
- package/dist/cjs/internal/httpClientResponse.js +16 -1
- package/dist/cjs/internal/httpClientResponse.js.map +1 -1
- package/dist/dts/Command.d.ts +134 -0
- package/dist/dts/Command.d.ts.map +1 -1
- package/dist/dts/Cookies.d.ts +120 -0
- package/dist/dts/Cookies.d.ts.map +1 -1
- package/dist/dts/Effectify.d.ts +9 -0
- package/dist/dts/Effectify.d.ts.map +1 -1
- package/dist/dts/Headers.d.ts +56 -0
- package/dist/dts/Headers.d.ts.map +1 -1
- package/dist/dts/HttpApi.d.ts +58 -0
- package/dist/dts/HttpApi.d.ts.map +1 -1
- package/dist/dts/HttpApiBuilder.d.ts +84 -0
- package/dist/dts/HttpApiBuilder.d.ts.map +1 -1
- package/dist/dts/HttpApiEndpoint.d.ts +118 -0
- package/dist/dts/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/dts/HttpApiGroup.d.ts +100 -0
- package/dist/dts/HttpApiGroup.d.ts.map +1 -1
- package/dist/dts/HttpApiSchema.d.ts +16 -0
- package/dist/dts/HttpApiSchema.d.ts.map +1 -1
- package/dist/dts/HttpApiSecurity.d.ts +16 -0
- package/dist/dts/HttpApiSecurity.d.ts.map +1 -1
- package/dist/dts/HttpApp.d.ts.map +1 -1
- package/dist/dts/HttpClient.d.ts +308 -0
- package/dist/dts/HttpClient.d.ts.map +1 -1
- package/dist/dts/HttpClientError.d.ts +5 -0
- package/dist/dts/HttpClientError.d.ts.map +1 -1
- package/dist/dts/HttpClientRequest.d.ts +208 -0
- package/dist/dts/HttpClientRequest.d.ts.map +1 -1
- package/dist/dts/HttpClientResponse.d.ts +30 -0
- package/dist/dts/HttpClientResponse.d.ts.map +1 -1
- package/dist/dts/HttpIncomingMessage.d.ts.map +1 -1
- package/dist/dts/HttpMiddleware.d.ts +24 -0
- package/dist/dts/HttpMiddleware.d.ts.map +1 -1
- package/dist/dts/HttpMultiplex.d.ts +72 -0
- package/dist/dts/HttpMultiplex.d.ts.map +1 -1
- package/dist/dts/HttpRouter.d.ts +184 -0
- package/dist/dts/HttpRouter.d.ts.map +1 -1
- package/dist/dts/HttpServer.d.ts +32 -0
- package/dist/dts/HttpServer.d.ts.map +1 -1
- package/dist/dts/HttpServerResponse.d.ts +96 -0
- package/dist/dts/HttpServerResponse.d.ts.map +1 -1
- package/dist/dts/KeyValueStore.d.ts +8 -0
- package/dist/dts/KeyValueStore.d.ts.map +1 -1
- package/dist/dts/Multipart.d.ts +32 -0
- package/dist/dts/Multipart.d.ts.map +1 -1
- package/dist/dts/OpenApi.d.ts +8 -0
- package/dist/dts/OpenApi.d.ts.map +1 -1
- package/dist/dts/PlatformLogger.d.ts +46 -0
- package/dist/dts/PlatformLogger.d.ts.map +1 -1
- package/dist/dts/Socket.d.ts +8 -0
- package/dist/dts/Socket.d.ts.map +1 -1
- package/dist/dts/Transferable.d.ts +8 -0
- package/dist/dts/Transferable.d.ts.map +1 -1
- package/dist/dts/UrlParams.d.ts +64 -0
- package/dist/dts/UrlParams.d.ts.map +1 -1
- package/dist/esm/Command.js.map +1 -1
- package/dist/esm/Cookies.js.map +1 -1
- package/dist/esm/Effectify.js.map +1 -1
- package/dist/esm/Headers.js.map +1 -1
- package/dist/esm/HttpApi.js.map +1 -1
- package/dist/esm/HttpApiBuilder.js.map +1 -1
- package/dist/esm/HttpApiEndpoint.js.map +1 -1
- package/dist/esm/HttpApiGroup.js.map +1 -1
- package/dist/esm/HttpApiSchema.js.map +1 -1
- package/dist/esm/HttpApiSecurity.js.map +1 -1
- package/dist/esm/HttpApp.js.map +1 -1
- package/dist/esm/HttpClient.js +7 -0
- package/dist/esm/HttpClient.js.map +1 -1
- package/dist/esm/HttpClientError.js +6 -0
- package/dist/esm/HttpClientError.js.map +1 -1
- package/dist/esm/HttpClientRequest.js.map +1 -1
- package/dist/esm/HttpClientResponse.js +10 -0
- package/dist/esm/HttpClientResponse.js.map +1 -1
- package/dist/esm/HttpIncomingMessage.js.map +1 -1
- package/dist/esm/HttpMiddleware.js.map +1 -1
- package/dist/esm/HttpMultiplex.js.map +1 -1
- package/dist/esm/HttpRouter.js.map +1 -1
- package/dist/esm/HttpServer.js.map +1 -1
- package/dist/esm/HttpServerResponse.js.map +1 -1
- package/dist/esm/KeyValueStore.js.map +1 -1
- package/dist/esm/Multipart.js.map +1 -1
- package/dist/esm/OpenApi.js.map +1 -1
- package/dist/esm/OpenApiJsonSchema.js +40 -27
- package/dist/esm/OpenApiJsonSchema.js.map +1 -1
- package/dist/esm/PlatformLogger.js.map +1 -1
- package/dist/esm/Socket.js +4 -1
- package/dist/esm/Socket.js.map +1 -1
- package/dist/esm/Transferable.js.map +1 -1
- package/dist/esm/UrlParams.js.map +1 -1
- package/dist/esm/internal/httpClient.js +11 -13
- package/dist/esm/internal/httpClient.js.map +1 -1
- package/dist/esm/internal/httpClientResponse.js +14 -0
- package/dist/esm/internal/httpClientResponse.js.map +1 -1
- package/package.json +3 -3
- package/src/Command.ts +134 -0
- package/src/Cookies.ts +128 -38
- package/src/Effectify.ts +9 -0
- package/src/Headers.ts +106 -7
- package/src/HttpApi.ts +58 -0
- package/src/HttpApiBuilder.ts +85 -3
- package/src/HttpApiEndpoint.ts +121 -9
- package/src/HttpApiGroup.ts +102 -7
- package/src/HttpApiSchema.ts +22 -4
- package/src/HttpApiSecurity.ts +16 -0
- package/src/HttpApp.ts +8 -0
- package/src/HttpClient.ts +315 -11
- package/src/HttpClientError.ts +7 -0
- package/src/HttpClientRequest.ts +213 -1
- package/src/HttpClientResponse.ts +33 -0
- package/src/HttpIncomingMessage.ts +8 -0
- package/src/HttpMiddleware.ts +24 -0
- package/src/HttpMultiplex.ts +72 -0
- package/src/HttpRouter.ts +189 -18
- package/src/HttpServer.ts +34 -6
- package/src/HttpServerResponse.ts +98 -10
- package/src/KeyValueStore.ts +8 -0
- package/src/Multipart.ts +32 -0
- package/src/OpenApi.ts +31 -18
- package/src/OpenApiJsonSchema.ts +39 -21
- package/src/PlatformLogger.ts +46 -0
- package/src/Socket.ts +19 -13
- package/src/Transferable.ts +9 -3
- package/src/UrlParams.ts +64 -0
- package/src/internal/httpClient.ts +41 -26
- package/src/internal/httpClientResponse.ts +40 -1
package/src/UrlParams.ts
CHANGED
|
@@ -71,7 +71,15 @@ export const empty: UrlParams = []
|
|
|
71
71
|
* @category combinators
|
|
72
72
|
*/
|
|
73
73
|
export const getAll: {
|
|
74
|
+
/**
|
|
75
|
+
* @since 1.0.0
|
|
76
|
+
* @category combinators
|
|
77
|
+
*/
|
|
74
78
|
(key: string): (self: UrlParams) => ReadonlyArray<string>
|
|
79
|
+
/**
|
|
80
|
+
* @since 1.0.0
|
|
81
|
+
* @category combinators
|
|
82
|
+
*/
|
|
75
83
|
(self: UrlParams, key: string): ReadonlyArray<string>
|
|
76
84
|
} = dual(
|
|
77
85
|
2,
|
|
@@ -89,7 +97,15 @@ export const getAll: {
|
|
|
89
97
|
* @category combinators
|
|
90
98
|
*/
|
|
91
99
|
export const getFirst: {
|
|
100
|
+
/**
|
|
101
|
+
* @since 1.0.0
|
|
102
|
+
* @category combinators
|
|
103
|
+
*/
|
|
92
104
|
(key: string): (self: UrlParams) => Option.Option<string>
|
|
105
|
+
/**
|
|
106
|
+
* @since 1.0.0
|
|
107
|
+
* @category combinators
|
|
108
|
+
*/
|
|
93
109
|
(self: UrlParams, key: string): Option.Option<string>
|
|
94
110
|
} = dual(2, (self: UrlParams, key: string): Option.Option<string> =>
|
|
95
111
|
Option.map(
|
|
@@ -102,7 +118,15 @@ export const getFirst: {
|
|
|
102
118
|
* @category combinators
|
|
103
119
|
*/
|
|
104
120
|
export const getLast: {
|
|
121
|
+
/**
|
|
122
|
+
* @since 1.0.0
|
|
123
|
+
* @category combinators
|
|
124
|
+
*/
|
|
105
125
|
(key: string): (self: UrlParams) => Option.Option<string>
|
|
126
|
+
/**
|
|
127
|
+
* @since 1.0.0
|
|
128
|
+
* @category combinators
|
|
129
|
+
*/
|
|
106
130
|
(self: UrlParams, key: string): Option.Option<string>
|
|
107
131
|
} = dual(2, (self: UrlParams, key: string): Option.Option<string> =>
|
|
108
132
|
Option.map(
|
|
@@ -115,7 +139,15 @@ export const getLast: {
|
|
|
115
139
|
* @category combinators
|
|
116
140
|
*/
|
|
117
141
|
export const set: {
|
|
142
|
+
/**
|
|
143
|
+
* @since 1.0.0
|
|
144
|
+
* @category combinators
|
|
145
|
+
*/
|
|
118
146
|
(key: string, value: Coercible): (self: UrlParams) => UrlParams
|
|
147
|
+
/**
|
|
148
|
+
* @since 1.0.0
|
|
149
|
+
* @category combinators
|
|
150
|
+
*/
|
|
119
151
|
(self: UrlParams, key: string, value: Coercible): UrlParams
|
|
120
152
|
} = dual(3, (self: UrlParams, key: string, value: Coercible): UrlParams =>
|
|
121
153
|
Arr.append(
|
|
@@ -128,7 +160,15 @@ export const set: {
|
|
|
128
160
|
* @category combinators
|
|
129
161
|
*/
|
|
130
162
|
export const setAll: {
|
|
163
|
+
/**
|
|
164
|
+
* @since 1.0.0
|
|
165
|
+
* @category combinators
|
|
166
|
+
*/
|
|
131
167
|
(input: Input): (self: UrlParams) => UrlParams
|
|
168
|
+
/**
|
|
169
|
+
* @since 1.0.0
|
|
170
|
+
* @category combinators
|
|
171
|
+
*/
|
|
132
172
|
(self: UrlParams, input: Input): UrlParams
|
|
133
173
|
} = dual(2, (self: UrlParams, input: Input): UrlParams => {
|
|
134
174
|
const toSet = fromInput(input)
|
|
@@ -144,7 +184,15 @@ export const setAll: {
|
|
|
144
184
|
* @category combinators
|
|
145
185
|
*/
|
|
146
186
|
export const append: {
|
|
187
|
+
/**
|
|
188
|
+
* @since 1.0.0
|
|
189
|
+
* @category combinators
|
|
190
|
+
*/
|
|
147
191
|
(key: string, value: Coercible): (self: UrlParams) => UrlParams
|
|
192
|
+
/**
|
|
193
|
+
* @since 1.0.0
|
|
194
|
+
* @category combinators
|
|
195
|
+
*/
|
|
148
196
|
(self: UrlParams, key: string, value: Coercible): UrlParams
|
|
149
197
|
} = dual(3, (self: UrlParams, key: string, value: Coercible): UrlParams =>
|
|
150
198
|
Arr.append(
|
|
@@ -157,7 +205,15 @@ export const append: {
|
|
|
157
205
|
* @category combinators
|
|
158
206
|
*/
|
|
159
207
|
export const appendAll: {
|
|
208
|
+
/**
|
|
209
|
+
* @since 1.0.0
|
|
210
|
+
* @category combinators
|
|
211
|
+
*/
|
|
160
212
|
(input: Input): (self: UrlParams) => UrlParams
|
|
213
|
+
/**
|
|
214
|
+
* @since 1.0.0
|
|
215
|
+
* @category combinators
|
|
216
|
+
*/
|
|
161
217
|
(self: UrlParams, input: Input): UrlParams
|
|
162
218
|
} = dual(2, (self: UrlParams, input: Input): UrlParams => Arr.appendAll(self, fromInput(input)))
|
|
163
219
|
|
|
@@ -166,7 +222,15 @@ export const appendAll: {
|
|
|
166
222
|
* @category combinators
|
|
167
223
|
*/
|
|
168
224
|
export const remove: {
|
|
225
|
+
/**
|
|
226
|
+
* @since 1.0.0
|
|
227
|
+
* @category combinators
|
|
228
|
+
*/
|
|
169
229
|
(key: string): (self: UrlParams) => UrlParams
|
|
230
|
+
/**
|
|
231
|
+
* @since 1.0.0
|
|
232
|
+
* @category combinators
|
|
233
|
+
*/
|
|
170
234
|
(self: UrlParams, key: string): UrlParams
|
|
171
235
|
} = dual(2, (self: UrlParams, key: string): UrlParams => Arr.filter(self, ([k]) => k !== key))
|
|
172
236
|
|
|
@@ -12,7 +12,7 @@ import * as Layer from "effect/Layer"
|
|
|
12
12
|
import { pipeArguments } from "effect/Pipeable"
|
|
13
13
|
import * as Predicate from "effect/Predicate"
|
|
14
14
|
import * as Ref from "effect/Ref"
|
|
15
|
-
import
|
|
15
|
+
import * as Schedule from "effect/Schedule"
|
|
16
16
|
import * as Scope from "effect/Scope"
|
|
17
17
|
import * as Cookies from "../Cookies.js"
|
|
18
18
|
import * as Headers from "../Headers.js"
|
|
@@ -24,6 +24,7 @@ import * as TraceContext from "../HttpTraceContext.js"
|
|
|
24
24
|
import * as UrlParams from "../UrlParams.js"
|
|
25
25
|
import * as internalBody from "./httpBody.js"
|
|
26
26
|
import * as internalRequest from "./httpClientRequest.js"
|
|
27
|
+
import * as internalResponse from "./httpClientResponse.js"
|
|
27
28
|
|
|
28
29
|
/** @internal */
|
|
29
30
|
export const TypeId: Client.TypeId = Symbol.for(
|
|
@@ -235,36 +236,13 @@ export const filterStatus = dual<
|
|
|
235
236
|
self: Client.HttpClient.WithResponse<E, R>,
|
|
236
237
|
f: (status: number) => boolean
|
|
237
238
|
) => Client.HttpClient.WithResponse<E | Error.ResponseError, R>
|
|
238
|
-
>(2, (self, f) =>
|
|
239
|
-
transform(self, (effect, request) =>
|
|
240
|
-
Effect.filterOrFail(
|
|
241
|
-
effect,
|
|
242
|
-
(response) => f(response.status),
|
|
243
|
-
(response) =>
|
|
244
|
-
new Error.ResponseError({
|
|
245
|
-
request,
|
|
246
|
-
response,
|
|
247
|
-
reason: "StatusCode",
|
|
248
|
-
description: "invalid status code"
|
|
249
|
-
})
|
|
250
|
-
)))
|
|
239
|
+
>(2, (self, f) => transformResponse(self, Effect.flatMap(internalResponse.filterStatus(f))))
|
|
251
240
|
|
|
252
241
|
/** @internal */
|
|
253
242
|
export const filterStatusOk = <E, R>(
|
|
254
243
|
self: Client.HttpClient.WithResponse<E, R>
|
|
255
244
|
): Client.HttpClient.WithResponse<E | Error.ResponseError, R> =>
|
|
256
|
-
|
|
257
|
-
Effect.filterOrFail(
|
|
258
|
-
effect,
|
|
259
|
-
(response) => response.status >= 200 && response.status < 300,
|
|
260
|
-
(response) =>
|
|
261
|
-
new Error.ResponseError({
|
|
262
|
-
request,
|
|
263
|
-
response,
|
|
264
|
-
reason: "StatusCode",
|
|
265
|
-
description: "non 2xx status code"
|
|
266
|
-
})
|
|
267
|
-
))
|
|
245
|
+
transformResponse(self, Effect.flatMap(internalResponse.filterStatusOk))
|
|
268
246
|
|
|
269
247
|
/** @internal */
|
|
270
248
|
export const transformResponse = dual<
|
|
@@ -653,6 +631,43 @@ export const retry: {
|
|
|
653
631
|
): Client.HttpClient<A, E, R | R1> => transformResponse(self, Effect.retry(policy))
|
|
654
632
|
)
|
|
655
633
|
|
|
634
|
+
/** @internal */
|
|
635
|
+
export const retryTransient: {
|
|
636
|
+
<B, E, R1 = never>(
|
|
637
|
+
options: {
|
|
638
|
+
readonly schedule?: Schedule.Schedule<B, NoInfer<E>, R1>
|
|
639
|
+
readonly times?: number
|
|
640
|
+
} | Schedule.Schedule<B, NoInfer<E>, R1>
|
|
641
|
+
): <A, R>(self: Client.HttpClient<A, E, R>) => Client.HttpClient<A, E, R1 | R>
|
|
642
|
+
<A, E, R, B, R1 = never>(
|
|
643
|
+
self: Client.HttpClient<A, E, R>,
|
|
644
|
+
options: {
|
|
645
|
+
readonly schedule?: Schedule.Schedule<B, NoInfer<E>, R1>
|
|
646
|
+
readonly times?: number
|
|
647
|
+
} | Schedule.Schedule<B, NoInfer<E>, R1>
|
|
648
|
+
): Client.HttpClient<A, E, R1 | R>
|
|
649
|
+
} = dual(
|
|
650
|
+
2,
|
|
651
|
+
<A, E extends E0, E0, R, B, R1 = never>(
|
|
652
|
+
self: Client.HttpClient<A, E, R>,
|
|
653
|
+
options: {
|
|
654
|
+
readonly schedule?: Schedule.Schedule<B, NoInfer<E>, R1>
|
|
655
|
+
readonly times?: number
|
|
656
|
+
} | Schedule.Schedule<B, NoInfer<E>, R1>
|
|
657
|
+
): Client.HttpClient<A, E, R | R1> =>
|
|
658
|
+
transformResponse(
|
|
659
|
+
self,
|
|
660
|
+
Effect.retry({
|
|
661
|
+
while: (error) =>
|
|
662
|
+
Error.isHttpClientError(error) &&
|
|
663
|
+
((error._tag === "RequestError" && error.reason === "Transport") ||
|
|
664
|
+
(error._tag === "ResponseError" && error.response.status >= 429)),
|
|
665
|
+
schedule: Schedule.ScheduleTypeId in options ? options : options.schedule,
|
|
666
|
+
times: Schedule.ScheduleTypeId in options ? undefined : options.times
|
|
667
|
+
})
|
|
668
|
+
)
|
|
669
|
+
)
|
|
670
|
+
|
|
656
671
|
/** @internal */
|
|
657
672
|
export const schemaFunction = dual<
|
|
658
673
|
<SA, SI, SR>(
|
|
@@ -29,7 +29,7 @@ class ClientResponseImpl extends Inspectable.Class implements ClientResponse.Htt
|
|
|
29
29
|
readonly [TypeId]: ClientResponse.TypeId
|
|
30
30
|
|
|
31
31
|
constructor(
|
|
32
|
-
|
|
32
|
+
readonly request: ClientRequest.HttpClientRequest,
|
|
33
33
|
private readonly source: globalThis.Response
|
|
34
34
|
) {
|
|
35
35
|
super()
|
|
@@ -240,3 +240,42 @@ export const matchStatus = dual<
|
|
|
240
240
|
}
|
|
241
241
|
return cases.orElse(self)
|
|
242
242
|
})
|
|
243
|
+
|
|
244
|
+
/** @internal */
|
|
245
|
+
export const filterStatus = dual<
|
|
246
|
+
(
|
|
247
|
+
f: (status: number) => boolean
|
|
248
|
+
) => (
|
|
249
|
+
self: ClientResponse.HttpClientResponse
|
|
250
|
+
) => Effect.Effect<ClientResponse.HttpClientResponse, Error.ResponseError>,
|
|
251
|
+
(
|
|
252
|
+
self: ClientResponse.HttpClientResponse,
|
|
253
|
+
f: (status: number) => boolean
|
|
254
|
+
) => Effect.Effect<ClientResponse.HttpClientResponse, Error.ResponseError>
|
|
255
|
+
>(
|
|
256
|
+
2,
|
|
257
|
+
(self, f) =>
|
|
258
|
+
Effect.suspend(() =>
|
|
259
|
+
f(self.status) ? Effect.succeed(self) : Effect.fail(
|
|
260
|
+
new Error.ResponseError({
|
|
261
|
+
response: self,
|
|
262
|
+
request: self.request,
|
|
263
|
+
reason: "StatusCode",
|
|
264
|
+
description: "invalid status code"
|
|
265
|
+
})
|
|
266
|
+
)
|
|
267
|
+
)
|
|
268
|
+
)
|
|
269
|
+
|
|
270
|
+
/** @internal */
|
|
271
|
+
export const filterStatusOk = (
|
|
272
|
+
self: ClientResponse.HttpClientResponse
|
|
273
|
+
): Effect.Effect<ClientResponse.HttpClientResponse, Error.ResponseError> =>
|
|
274
|
+
self.status >= 200 && self.status < 300 ? Effect.succeed(self) : Effect.fail(
|
|
275
|
+
new Error.ResponseError({
|
|
276
|
+
response: self,
|
|
277
|
+
request: self.request,
|
|
278
|
+
reason: "StatusCode",
|
|
279
|
+
description: "non 2xx status code"
|
|
280
|
+
})
|
|
281
|
+
)
|