public Request<GetExportRequest> marshall(GetExportRequest getExportRequest) {

    if (getExportRequest == null) {
      throw new AmazonClientException("Invalid argument passed to marshall(...)");
    }

    Request<GetExportRequest> request =
        new DefaultRequest<GetExportRequest>(getExportRequest, "AmazonApiGateway");

    request.setHttpMethod(HttpMethodName.GET);

    if (getExportRequest.getAccepts() != null) {
      request.addHeader("Accept", StringUtils.fromString(getExportRequest.getAccepts()));
    }

    String uriResourcePath = "/restapis/{restapi_id}/stages/{stage_name}/exports/{export_type}";

    uriResourcePath =
        uriResourcePath.replace(
            "{restapi_id}",
            (getExportRequest.getRestApiId() != null)
                ? SdkHttpUtils.urlEncode(
                    StringUtils.fromString(getExportRequest.getRestApiId()), false)
                : "");
    uriResourcePath =
        uriResourcePath.replace(
            "{stage_name}",
            (getExportRequest.getStageName() != null)
                ? SdkHttpUtils.urlEncode(
                    StringUtils.fromString(getExportRequest.getStageName()), false)
                : "");
    uriResourcePath =
        uriResourcePath.replace(
            "{export_type}",
            (getExportRequest.getExportType() != null)
                ? SdkHttpUtils.urlEncode(
                    StringUtils.fromString(getExportRequest.getExportType()), false)
                : "");
    request.setResourcePath(uriResourcePath);

    java.util.Map<String, String> parameters = getExportRequest.getParameters();
    if (parameters != null) {
      for (Map.Entry<String, String> entry : parameters.entrySet()) {
        if (entry.getValue() != null) {
          request.addParameter(
              StringUtils.fromString(entry.getKey()), StringUtils.fromString(entry.getValue()));
        }
      }
    }

    request.setContent(new ByteArrayInputStream(new byte[0]));
    if (!request.getHeaders().containsKey("Content-Type")) {
      request.addHeader("Content-Type", DEFAULT_CONTENT_TYPE);
    }

    return request;
  }
  public Request<CreateDeploymentRequest> marshall(
      CreateDeploymentRequest createDeploymentRequest) {

    if (createDeploymentRequest == null) {
      throw new AmazonClientException("Invalid argument passed to marshall(...)");
    }

    Request<CreateDeploymentRequest> request =
        new DefaultRequest<CreateDeploymentRequest>(createDeploymentRequest, "AmazonApiGateway");

    request.setHttpMethod(HttpMethodName.POST);

    String uriResourcePath = "/restapis/{restapi_id}/deployments";

    uriResourcePath =
        uriResourcePath.replace(
            "{restapi_id}",
            (createDeploymentRequest.getRestApiId() == null)
                ? ""
                : StringUtils.fromString(createDeploymentRequest.getRestApiId()));
    request.setResourcePath(uriResourcePath);

    try {
      StringWriter stringWriter = new StringWriter();
      JSONWriter jsonWriter = new JSONWriter(stringWriter);

      jsonWriter.object();

      if (createDeploymentRequest.getStageName() != null) {
        jsonWriter.key("stageName").value(createDeploymentRequest.getStageName());
      }

      if (createDeploymentRequest.getStageDescription() != null) {
        jsonWriter.key("stageDescription").value(createDeploymentRequest.getStageDescription());
      }

      if (createDeploymentRequest.getDescription() != null) {
        jsonWriter.key("description").value(createDeploymentRequest.getDescription());
      }

      if (createDeploymentRequest.getCacheClusterEnabled() != null) {
        jsonWriter
            .key("cacheClusterEnabled")
            .value(createDeploymentRequest.getCacheClusterEnabled());
      }

      if (createDeploymentRequest.getCacheClusterSize() != null) {
        jsonWriter.key("cacheClusterSize").value(createDeploymentRequest.getCacheClusterSize());
      }

      java.util.Map<String, String> variablesMap = createDeploymentRequest.getVariables();
      if (variablesMap != null) {
        jsonWriter.key("variables");
        jsonWriter.object();

        for (Map.Entry<String, String> variablesMapValue : variablesMap.entrySet()) {
          if (variablesMapValue.getValue() != null) {
            jsonWriter.key(variablesMapValue.getKey());

            jsonWriter.value(variablesMapValue.getValue());
          }
        }
        jsonWriter.endObject();
      }

      jsonWriter.endObject();

      String snippet = stringWriter.toString();
      byte[] content = snippet.getBytes(UTF8);
      request.setContent(new StringInputStream(snippet));
      request.addHeader("Content-Length", Integer.toString(content.length));
      if (!request.getHeaders().containsKey("Content-Type")) {
        request.addHeader("Content-Type", DEFAULT_CONTENT_TYPE);
      }
    } catch (Throwable t) {
      throw new AmazonClientException("Unable to marshall request to JSON: " + t.getMessage(), t);
    }

    return request;
  }