From a897a2f28bec9b08d4a70290487186bb77b359bf Mon Sep 17 00:00:00 2001 From: Shyri Villar Date: Wed, 16 Dec 2015 14:53:04 +0100 Subject: [PATCH] Added PATCH request [android-volley] --- .../android-volley/apiInvoker.mustache | 21 +++-- .../android-volley/request/patch.mustache | 86 +++++++++++++++++++ 2 files changed, 102 insertions(+), 5 deletions(-) create mode 100644 modules/swagger-codegen/src/main/resources/android-volley/request/patch.mustache diff --git a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache index a5fb652007f..f5b3a763d58 100644 --- a/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/android-volley/apiInvoker.mustache @@ -29,6 +29,7 @@ import {{invokerPackage}}.request.GetRequest; import {{invokerPackage}}.request.PostRequest; import {{invokerPackage}}.request.PutRequest; import {{invokerPackage}}.request.DeleteRequest; +import {{invokerPackage}}.request.PatchRequest; public class ApiInvoker { private static ApiInvoker INSTANCE; @@ -378,19 +379,29 @@ public class ApiInvoker { else if ("DELETE".equals(method)) { DeleteRequest request = null; if (formParamStr != null) { - request = new PutRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener); + request = new DeleteRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener); } else if (body != null) { if (body instanceof HttpEntity) { - request = new PutRequest(url, headers, null, (HttpEntity) body, stringRequest, errorListener); + request = new DeleteRequest(url, headers, null, (HttpEntity) body, stringRequest, errorListener); } else { - request = new PutRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener); + request = new DeleteRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener); } } if(request != null) mRequestQueue.add(request); } else if ("PATCH".equals(method)) { - - } + PatchRequest request = null; + if (formParamStr != null) { + request = new PatchRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener); + } else if (body != null) { + if (body instanceof HttpEntity) { + request = new PatchRequest(url, headers, null, (HttpEntity) body, stringRequest, errorListener); + } else { + request = new PatchRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener); + } + } + if(request != null) mRequestQueue.add(request); + } } private void initConnectionManager() { diff --git a/modules/swagger-codegen/src/main/resources/android-volley/request/patch.mustache b/modules/swagger-codegen/src/main/resources/android-volley/request/patch.mustache new file mode 100644 index 00000000000..87270b48ebf --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-volley/request/patch.mustache @@ -0,0 +1,86 @@ +package {{invokerPackage}}.request; + +import com.android.volley.AuthFailureError; +import com.android.volley.NetworkResponse; +import com.android.volley.Request; +import com.android.volley.Response; +import com.android.volley.VolleyLog; +import com.android.volley.toolbox.HttpHeaderParser; + +import org.apache.http.HttpEntity; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +public class PatchRequest extends Request { + + HttpEntity entity; + + private final Response.Listener mListener; + + String contentType; + Map apiHeaders; + public PatchRequest(String url, Map apiHeaders, String contentType, HttpEntity entity, Response.Listener listener, Response.ErrorListener errorListener) { + super(Method.PATCH, url, errorListener); + mListener = listener; + this.entity = entity; + this.contentType = contentType; + this.apiHeaders = apiHeaders; + } + + @Override + public String getBodyContentType() { + return entity.getContentType().getValue(); + } + + @Override + public byte[] getBody() throws AuthFailureError { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + try { + entity.writeTo(bos); + } + catch (IOException e) { + VolleyLog.e("IOException writing to ByteArrayOutputStream"); + } + return bos.toByteArray(); + } + + @Override + protected Response parseNetworkResponse(NetworkResponse response) { + String parsed; + try { + parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); + } catch (UnsupportedEncodingException e) { + parsed = new String(response.data); + } + return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response)); + } + + @Override + protected void deliverResponse(String response) { + mListener.onResponse(response); + } + + /* (non-Javadoc) + * @see com.android.volley.Request#getHeaders() + */ + @Override + public Map getHeaders() throws AuthFailureError { + Map headers = super.getHeaders(); + if (headers == null || headers.equals(Collections.emptyMap())) { + headers = new HashMap(); + } + if (apiHeaders != null && !apiHeaders.equals(Collections.emptyMap())) { + headers.putAll(apiHeaders); + } + if(contentType != null) { + headers.put("Content-Type", contentType); + } + + return headers; + } +} \ No newline at end of file