forked from guardrail-dev/guardrail
-
Notifications
You must be signed in to change notification settings - Fork 0
/
DropwizardGenerator.scala
104 lines (93 loc) · 5.26 KB
/
DropwizardGenerator.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package com.twilio.guardrail.generators.Java
import cats.~>
import com.github.javaparser.ast.expr._
import com.twilio.guardrail.Target
import com.twilio.guardrail.generators.syntax.Java._
import com.twilio.guardrail.languages.JavaLanguage
import com.twilio.guardrail.terms.framework._
object DropwizardGenerator {
object FrameworkInterp extends (FrameworkTerm[JavaLanguage, ?] ~> Target) {
def apply[T](term: FrameworkTerm[JavaLanguage, T]): Target[T] = term match {
case FileType(format) => safeParseType(format.getOrElse("java.io.File"))
case ObjectType(format) => safeParseType("com.fasterxml.jackson.databind.JsonNode")
case GetFrameworkImports(tracing) =>
Target.pure(List.empty)
case GetFrameworkImplicits() =>
Target.pure(None)
case GetFrameworkDefinitions(tracing) =>
Target.pure(List.empty)
case LookupStatusCode(key) =>
def parseStatusCode(code: Int, termName: String): Target[(Int, Name)] =
safeParseName(termName).map(name => (code, name))
key match {
case "100" => parseStatusCode(100, "Continue")
case "101" => parseStatusCode(101, "SwitchingProtocols")
case "102" => parseStatusCode(102, "Processing")
case "200" => parseStatusCode(200, "Ok")
case "201" => parseStatusCode(201, "Created")
case "202" => parseStatusCode(202, "Accepted")
case "203" => parseStatusCode(203, "NonAuthoritativeInformation")
case "204" => parseStatusCode(204, "NoContent")
case "205" => parseStatusCode(205, "ResetContent")
case "206" => parseStatusCode(206, "PartialContent")
case "207" => parseStatusCode(207, "MultiStatus")
case "208" => parseStatusCode(208, "AlreadyReported")
case "226" => parseStatusCode(226, "IMUsed")
case "300" => parseStatusCode(300, "MultipleChoices")
case "301" => parseStatusCode(301, "MovedPermanently")
case "302" => parseStatusCode(302, "Found")
case "303" => parseStatusCode(303, "SeeOther")
case "304" => parseStatusCode(304, "NotModified")
case "305" => parseStatusCode(305, "UseProxy")
case "307" => parseStatusCode(307, "TemporaryRedirect")
case "308" => parseStatusCode(308, "PermanentRedirect")
case "400" => parseStatusCode(400, "BadRequest")
case "401" => parseStatusCode(401, "Unauthorized")
case "402" => parseStatusCode(402, "PaymentRequired")
case "403" => parseStatusCode(403, "Forbidden")
case "404" => parseStatusCode(404, "NotFound")
case "405" => parseStatusCode(405, "MethodNotAllowed")
case "406" => parseStatusCode(406, "NotAcceptable")
case "407" => parseStatusCode(407, "ProxyAuthenticationRequired")
case "408" => parseStatusCode(408, "RequestTimeout")
case "409" => parseStatusCode(409, "Conflict")
case "410" => parseStatusCode(410, "Gone")
case "411" => parseStatusCode(411, "LengthRequired")
case "412" => parseStatusCode(412, "PreconditionFailed")
case "413" => parseStatusCode(413, "RequestEntityTooLarge")
case "414" => parseStatusCode(414, "RequestUriTooLong")
case "415" => parseStatusCode(415, "UnsupportedMediaType")
case "416" => parseStatusCode(416, "RequestedRangeNotSatisfiable")
case "417" => parseStatusCode(417, "ExpectationFailed")
case "418" => parseStatusCode(418, "ImATeapot")
case "420" => parseStatusCode(420, "EnhanceYourCalm")
case "422" => parseStatusCode(422, "UnprocessableEntity")
case "423" => parseStatusCode(423, "Locked")
case "424" => parseStatusCode(424, "FailedDependency")
case "425" => parseStatusCode(425, "UnorderedCollection")
case "426" => parseStatusCode(426, "UpgradeRequired")
case "428" => parseStatusCode(428, "PreconditionRequired")
case "429" => parseStatusCode(429, "TooManyRequests")
case "431" => parseStatusCode(431, "RequestHeaderFieldsTooLarge")
case "449" => parseStatusCode(449, "RetryWith")
case "450" => parseStatusCode(450, "BlockedByParentalControls")
case "451" => parseStatusCode(451, "UnavailableForLegalReasons")
case "500" => parseStatusCode(500, "InternalServerError")
case "501" => parseStatusCode(501, "NotImplemented")
case "502" => parseStatusCode(502, "BadGateway")
case "503" => parseStatusCode(503, "ServiceUnavailable")
case "504" => parseStatusCode(504, "GatewayTimeout")
case "505" => parseStatusCode(505, "HTTPVersionNotSupported")
case "506" => parseStatusCode(506, "VariantAlsoNegotiates")
case "507" => parseStatusCode(507, "InsufficientStorage")
case "508" => parseStatusCode(508, "LoopDetected")
case "509" => parseStatusCode(509, "BandwidthLimitExceeded")
case "510" => parseStatusCode(510, "NotExtended")
case "511" => parseStatusCode(511, "NetworkAuthenticationRequired")
case "598" => parseStatusCode(598, "NetworkReadTimeout")
case "599" => parseStatusCode(599, "NetworkConnectTimeout")
case _ => Target.raiseError(s"Unknown HTTP status code: ${key}")
}
}
}
}