|
1 |
| -@file:JvmName("ErrorHandler") |
| 1 | +// File generated from our OpenAPI spec by Stainless. |
2 | 2 |
|
3 | 3 | package org.onebusaway.core.handlers
|
4 | 4 |
|
5 | 5 | import com.fasterxml.jackson.databind.json.JsonMapper
|
6 |
| -import java.io.ByteArrayInputStream |
7 |
| -import java.io.InputStream |
8 |
| -import org.onebusaway.core.http.Headers |
| 6 | +import org.onebusaway.core.JsonMissing |
| 7 | +import org.onebusaway.core.JsonValue |
9 | 8 | import org.onebusaway.core.http.HttpResponse
|
10 | 9 | import org.onebusaway.core.http.HttpResponse.Handler
|
11 | 10 | import org.onebusaway.errors.BadRequestException
|
12 | 11 | import org.onebusaway.errors.InternalServerException
|
13 | 12 | import org.onebusaway.errors.NotFoundException
|
14 |
| -import org.onebusaway.errors.OnebusawaySdkError |
15 | 13 | import org.onebusaway.errors.PermissionDeniedException
|
16 | 14 | import org.onebusaway.errors.RateLimitException
|
17 | 15 | import org.onebusaway.errors.UnauthorizedException
|
18 | 16 | import org.onebusaway.errors.UnexpectedStatusCodeException
|
19 | 17 | import org.onebusaway.errors.UnprocessableEntityException
|
20 | 18 |
|
21 |
| -internal fun errorHandler(jsonMapper: JsonMapper): Handler<OnebusawaySdkError> { |
22 |
| - val handler = jsonHandler<OnebusawaySdkError>(jsonMapper) |
| 19 | +internal fun errorHandler(jsonMapper: JsonMapper): Handler<JsonValue> { |
| 20 | + val handler = jsonHandler<JsonValue>(jsonMapper) |
23 | 21 |
|
24 |
| - return object : Handler<OnebusawaySdkError> { |
25 |
| - override fun handle(response: HttpResponse): OnebusawaySdkError = |
| 22 | + return object : Handler<JsonValue> { |
| 23 | + override fun handle(response: HttpResponse): JsonValue = |
26 | 24 | try {
|
27 | 25 | handler.handle(response)
|
28 | 26 | } catch (e: Exception) {
|
29 |
| - OnebusawaySdkError.builder().build() |
| 27 | + JsonMissing.of() |
30 | 28 | }
|
31 | 29 | }
|
32 | 30 | }
|
33 | 31 |
|
34 |
| -internal fun <T> Handler<T>.withErrorHandler( |
35 |
| - errorHandler: Handler<OnebusawaySdkError> |
36 |
| -): Handler<T> = |
| 32 | +internal fun <T> Handler<T>.withErrorHandler(errorHandler: Handler<JsonValue>): Handler<T> = |
37 | 33 | object : Handler<T> {
|
38 |
| - override fun handle(response: HttpResponse): T { |
| 34 | + override fun handle(response: HttpResponse): T = |
39 | 35 | when (val statusCode = response.statusCode()) {
|
40 |
| - in 200..299 -> { |
41 |
| - return this@withErrorHandler.handle(response) |
42 |
| - } |
43 |
| - 400 -> { |
44 |
| - val buffered = response.buffered() |
45 |
| - throw BadRequestException( |
46 |
| - buffered.headers(), |
47 |
| - stringHandler().handle(buffered), |
48 |
| - errorHandler.handle(buffered), |
49 |
| - ) |
50 |
| - } |
51 |
| - 401 -> { |
52 |
| - val buffered = response.buffered() |
53 |
| - throw UnauthorizedException( |
54 |
| - buffered.headers(), |
55 |
| - stringHandler().handle(buffered), |
56 |
| - errorHandler.handle(buffered), |
57 |
| - ) |
58 |
| - } |
59 |
| - 403 -> { |
60 |
| - val buffered = response.buffered() |
61 |
| - throw PermissionDeniedException( |
62 |
| - buffered.headers(), |
63 |
| - stringHandler().handle(buffered), |
64 |
| - errorHandler.handle(buffered), |
65 |
| - ) |
66 |
| - } |
67 |
| - 404 -> { |
68 |
| - val buffered = response.buffered() |
69 |
| - throw NotFoundException( |
70 |
| - buffered.headers(), |
71 |
| - stringHandler().handle(buffered), |
72 |
| - errorHandler.handle(buffered), |
73 |
| - ) |
74 |
| - } |
75 |
| - 422 -> { |
76 |
| - val buffered = response.buffered() |
77 |
| - throw UnprocessableEntityException( |
78 |
| - buffered.headers(), |
79 |
| - stringHandler().handle(buffered), |
80 |
| - errorHandler.handle(buffered), |
81 |
| - ) |
82 |
| - } |
83 |
| - 429 -> { |
84 |
| - val buffered = response.buffered() |
85 |
| - throw RateLimitException( |
86 |
| - buffered.headers(), |
87 |
| - stringHandler().handle(buffered), |
88 |
| - errorHandler.handle(buffered), |
89 |
| - ) |
90 |
| - } |
91 |
| - in 500..599 -> { |
92 |
| - val buffered = response.buffered() |
93 |
| - throw InternalServerException( |
94 |
| - statusCode, |
95 |
| - buffered.headers(), |
96 |
| - stringHandler().handle(buffered), |
97 |
| - errorHandler.handle(buffered), |
98 |
| - ) |
99 |
| - } |
100 |
| - else -> { |
101 |
| - val buffered = response.buffered() |
102 |
| - throw UnexpectedStatusCodeException( |
103 |
| - statusCode, |
104 |
| - buffered.headers(), |
105 |
| - stringHandler().handle(buffered), |
106 |
| - errorHandler.handle(buffered), |
107 |
| - ) |
108 |
| - } |
| 36 | + in 200..299 -> this@withErrorHandler.handle(response) |
| 37 | + 400 -> |
| 38 | + throw BadRequestException.builder() |
| 39 | + .headers(response.headers()) |
| 40 | + .body(errorHandler.handle(response)) |
| 41 | + .build() |
| 42 | + 401 -> |
| 43 | + throw UnauthorizedException.builder() |
| 44 | + .headers(response.headers()) |
| 45 | + .body(errorHandler.handle(response)) |
| 46 | + .build() |
| 47 | + 403 -> |
| 48 | + throw PermissionDeniedException.builder() |
| 49 | + .headers(response.headers()) |
| 50 | + .body(errorHandler.handle(response)) |
| 51 | + .build() |
| 52 | + 404 -> |
| 53 | + throw NotFoundException.builder() |
| 54 | + .headers(response.headers()) |
| 55 | + .body(errorHandler.handle(response)) |
| 56 | + .build() |
| 57 | + 422 -> |
| 58 | + throw UnprocessableEntityException.builder() |
| 59 | + .headers(response.headers()) |
| 60 | + .body(errorHandler.handle(response)) |
| 61 | + .build() |
| 62 | + 429 -> |
| 63 | + throw RateLimitException.builder() |
| 64 | + .headers(response.headers()) |
| 65 | + .body(errorHandler.handle(response)) |
| 66 | + .build() |
| 67 | + in 500..599 -> |
| 68 | + throw InternalServerException.builder() |
| 69 | + .statusCode(statusCode) |
| 70 | + .headers(response.headers()) |
| 71 | + .body(errorHandler.handle(response)) |
| 72 | + .build() |
| 73 | + else -> |
| 74 | + throw UnexpectedStatusCodeException.builder() |
| 75 | + .statusCode(statusCode) |
| 76 | + .headers(response.headers()) |
| 77 | + .body(errorHandler.handle(response)) |
| 78 | + .build() |
109 | 79 | }
|
110 |
| - } |
111 | 80 | }
|
112 |
| - |
113 |
| -private fun HttpResponse.buffered(): HttpResponse { |
114 |
| - val body = body().readBytes() |
115 |
| - |
116 |
| - return object : HttpResponse { |
117 |
| - override fun statusCode(): Int = this@buffered.statusCode() |
118 |
| - |
119 |
| - override fun headers(): Headers = this@buffered.headers() |
120 |
| - |
121 |
| - override fun body(): InputStream = ByteArrayInputStream(body) |
122 |
| - |
123 |
| - override fun close() = this@buffered.close() |
124 |
| - } |
125 |
| -} |
0 commit comments