Exemple #1
0
 /** 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;
 }
Exemple #2
0
 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;
  }