h-oikawa
8/3/2016 - 1:06 AM

Kinesis

Kinesis

    public Request<PutRecordsRequest> marshall(PutRecordsRequest putRecordsRequest) {
        if (putRecordsRequest == null) {
            throw new AmazonClientException(
                    "Invalid argument passed to marshall(PutRecordsRequest)");
        }

        Request<PutRecordsRequest> request = new DefaultRequest<PutRecordsRequest>(
                putRecordsRequest, "AmazonKinesis");
        String target = "Kinesis_20131202.PutRecords";
        request.addHeader("X-Amz-Target", target);
        request.setHttpMethod(HttpMethodName.POST);

        String uriResourcePath = "/";
        request.setResourcePath(uriResourcePath);
        try {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            GZIPOutputStream gos = new GZIPOutputStream(baos, 8192);
            Writer writer = new OutputStreamWriter(gos, StringUtils.UTF8);
            AwsJsonWriter jsonWriter = JsonUtils.getJsonWriter(writer);
            jsonWriter.beginObject();

            if (putRecordsRequest.getRecords() != null) {
                java.util.List<PutRecordsRequestEntry> records = putRecordsRequest.getRecords();
                jsonWriter.name("Records");
                jsonWriter.beginArray();
                for (PutRecordsRequestEntry recordsItem : records) {
                    if (recordsItem != null) {
                        PutRecordsRequestEntryJsonMarshaller.getInstance().marshall(recordsItem,
                                jsonWriter);
                    }
                }
                jsonWriter.endArray();
            }
            if (putRecordsRequest.getStreamName() != null) {
                String streamName = putRecordsRequest.getStreamName();
                jsonWriter.name("StreamName");
                jsonWriter.value(streamName);
            }

            jsonWriter.endObject();
            jsonWriter.flush();
            gos.finish();
            writer.close();

            byte[] content = baos.toByteArray();
            request.setContent(new ByteArrayInputStream(content));
            request.addHeader("Content-Length", Integer.toString(content.length));
            request.addHeader("Content-Encoding", "gzip");
        } catch (Throwable t) {
            throw new AmazonClientException(
                    "Unable to marshall request to JSON: " + t.getMessage(), t);
        }
        if (!request.getHeaders().containsKey("Content-Type")) {
            request.addHeader("Content-Type", "application/x-amz-json-1.1");
        }

        return request;
    }