Skip to content

Commit eec01ad

Browse files
authored
Merge pull request #45 from carrypann/develop
feature: 提供HTTP常用枚举和常量 #43
2 parents b63294d + bb1b79f commit eec01ad

3 files changed

Lines changed: 178 additions & 0 deletions

File tree

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package com.tencent.devops.api.http
2+
3+
/**
4+
* HTTP Header常量
5+
*/
6+
object HttpHeaders {
7+
const val ACCEPT = "Accept"
8+
const val ACCEPT_CHARSET = "Accept-Charset"
9+
const val ACCEPT_ENCODING = "Accept-Encoding"
10+
const val ACCEPT_LANGUAGE = "Accept-Language"
11+
const val ACCEPT_RANGES = "Accept-Ranges"
12+
const val AGE = "Age"
13+
const val ALLOW = "Allow"
14+
const val AUTHORIZATION = "Authorization"
15+
const val CACHE_CONTROL = "Cache-Control"
16+
const val CONNECTION = "Connection"
17+
const val CONTENT_DISPOSITION = "Content-DISPOSITION"
18+
const val CONTENT_ENCODING = "Content-Encoding"
19+
const val CONTENT_LANGUAGE = "Content-Language"
20+
const val CONTENT_LENGTH = "Content-Length"
21+
const val CONTENT_LOCATION = "Content-Location"
22+
const val CONTENT_MD5 = "Content-MD5"
23+
const val CONTENT_RANGE = "Content-Range"
24+
const val CONTENT_TYPE = "Content-Type"
25+
const val DATE = "Date"
26+
const val DAV = "Dav"
27+
const val DEPTH = "Depth"
28+
const val DESTINATION = "Destination"
29+
const val ETAG = "ETag"
30+
const val EXPECT = "Expect"
31+
const val EXPIRES = "Expires"
32+
const val FROM = "From"
33+
const val HOST = "Host"
34+
const val IF = "If"
35+
const val IF_MATCH = "If-Match"
36+
const val IF_MODIFIED_SINCE = "If-Modified-Since"
37+
const val IF_NONE_MATCH = "If-None-Match"
38+
const val IF_RANGE = "If-Range"
39+
const val IF_UNMODIFIED_SINCE = "If-Unmodified-Since"
40+
const val LAST_MODIFIED = "Last-Modified"
41+
const val LOCATION = "Location"
42+
const val LOCK_TOKEN = "Lock-Token"
43+
const val MAX_FORWARDS = "Max-Forwards"
44+
const val OVERWRITE = "Overwrite"
45+
const val PRAGMA = "Pragma"
46+
const val PROXY_AUTHENTICATE = "Proxy-Authenticate"
47+
const val PROXY_AUTHORIZATION = "Proxy-Authorization"
48+
const val RANGE = "Range"
49+
const val REFERER = "Referer"
50+
const val RETRY_AFTER = "Retry-After"
51+
const val SERVER = "Server"
52+
const val STATUS_URI = "Status-URI"
53+
const val TE = "TE"
54+
const val TIMEOUT = "Timeout"
55+
const val TRAILER = "Trailer"
56+
const val TRANSFER_ENCODING = "Transfer-Encoding"
57+
const val UPGRADE = "Upgrade"
58+
const val USER_AGENT = "User-Agent"
59+
const val VARY = "Vary"
60+
const val VIA = "Via"
61+
const val WARNING = "Warning"
62+
const val WWW_AUTHENTICATE = "WWW-Authenticate"
63+
}
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
package com.tencent.devops.api.http
2+
3+
/**
4+
* HTTP 状态码枚举类
5+
*/
6+
enum class HttpStatus(
7+
val code: Int,
8+
val reasonPhrase: String
9+
) {
10+
CONTINUE(100, "Continue"),
11+
SWITCHING_PROTOCOLS(101, "Switching Protocols"),
12+
PROCESSING(102, "Processing"),
13+
CHECKPOINT(103, "Checkpoint"),
14+
OK(200, "OK"),
15+
CREATED(201, "Created"),
16+
ACCEPTED(202, "Accepted"),
17+
NON_AUTHORITATIVE_INFORMATION(203, "Non-Authoritative Information"),
18+
NO_CONTENT(204, "No Content"),
19+
RESET_CONTENT(205, "Reset Content"),
20+
PARTIAL_CONTENT(206, "Partial Content"),
21+
MULTI_STATUS(207, "Multi-Status"),
22+
ALREADY_REPORTED(208, "Already Reported"),
23+
IM_USED(226, "IM Used"), // 3xx Redirection
24+
MULTIPLE_CHOICES(300, "Multiple Choices"),
25+
MOVED_PERMANENTLY(301, "Moved Permanently"),
26+
FOUND(302, "Found"),
27+
MOVED_TEMPORARILY(302, "Moved Temporarily"),
28+
SEE_OTHER(303, "See Other"),
29+
NOT_MODIFIED(304, "Not Modified"),
30+
USE_PROXY(305, "Use Proxy"),
31+
TEMPORARY_REDIRECT(307, "Temporary Redirect"),
32+
PERMANENT_REDIRECT(308, "Permanent Redirect"), // --- 4xx Client Error ---
33+
BAD_REQUEST(400, "Bad Request"),
34+
UNAUTHORIZED(401, "Unauthorized"),
35+
PAYMENT_REQUIRED(402, "Payment Required"),
36+
FORBIDDEN(403, "Forbidden"),
37+
NOT_FOUND(404, "Not Found"),
38+
METHOD_NOT_ALLOWED(405, "Method Not Allowed"),
39+
NOT_ACCEPTABLE(406, "Not Acceptable"),
40+
PROXY_AUTHENTICATION_REQUIRED(407, "Proxy Authentication Required"),
41+
REQUEST_TIMEOUT(408, "Request Timeout"),
42+
CONFLICT(409, "Conflict"),
43+
GONE(410, "Gone"),
44+
LENGTH_REQUIRED(411, "Length Required"),
45+
PRECONDITION_FAILED(412, "Precondition Failed"),
46+
PAYLOAD_TOO_LARGE(413, "Payload Too Large"),
47+
REQUEST_ENTITY_TOO_LARGE(413, "Request Entity Too Large"),
48+
URI_TOO_LONG(414, "URI Too Long"),
49+
REQUEST_URI_TOO_LONG(414, "Request-URI Too Long"),
50+
UNSUPPORTED_MEDIA_TYPE(415, "Unsupported Media Type"),
51+
REQUESTED_RANGE_NOT_SATISFIABLE(416, "Requested range not satisfiable"),
52+
EXPECTATION_FAILED(417, "Expectation Failed"),
53+
I_AM_A_TEAPOT(418, "I'm a teapot"),
54+
INSUFFICIENT_SPACE_ON_RESOURCE(419, "Insufficient Space On Resource"),
55+
METHOD_FAILURE(420, "Method Failure"),
56+
DESTINATION_LOCKED(421, "Destination Locked"),
57+
UNPROCESSABLE_ENTITY(422, "Unprocessable Entity"),
58+
LOCKED(423, "Locked"),
59+
FAILED_DEPENDENCY(424, "Failed Dependency"),
60+
TOO_EARLY(425, "Too Early"),
61+
UPGRADE_REQUIRED(426, "Upgrade Required"),
62+
PRECONDITION_REQUIRED(428, "Precondition Required"),
63+
TOO_MANY_REQUESTS(429, "Too Many Requests"),
64+
REQUEST_HEADER_FIELDS_TOO_LARGE(431, "Request Header Fields Too Large"),
65+
UNAVAILABLE_FOR_LEGAL_REASONS(451, "Unavailable For Legal Reasons"), // --- 5xx Server Error ---
66+
INTERNAL_SERVER_ERROR(500, "Internal Server Error"),
67+
NOT_IMPLEMENTED(501, "Not Implemented"),
68+
BAD_GATEWAY(502, "Bad Gateway"),
69+
SERVICE_UNAVAILABLE(503, "Service Unavailable"),
70+
GATEWAY_TIMEOUT(504, "Gateway Timeout"),
71+
HTTP_VERSION_NOT_SUPPORTED(505, "HTTP Versio n not supported"),
72+
VARIANT_ALSO_NEGOTIATES(506, "Variant Also Negotiates"),
73+
INSUFFICIENT_STORAGE(507, "Insufficient Storage"),
74+
LOOP_DETECTED(508, "Loop Detected"),
75+
BANDWIDTH_LIMIT_EXCEEDED(509, "Bandwidth Limit Exceeded"),
76+
NOT_EXTENDED(510, "Not Extended"),
77+
NETWORK_AUTHENTICATION_REQUIRED(511, "Network Authentication Required");
78+
79+
companion object {
80+
81+
/**
82+
* 根据[code]查询HttpStatus
83+
* 当[code]对应的HttpStatus不存在时抛出[IllegalArgumentException]异常
84+
*/
85+
fun ofCode(code: Int): HttpStatus {
86+
return ofCodeOrNull(code) ?: throw IllegalArgumentException("No matching constant for [$code]")
87+
}
88+
89+
/**
90+
* 根据[code]查询HttpStatus
91+
* 当[code]对应的HttpStatus不存在时返回null
92+
*/
93+
fun ofCodeOrNull(code: Int): HttpStatus? {
94+
for (status in values()) {
95+
if (status.code == code) {
96+
return status
97+
}
98+
}
99+
return null
100+
}
101+
}
102+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.tencent.devops.api.http
2+
3+
/**
4+
* HTTP Media Type常量
5+
*/
6+
object MediaTypes {
7+
const val APPLICATION_OCTET_STREAM = "application/octet-stream"
8+
const val APPLICATION_JSON = "application/json; charset=utf-8"
9+
const val TEXT_HTML = "text/html"
10+
const val APPLICATION_YAML = "application/x-yaml"
11+
const val APPLICATION_TGZ = "application/x-tar"
12+
const val APPLICATION_ICO= "image/x-icon"
13+
}

0 commit comments

Comments
 (0)