1
2
3
4
5
6
7
8
9
10
11
12
13
14 package ch.mimo.netty.handler.codec.icap;
15
16 import org.jboss.netty.buffer.ChannelBuffer;
17
18
19
20
21
22
23
24 public enum IcapResponseStatus {
25 CONTINUE(100,"Continue"),
26 SWITCHING_PROTOCOLS(101,"Switching Protocols"),
27 PROCESSING(102,"Processing"),
28 OK(200,"OK"),
29 CREATED(201,"Created"),
30 ACCEPTED(202,"Accepted"),
31 NON_AUTHORITATIVE_INFORMATION(203,"Non-Authoritative Information"),
32 NO_CONTENT(204,"No Content"),
33 RESET_CONTENT(205,"Reset Content"),
34 PARTIAL_CONTENT(206,"Partial Content"),
35 MULTI_STATUS(207,"Multi-Status"),
36 MULTIPLE_CHIOCES(207,"Multiple-Choices"),
37 MOVED_PERMANENTLY(301,"Moved Permanently"),
38 FOUND(302,"Found"),
39 SEE_OTHER(303,"See Other"),
40 NOT_MODIFIED(304,"Not Modified"),
41 USE_PROXY(305,"Use Proxy"),
42 TEMPORARY_REDIRECT(307,"Temporary Redirect"),
43 BAD_REQUEST(400,"Bad Request"),
44 UNAUTHORIZED(401,"Unauthorized"),
45 PAYMENT_REQUIRED(402,"Payment Required"),
46 FORBIDDEN(403,"Fobidden"),
47 ICAP_SERVICE_NOT_FOUND(404,"ICAP Service not found"),
48 METHOD_NOT_ALLOWED(405,"Method not allowed for service"),
49 NOT_ACCEPTABLE(406,"Not Acceptable"),
50 PROXY_AUTHENTICATION_REQUIRED(407,"Proxy Authentication Required"),
51 REQUEST_TIMEOUT(408,"Request timeout"),
52 CONFLICT(409,"Conflict"),
53 GONE(410,"Gone"),
54 LENGTH_REQUIRED(411,"Length Required"),
55 PRECONDITION_FAILED(412,"Precondition Failed"),
56 REQUEST_ENTITY_TOO_LARGE(413,"Request Entity Too Large"),
57 REQUEST_URI_TOO_LONG(414,"Request-URI Too Long"),
58 UNSUPPORTED_MEDIA_TYPE(415,"Unsupported Media Type"),
59 REQUESTED_RANGE_NOT_SATISFIABLE(416,"Requested Range Not Satisfiable"),
60 EXPECTATION_FAILED(417,"Expectation Failed"),
61 UNPROCESSABLE_ENTITY(422,"Unprocessable Entity"),
62 LOCKED(423,"Locked"),
63 FAILED_DEPENDENCY(424,"Failed Dependency"),
64 UNORDERED_COLLECTION(425,"Unordered Collection"),
65 UPGRADE_REQUIRED(426,"Upgrade Required"),
66 SERVER_ERROR(500,"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 ICAP_VERSION_NOT_SUPPORTED(505,"ICAP Version Not Supported"),
72 VARIANT_ALSO_NEGOTIATES(506,"Variant Also Negotiates"),
73 INSUFFICIENT_STORAGE(507,"Insufficient Storage"),
74 NOT_EXTENDED(510,"Not Extended");
75
76
77 private String status;
78 private int code;
79
80 IcapResponseStatus(int code, String status) {
81 this.code = code;
82 this.status = status;
83 }
84
85 public int getCode() {
86 return code;
87 }
88
89 public void toResponseInitialLineValue(ChannelBuffer buffer) {
90 buffer.writeBytes(Integer.toString(code).getBytes(IcapCodecUtil.ASCII_CHARSET));
91 buffer.writeByte(IcapCodecUtil.SPACE);
92 buffer.writeBytes(status.getBytes(IcapCodecUtil.ASCII_CHARSET));
93 }
94
95 public static IcapResponseStatus fromCode(String code) {
96 for(IcapResponseStatus status : IcapResponseStatus.values()) {
97 if(Integer.toString(status.getCode()).equalsIgnoreCase(code)) {
98 return status;
99 }
100 }
101 throw new IllegalArgumentException("Unknown Icap response code [" + code + "]");
102 }
103 }