package com.sas.unravl.generators;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.sas.unravl.ApiCall;
import com.sas.unravl.UnRAVL;
import com.sas.unravl.UnRAVLException;
import com.sas.unravl.annotations.UnRAVLRequestBodyGeneratorPlugin;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* Generates a text request body for this API call. The value associated with
* "body" can have one of several forms:
*
* <pre>
* { "text" : "request body string" }
* { "text" : "@file-or-URL" }
* { "text" : [ array-of-text-or-@file-or-URL ]
* </pre>
*
* The request body is built as described in {@link Text}.
* <p>
* The text is bound to the current environment as a string named
* <code>"requestBody"</code>.
*
* @author David.Biesack@sas.com
*
*/
@UnRAVLRequestBodyGeneratorPlugin("text")
public class TextRequestBodyGenerator extends BaseUnRAVLRequestBodyGenerator {
@Override
public InputStream getBody(UnRAVL script, ObjectNode body, ApiCall call)
throws IOException, UnRAVLException {
JsonNode value = body.get("text");
Text request = new Text(script, value);
String requestBody = request.text();
requestBody = script.expand(requestBody);
script.bind("requestBody", requestBody);
return new ByteArrayInputStream(Text.utf8(requestBody));
}
}