SDKリファレンス - streams

このページは機械翻訳により提供されています。翻訳内容と英語版に相違がある場合は、英語版が優先されます。

このセクションでは、ファイルストリームを生成するアクションを作成できるようにするストリーミングコールバックを定義するために使用できるすべてのキーを列挙します。 ファイルストリーミングの詳細

概要

streamsキーは、アクションまたはトリガーと組み合わせて使用する必要があります。 互換性のあるAPIから、CSVファイルや動画などの大量のデータをチャンク単位でダウンロードできます。 これにより、Workato Files、Google Cloud Storage、S3など、Workatoのファイルストレージプロバイダーのエコシステムに接続できるアクションを構築できます。

構造

ruby
    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標準を活用して作成されます。 以下に、ファイルストリーミングを使用するシンプルなファイルダウンロードアクションを示します。

ruby
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であるべきブール値が想定されます。

ruby
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: