SDKリファレンス - streams
このセクションでは、ファイルストリームを生成するアクションを作成できるようにするストリーミングコールバックを定義するために使用できるすべてのキーを列挙します。 ファイルストリーミングの詳細
概要
streamsキーは、アクションまたはトリガーと組み合わせて使用する必要があります。 互換性のあるAPIから、CSVファイルや動画などの大量のデータをチャンク単位でダウンロードできます。 これにより、Workato Files、Google Cloud Storage、S3など、Workatoのファイルストレージプロバイダーのエコシステムに接続できるアクションを構築できます。
構造
streams: {
[Unique_stream_name]: lambda do |input, starting_byte_range, ending_byte_range, byte_size|
Array
end,
[Another_unique_stream_name]: lambda do |input, starting_byte_range, ending_byte_range, byte_size|
Array
end,
},| 属性 | 説明 |
|---|---|
| キー | [Unique_stream_name] |
| タイプ | ラムダ関数 |
| 説明 | このlambda関数は、workato.stream.outコールバックを使用する任意のストリーミングアクションから呼び出すことができます。 |
| 指定可能な引数 | input - workato.stream.outで定義されたユーザー指定の入力を表すハッシュ starting_byte_range - この特定のチャンクでリクエストされた開始バイト範囲を表す整数。 ending_byte_range- この特定のチャンクでリクエストされた終了バイト範囲を表す整数。 byte_size- この特定のチャンクの正確なバイト数を表す整数。 |
| 想定される出力 | サイズが2の配列。 最初のインデックスは、この特定のチャンクの実際のバイトを表します。 2番目のインデックスは、このチャンクがファイルの最後のチャンクかどうかをWorkatoフレームワークに伝えるブール値です。 |
ファイルストリームの作成
Workato上のファイルストリームは、一般的なRangeヘッダーのHTTP RFC標準を活用して作成されます。 以下に、ファイルストリーミングを使用するシンプルなファイルダウンロードアクションを示します。
actions: {
download_file: {
title: "Download file",
input_fields: lambda do
[
{
name: "file_id",
label: "File ID"
}
]
end,
execute: lambda do
{
file_contents: workato.stream.out("download_file", { file_id: file_id })
}
end,
output_fields: lambda do
[
{
name: "file_contents"
}
]
end
}
}workato.stream.outメソッドで定義されるストリームdownload_fileは、プラットフォームによってリクエストされた特定範囲のバイトを取得するコードを保持します。そのバイトはストリームコンシューマーに送信され、ダウンストリームの宛先にアップロードされます。
そのため、このコールバックに渡される引数は、HTTPリクエストでこのバイト範囲を取得するために使用できる明確な入力を提供します。
ストリームlambdaの出力は配列で、最初のインデックスにはバイト文字列、2番目のインデックスには、これがファイルの末尾である場合にtrueであるべきブール値が想定されます。
streams: {
download_file: lambda do |input, starting_byte_range, ending_byte_range, byte_size|
# Example starting_byte_range = 0
# Example ending_byte_range = 10485759
# Example byte_size = 10485760 (10MB)
# input passed from action can be assumed to be a friendly URL
chunk = get("/#{input['file_id']}/download").
headers("Range": "bytes=#{starting_byte_range}-#{ending_byte_range}").
response_format_raw
# if the chunk.size is smaller than the requested byte_size,
# then we know we are at the end of the file.
[chunk, chunk.size < byte_size]
end
}download_filelambdaは、file_contentsのデータピルがダウンストリームアクションにマッピングされている場合にのみ実行されることに注意してください。
Last updated: