From 13ab2c088124b31a6d3156fc3e8fdcd85b48bab7 Mon Sep 17 00:00:00 2001 From: smartrics Date: Fri, 7 Dec 2012 00:13:32 +0000 Subject: [PATCH] added utility methods for content type and charset --- .../java/smartrics/rest/client/RestData.java | 50 +++++++++++++------ 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/src/main/java/smartrics/rest/client/RestData.java b/src/main/java/smartrics/rest/client/RestData.java index d3dadcf..e4c3727 100644 --- a/src/main/java/smartrics/rest/client/RestData.java +++ b/src/main/java/smartrics/rest/client/RestData.java @@ -31,6 +31,7 @@ */ public abstract class RestData { public final static String LINE_SEPARATOR = System.getProperty("line.separator"); + public static String DEFAULT_ENCODING = "UTF-8"; /** * Holds an Http Header. @@ -78,7 +79,6 @@ public String toString() { private byte raw[]; private String resource; private Long transactionId; - private String encoding = "UTF-8"; /** * @return the body of this http request/response @@ -88,28 +88,15 @@ public String getBody() { return null; } try { - return new String(raw, encoding); + return new String(raw, getCharset()); } catch (UnsupportedEncodingException e) { - throw new IllegalStateException("Unsupported encoding: " + encoding); + throw new IllegalStateException("Unsupported encoding: " + getCharset()); } } public byte[] getRawBody() { return raw; } - - public void setEncoding(String enc) { - try { - new String(new byte[]{ 65 }, enc); - } catch(UnsupportedEncodingException e) { - throw new IllegalArgumentException("Unsupported encoding: " + enc); - } - this.encoding = enc; - } - - public String getEncoding() { - return encoding; - } public RestData setBody(String body) { if(body == null) { @@ -254,4 +241,35 @@ public String toString() { return builder.toString(); } + public String getContentType() { + return getHeaderValue("Content-Type"); + } + + public String getCharset() { + String v = getHeaderValue("Content-Type"); + if(v == null || !v.contains("charset")) { + return DEFAULT_ENCODING; + } + int pos = v.indexOf("charset"); + pos = v.indexOf("=", pos); + try { + String substring = v.substring(pos + 1); + return substring.trim(); + } catch(RuntimeException e) { + return DEFAULT_ENCODING; + } + } + + public String getContentLength() { + return getHeaderValue("Content-Length"); + } + + public String getHeaderValue(String name) { + List
headers = getHeader(name); + if(headers.size() > 0) { + return headers.get(0).getValue(); + } + return null; + } + }