/** Get the names of parameters - one ocurrence */ public List<String> names() { List<String> names = new ArrayList<>(); for (Pair pair : paramList) { String s = pair.getName(); if (names.contains(s)) continue; names.add(s); } return names; }
public void remove(String name) { // Absolute record for (Iterator<Pair> iter = paramList.iterator(); iter.hasNext(); ) { Pair p = iter.next(); if (p.getName().equals(name)) iter.remove(); } // Map params.remove(name); }
/** * Build full URL by concatenating base path, the given sub path and query parameters. * * @param path The sub path * @param queryParams The query parameters * @return The full URL */ public String buildUrl(String path, List<Pair> queryParams) { final StringBuilder url = new StringBuilder(); url.append(basePath).append(path); if (queryParams != null && !queryParams.isEmpty()) { // support (constant) query string in `path`, e.g. "/posts?draft=1" String prefix = path.contains("?") ? "&" : "?"; for (Pair param : queryParams) { if (param.getValue() != null) { if (prefix != null) { url.append(prefix); prefix = null; } else { url.append("&"); } String value = parameterToString(param.getValue()); url.append(escapeString(param.getName())).append("=").append(escapeString(value)); } } } return url.toString(); }
public void invokeAPI( String host, String path, String method, List<Pair> queryParams, Object body, Map<String, String> headerParams, Map<String, String> formParams, String contentType, String[] authNames, Response.Listener<String> stringRequest, Response.ErrorListener errorListener) throws ApiException { StringBuilder b = new StringBuilder(); b.append("?"); updateParamsForAuth(authNames, queryParams, headerParams); if (queryParams != null) { for (Pair queryParam : queryParams) { if (!queryParam.getName().isEmpty()) { b.append(escapeString(queryParam.getName())); b.append("="); b.append(escapeString(queryParam.getValue())); b.append("&"); } } } String querystring = b.substring(0, b.length() - 1); String url = host + path + querystring; HashMap<String, String> headers = new HashMap<String, String>(); for (String key : headerParams.keySet()) { headers.put(key, headerParams.get(key)); } for (String key : defaultHeaderMap.keySet()) { if (!headerParams.containsKey(key)) { headers.put(key, defaultHeaderMap.get(key)); } } headers.put("Accept", "application/json"); // URL encoded string from form parameters String formParamStr = null; // for form data if ("application/x-www-form-urlencoded".equals(contentType)) { StringBuilder formParamBuilder = new StringBuilder(); // encode the form params for (String key : formParams.keySet()) { String value = formParams.get(key); if (value != null && !"".equals(value.trim())) { if (formParamBuilder.length() > 0) { formParamBuilder.append("&"); } try { formParamBuilder .append(URLEncoder.encode(key, "utf8")) .append("=") .append(URLEncoder.encode(value, "utf8")); } catch (Exception e) { // move on to next } } } formParamStr = formParamBuilder.toString(); } if ("GET".equals(method)) { GetRequest request = new GetRequest(url, headers, null, stringRequest, errorListener); mRequestQueue.add(request); } else if ("POST".equals(method)) { PostRequest request = null; if (formParamStr != null) { request = new PostRequest( url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener); } else if (body != null) { if (body instanceof HttpEntity) { request = new PostRequest(url, headers, null, (HttpEntity) body, stringRequest, errorListener); } else { request = new PostRequest( url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener); } } if (request != null) mRequestQueue.add(request); } else if ("PUT".equals(method)) { PutRequest request = null; if (formParamStr != null) { request = new PutRequest( 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); } else { request = new PutRequest( url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener); } } if (request != null) mRequestQueue.add(request); } else if ("DELETE".equals(method)) { DeleteRequest request = null; if (formParamStr != null) { request = new DeleteRequest( url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener); } else if (body != null) { if (body instanceof HttpEntity) { request = new DeleteRequest( url, headers, null, (HttpEntity) body, stringRequest, errorListener); } else { 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 Response getAPIResponse( String path, String method, List<Pair> queryParams, Object body, byte[] binaryBody, Map<String, String> headerParams, Map<String, Object> formParams, String accept, String contentType, String[] authNames) throws ApiException { if (body != null && binaryBody != null) { throw new ApiException(500, "either body or binaryBody must be null"); } Client client = getClient(); Response response = null; StringBuilder b = new StringBuilder(); b.append("?"); if (queryParams != null) { for (Pair queryParam : queryParams) { if (!queryParam.getName().isEmpty()) { b.append(escapeString(queryParam.getName())); b.append("="); b.append(escapeString(queryParam.getValue())); b.append("&"); } } } String querystring = b.substring(0, b.length() - 1); WebTarget target = client.target(basePath + path + querystring); if (debugging) { target.register(new LoggingFilter()); } if (authentication != null) { authentication.setFilter(target); } Invocation.Builder builder; if (accept != null) { builder = target.request(accept); } else { builder = target.request(); } for (Map.Entry<String, String> entry : headerParams.entrySet()) { builder = builder.header(entry.getKey(), entry.getValue()); } for (Map.Entry<String, String> entry : defaultHeaderMap.entrySet()) { if (!headerParams.containsKey(entry.getKey())) { builder = builder.header(entry.getKey(), entry.getValue()); } } if ("GET".equals(method)) { response = builder.get(); } else if ("POST".equals(method)) { response = builder.post(Entity.entity(body, contentType)); } else if ("PUT".equals(method)) { if (body != null) { response = builder.put(Entity.entity(body, contentType)); } else { response = builder.put(Entity.text("")); } } else if ("DELETE".equals(method)) { response = builder.delete(); } else { throw new ApiException(500, "unknown method type " + method); } return response; }