Write Chunk File

Write file chunks to data source through a specified channel.

Prerequisites

Write channels are created and started in the organization.

Request Format

POST https://{apigw-address}/data-federation/v2.0/channels/write/{channelId}/chunk-file

Request Parameters (Header)

Name Mandatory/Optional Data Type Description
Content-Type Mandatory String Content or file type. The default value is application/json.

Request Parameters (URI)

Name Location (Path/Query) Mandatory/Optional Data Type Description
orgId Query Mandatory String The organization ID. How to get the orgId>>
channelId Path Mandatory String The channel ID.
dataSourceName Query Mandatory String The data source alias. Only HDFS data source is supported.

Request Parameters (Body)

Name Mandatory/Optional Data Type Description
fileName Mandatory String The name of the file to be written to the storage.
totalSize Mandatory Integer The file size.
chunkOffset Mandatory Integer The offset of the current chunk in the file.
chunkSize Mandatory Integer The size of the current chunk (before Base64 encoding).
chunkData Mandatory String The chunk data, with Base64 encoding.

Samples

Request Sample

url: https://{apigw-address}/data-federation/v2.0/channels/write/{channelId}/chunk-file?orgId={}&dataSourceName={}

method: POST

requestBody:
{
  "fileName": "ttt",
  "totalSize": "13",
  "chunkData": "dGVzdHRlc3R0dGVzdA==",
  "chunkSize": "13",
  "chunkOffset": "0"
}

Return Sample

{
  "msg": "OK",
  "code": 0,
  "submsg": ""
}

Java SDK Sample

import com.alibaba.fastjson.JSONObject;
import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.envision.apim.poseidon.request.PoseidonRequest;
import com.google.common.net.HttpHeaders;
import org.apache.commons.codec.binary.Hex;
import org.junit.Test;

import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Sample {

    private static String accessKey = "AccessKey of your APP";
    private static String secretKey = "SecretKey of your APP";
    private static String orgId = "yourOrgId";
    private static String chId = "yourChannelId";
    private static String url = "https://{domain_url}";

    private static class Request extends PoseidonRequest {

        public void setQueryParam(String key, Object value) {
            queryEncodeParams().put(key, value);
        }

        public void setMethod(String method) {
            this.method = method;
        }

        public void setBodyParams(String key, Object value) {
            bodyParams().put(key, value);
        }

        private String method;

        @Override
        public String baseUri() {
            return "";
        }

        @Override
        public String method() {
            return method;
        }
    }

    @Test
    public void writeChunkFile() {
        Request request = new Request();
        request.setQueryParam("orgId", orgId);
        request.setQueryParam("dataSourceName", "hdfs");
        request.setMethod("POST");
        request.headerParams().put(HttpHeaders.CONTENT_TYPE, "application/json");
        request.setBodyParams("fileName", "ttt");
        request.setBodyParams("totalSize", "13");
        request.setBodyParams("chunkData", "dGVzdHRlc3R0dGVzdA==");
        request.setBodyParams("chunkSize", "13");
        request.setBodyParams("chunkOffset", 0);
        try {
            JSONObject response = Poseidon.config(PConfig.init().appKey(accessKey).appSecret(secretKey).debug())
                    .url(url + "/data-federation/v2.0/channels/write/" + chId + "/chunk-file")
                    .getResponse(request, JSONObject.class);
            System.out.println(response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}