Skip to content

Instantly share code, notes, and snippets.

@MichaH
Last active April 5, 2016 06:42
Show Gist options
  • Save MichaH/f9d57514e680c4bb20b38e2b49e9e39d to your computer and use it in GitHub Desktop.
Save MichaH/f9d57514e680c4bb20b38e2b49e9e39d to your computer and use it in GitHub Desktop.
The http status codes (source: wikipedia) cast into an enum class; german descriptions as comments
/*
* O R A N G E O B J E C T S
* http://www.OrangeObjects.de
*
*/
package com.orangeobjects.abest.trans.async;
/**
*
* @author Michael Hofmann <Michael.Hofmann@OrangeObjects.de>
*/
public enum AdapterStatusCode {
// Die laufende Anfrage an den Server wurde noch nicht zurückgewiesen. (Wird im Zusammenhang mit dem Expect 100-continue-Header-Feld verwendet.) Der Client kann nun mit der potentiell sehr großen Anfrage fortfahren.
Continue(100, "Continue", ""),
// Wird verwendet, wenn der Server eine Anfrage mit gesetztem Upgrade-Header-Feld empfangen hat und mit dem Wechsel zu einem anderen Protokoll einverstanden ist. Anwendung findet dieser Status-Code beispielsweise im Wechsel von HTTP zu WebSocket.
SwitchingProtocols(101, "Switching Protocols", ""),
// Wird verwendet, um ein Timeout zu vermeiden, während der Server eine zeitintensive Anfrage bearbeitet.
Processing(102, "Processing", ""),
// Die Anfrage wurde erfolgreich bearbeitet und das Ergebnis der Anfrage wird in der Antwort übertragen.
OK(200, "OK", ""),
// Die Anfrage wurde erfolgreich bearbeitet. Die angeforderte Ressource wurde vor dem Senden der Antwort erstellt. Das Location-Header-Feld enthält eventuell die Adresse der erstellten Ressource.
Created(201, "Created", ""),
// Die Anfrage wurde akzeptiert, wird aber zu einem späteren Zeitpunkt ausgeführt. Das Gelingen der Anfrage kann nicht garantiert werden.
Accepted(202, "Accepted", ""),
// Der Server agiert als Transforming Proxy, erhielt eine 200 OK Antwort von der Quelle und antwortet mit einem veränderten Dokument der Quelle.
NonAuthoritativeInformation(203, "Non-Authoritative Information", ""),
// Die Anfrage wurde erfolgreich durchgeführt, die Antwort enthält jedoch bewusst keine Daten.
NoContent(204, "No Content", ""),
// Die Anfrage wurde erfolgreich durchgeführt; der Client soll das Dokument neu aufbauen und Formulareingaben zurücksetzen.
ResetContent(205, "Reset Content", ""),
// Der angeforderte Teil wurde erfolgreich übertragen (wird im Zusammenhang mit einem Content-Range-Header-Feld oder dem Content-Type multipart/byteranges verwendet). Kann einen Client über Teil-Downloads informieren (wird zum Beispiel von Wget genutzt, um den Downloadfortschritt zu überwachen oder einen Download in mehrere Streams aufzuteilen).
PartialContent(206, "Partial Content", ""),
// Die Antwort enthält ein XML-Dokument, das mehrere Statuscodes zu unabhängig voneinander durchgeführten Operationen enthält.
MultiStatus(207, "Multi-Status", ""),
// WebDAV RFC 5842 – Die Mitglieder einer WebDAV-Bindung wurden bereits zuvor aufgezählt und sind in dieser Anfrage nicht mehr vorhanden.
AlreadyReported(208, "Already Reported", ""),
// RFC 3229 – Der Server hat eine GET-Anforderung für die Ressource erfüllt, die Antwort ist eine Darstellung des Ergebnisses von einem oder mehreren Instanz-Manipulationen, bezogen auf die aktuelle Instanz.
IMUsed(226, "IM Used", ""),
// Die angeforderte Ressource steht in verschiedenen Arten zur Verfügung. Die Antwort enthält eine Liste der verfügbaren Arten. Das Location-Header-Feld enthält eventuell die Adresse der vom Server bevorzugten Repräsentation.
MultipleChoices(300, "Multiple Choices", ""),
// Die angeforderte Ressource steht ab sofort unter der im Location-Header-Feld angegebenen Adresse bereit (auch Redirect genannt). Die alte Adresse ist nicht länger gültig.
MovedPermanently(301, "Moved Permanently", ""),
// Die angeforderte Ressource steht vorübergehend unter der im Location-Header-Feld angegebenen Adresse bereit. Die alte Adresse bleibt gültig. Die Browser folgen meist mit einem GET, auch wenn der ursprüngliche Request ein POST war. Wird in HTTP/1.1 je nach Anwendungsfall durch die Statuscodes 303 bzw. 307 ersetzt. 302-Weiterleitung ist aufgrund eines Suchmaschinen-Fehlers, dem URL-Hijacking, in Kritik geraten.
Found(302, "Found", ""),
// Die Antwort auf die durchgeführte Anfrage lässt sich unter der im Location-Header-Feld angegebenen Adresse beziehen. Der Browser soll mit einem GET folgen, auch wenn der ursprüngliche Request ein POST war.
SeeOther(303, "See Other", ""),
// Der Inhalt der angeforderten Ressource hat sich seit der letzten Abfrage des Clients nicht verändert und wird deshalb nicht übertragen. Zu den Einzelheiten siehe Browser-Cache-Versionsvergleich.
NotModified(304, "Not Modified", ""),
// Die angeforderte Ressource ist nur über einen Proxy erreichbar. Das Location-Header-Feld enthält die Adresse des Proxy.
UseProxy(305, "Use Proxy", ""),
// Die angeforderte Ressource steht vorübergehend unter der im Location-Header-Feld angegebenen Adresse bereit. Die alte Adresse bleibt gültig. Der Browser soll mit derselben Methode folgen wie beim ursprünglichen Request (d. h. einem POST folgt ein POST). Dies ist der wesentliche Unterschied zu 302/303.
TemporaryRedirect(307, "Temporary Redirect", ""),
// Experimentell eingeführt via RFC; die angeforderte Ressource steht ab sofort unter der im Location-Header-Feld angegebenen Adresse bereit, die alte Adresse ist nicht länger gültig. Der Browser soll mit derselben Methode folgen wie beim ursprünglichen Request (d. h. einem POST folgt ein POST). Dies ist der wesentliche Unterschied zu 302/303.
PermanentRedirect(308, "Permanent Redirect", ""),
// Die Anfrage-Nachricht war fehlerhaft aufgebaut.
BadRequest(400, "Bad Request", ""),
// Die Anfrage kann nicht ohne gültige Authentifizierung durchgeführt werden. Wie die Authentifizierung durchgeführt werden soll, wird im WWW-Authenticate-Header-Feld der Antwort übermittelt.
Unauthorized(401, "Unauthorized", ""),
// Übersetzt: Bezahlung benötigt. Dieser Status ist für zukünftige HTTP-Protokolle reserviert.
PaymentRequired(402, "Payment Required", ""),
// Die Anfrage wurde mangels Berechtigung des Clients nicht durchgeführt, bspw. weil der authentifizierte Benutzer nicht berechtigt ist, oder eine als HTTPS konfigurierte URL nur mit HTTP aufgerufen wurde.
Forbidden(403, "Forbidden", ""),
// Die angeforderte Ressource wurde nicht gefunden. Dieser Statuscode kann ebenfalls verwendet werden, um eine Anfrage ohne näheren Grund abzuweisen. Links, welche auf solche Fehlerseiten verweisen, werden auch als Tote Links bezeichnet.
NotFound(404, "Not Found", ""),
// Die Anfrage darf nur mit anderen HTTP-Methoden (zum Beispiel GET statt POST) gestellt werden. Gültige Methoden für die betreffende Ressource werden im Allow-Header-Feld der Antwort übermittelt.
MethodNotAllowed(405, "Method Not Allowed", ""),
// Die angeforderte Ressource steht nicht in der gewünschten Form zur Verfügung. Gültige Content-Type-Werte können in der Antwort übermittelt werden.
NotAcceptable(406, "Not Acceptable", ""),
// Analog zum Statuscode 401 ist hier zunächst eine Authentifizierung des Clients gegenüber dem verwendeten Proxy erforderlich. Wie die Authentifizierung durchgeführt werden soll, wird im Proxy-Authenticate-Header-Feld der Antwort übermittelt.
ProxyAuthenticationRequired(407, "Proxy Authentication Required", ""),
// Innerhalb der vom Server erlaubten Zeitspanne wurde keine vollständige Anfrage des Clients empfangen.
RequestTimeOut(408, "Request Time-out", ""),
// Die Anfrage wurde unter falschen Annahmen gestellt. Im Falle einer PUT-Anfrage kann dies zum Beispiel auf eine zwischenzeitliche Veränderung der Ressource durch Dritte zurückgehen.
Conflict(409, "Conflict", ""),
// Die angeforderte Ressource wird nicht länger bereitgestellt und wurde dauerhaft entfernt.
Gone(410, "Gone", ""),
// Die Anfrage kann ohne ein Content-Length-Header-Feld nicht bearbeitet werden.
LengthRequired(411, "Length Required", ""),
// Eine in der Anfrage übertragene Voraussetzung, zum Beispiel in Form eines If-Match-Header-Felds, traf nicht zu.
PreconditionFailed(412, "Precondition Failed", ""),
// Die gestellte Anfrage war zu groß, um vom Server bearbeitet werden zu können. Ein Retry-After-Header-Feld in der Antwort kann den Client darauf hinweisen, dass die Anfrage eventuell zu einem späteren Zeitpunkt bearbeitet werden könnte.
RequestEntityTooLarge(413, "Request Entity Too Large", ""),
// Die URL der Anfrage war zu lang. Ursache ist oft eine Endlosschleife aus Redirects.
RequestURLTooLong(414, "Request-URL Too Long", ""),
// Der Inhalt der Anfrage wurde mit ungültigem oder nicht erlaubtem Medientyp übermittelt.
UnsupportedMediaType(415, "Unsupported Media Type", ""),
// Der angeforderte Teil einer Ressource war ungültig oder steht auf dem Server nicht zur Verfügung.
RequestedRangeNotSatisfiable(416, "Requested range not satisfiable", ""),
// Verwendet im Zusammenhang mit einem Expect-Header-Feld. Das im Expect-Header-Feld geforderte Verhalten des Servers kann nicht erfüllt werden.
ExpectationFailed(417, "Expectation Failed", ""),
// Dieser Code ist als Aprilscherz der IETF zu verstehen, welcher näher unter RFC 2324, Hyper Text Coffee Pot Control Protocol, beschrieben ist. Innerhalb eines scherzhaften Protokolls zum Kaffeekochen zeigt er an, dass fälschlicherweise eine Teekanne anstatt einer Kaffeekanne verwendet wurde. Dieser Statuscode ist allerdings kein Bestandteil von HTTP, sondern lediglich von HTCPCP (Hyper Text Coffee Pot Control Protocol). Trotzdem ist dieser Scherz-Statuscode auf einigen Webseiten zu finden, real wird aber der Statuscode 200 gesendet.
IAmATeapot(418, "I’m a teapot", ""),
// In W3C PEP (Working Draft 21. November 1997) wird dieser Code vorgeschlagen, um mitzuteilen, dass eine Bedingung nicht erfüllt wurde.
PolicyNotFulfilled(420, "Policy Not Fulfilled", ""),
// Die Anfrage wurde an einen Server gesendet, der nicht in der Lage ist, eine Antwort zu senden. Eingeführt in HTTP/2.
MisdirectedRequest(421, "Misdirected Request", ""),
// Verwendet, wenn weder die Rückgabe von Statuscode 415 noch 400 gerechtfertigt wäre, eine Verarbeitung der Anfrage jedoch zum Beispiel wegen semantischer Fehler abgelehnt wird.
UnprocessableEntity(422, "Unprocessable Entity", ""),
// Die angeforderte Ressource ist zurzeit gesperrt.
Locked(423, "Locked", ""),
// Die Anfrage konnte nicht durchgeführt werden, weil sie das Gelingen einer vorherigen Anfrage voraussetzt.
FailedDependency(424, "Failed Dependency", ""),
// In den Entwürfen von WebDav Advanced Collections definiert, aber nicht im Web Distributed Authoring and Versioning (WebDAV) Ordered Collections Protocol.
UnorderedCollection(425, "Unordered Collection", ""),
// Der Client sollte auf Transport Layer Security (TLS/1.0) umschalten.
UpgradeRequired(426, "Upgrade Required", ""),
// Für die Anfrage sind nicht alle Vorbedingungen erfüllt gewesen. Dieser Statuscode soll Probleme durch Race Conditions verhindern, indem eine Manipulation oder Löschen nur erfolgt, wenn der Client dies auf Basis einer aktuellen Ressource anfordert (Beispielsweise durch Mitliefern eines aktuellen ETag-Header).
PreconditionRequired(428, "Precondition Required", ""),
// Der Client hat zu viele Anfragen in einem bestimmten Zeitraum gesendet.
TooManyRequests(429, "Too Many Requests", ""),
// Die Maximallänge eines Headerfelds oder des Gesamtheaders wurde überschritten
RequestHeaderFieldsTooLarge(431, "Request Header Fields Too Large", ""),
// Dieser Statuscode soll darauf hinweisen, dass die angeforderte Ressource aufgrund von gesetzlichen Bestimmungen (Copyrighteinschränkungen, Zensur etc., eventuell beschränkt auf ein bestimmtes Land) nicht verfügbar ist. Er wurde im Juni 2012 von Google-Mitarbeiter Tim Bray bei der IETF eingereicht und gilt seit dem 17. Dezember 2015 als angenommen. Bray schrieb am Ende seines Vorschlags Thanks also to Ray Bradbury. In Anspielung auf dessen Roman Fahrenheit 451 schlug Bray die Nummer 451 für den Statuscode vor.
UnavailableForLegalReasons(451, "Unavailable For Legal Reasons", ""),
// In Nginx-Logs verwendet, um anzuzeigen, dass der Server keine Informationen zum Client zurückgesendet und die Verbindung geschlossen hat.
NoResponse(444, "No Response", ""),
// Dies ist ein Sammel-Statuscode für unerwartete Serverfehler.
InternalServerError(500, "Internal Server Error", ""),
// Die Funktionalität, um die Anfrage zu bearbeiten, wird von diesem Server nicht bereitgestellt. Ursache ist zum Beispiel eine unbekannte oder nicht unterstützte HTTP-Methode.
NotImplemented(501, "Not Implemented", ""),
// Der Server konnte seine Funktion als Gateway oder Proxy nicht erfüllen, weil er seinerseits eine ungültige Antwort erhalten hat.
BadGateway(502, "Bad Gateway", ""),
// Der Server steht temporär nicht zur Verfügung, zum Beispiel wegen Überlastung oder Wartungsarbeiten. Ein Retry-After-Header-Feld in der Antwort kann den Client auf einen Zeitpunkt hinweisen, zu dem die Anfrage eventuell bearbeitet werden könnte.
ServiceUnavailable(503, "Service Unavailable", ""),
// Der Server konnte seine Funktion als Gateway oder Proxy nicht erfüllen, weil er innerhalb einer festgelegten Zeitspanne keine Antwort von seinerseits benutzten Servern oder Diensten erhalten hat.
GatewayTimeOut(504, "Gateway Time-out", ""),
// Die benutzte HTTP-Version (gemeint ist die Zahl vor dem Punkt) wird vom Server nicht unterstützt oder abgelehnt.
HTTPVersionNotSupported(505, "HTTP Version not supported", ""),
// Die Inhaltsvereinbarung der Anfrage ergibt einen Zirkelbezug.
VariantAlsoNegotiates(506, "Variant Also Negotiates", ""),
// Die Anfrage konnte nicht bearbeitet werden, weil der Speicherplatz des Servers dazu zurzeit nicht mehr ausreicht.
InsufficientStorage(507, "Insufficient Storage", ""),
// Die Operation wurde nicht ausgeführt, weil die Ausführung in eine Endlosschleife gelaufen wäre. Definiert in der Binding-Erweiterung für WebDAV gemäß RFC 5842, weil durch Bindings zyklische Pfade zu WebDAV-Ressourcen entstehen können.
LoopDetected(508, "Loop Detected", ""),
// Die Anfrage wurde verworfen, weil sonst die verfügbare Bandbreite überschritten würde (inoffizielle Erweiterung einiger Server).
BandwidthLimitExceeded(509, "Bandwidth Limit Exceeded", ""),
// Die Anfrage enthält nicht alle Informationen, die die angefragte Server-Extension zwingend erwartet.
NotExtended(510, "Not Extended", ""),
// Der Client muss sich zuerst authentifizieren um Zugang zum Netzwerk zu erhalten.
NetworkAuthenticationRequired(511, "Network Authentication Required", "");
private final int id;
private final String code;
private final String description;
private AdapterStatusCode(int id, String code, String description) {
this.id = id;
this.code = code;
this.description = description;
}
public int toId() {
return id;
}
public String toCode() {
return code;
}
public String toDescription() {
return description;
}
public static AdapterStatusCode toEnum(String code) throws IllegalArgumentException {
for (AdapterStatusCode item : AdapterStatusCode.values()) {
if (code.equals(item.code)) {
return item;
}
}
throw new IllegalArgumentException();
}
public static AdapterStatusCode toEnum(int id) throws IllegalArgumentException {
for (AdapterStatusCode item : AdapterStatusCode.values()) {
if (id == item.id) {
return item;
}
}
throw new IllegalArgumentException();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment