Sha256: 04cf51b470cb6c0d5c09381fb430ee3ee8039fbd587c912e7e32644e829ed4ca

Contents?: true

Size: 860 Bytes

Versions: 6

Compression:

Stored size: 860 Bytes

Contents

module ChatWork
  class Multipart < ::Faraday::Request::Multipart
    self.mime_type = "multipart/form-data".freeze

    def create_multipart(env, params)
      original_body = super(env, params)

      # replace from Faraday::Parts::EpiloguePart to ChatWork::Multipart::EpiloguePart
      parts = original_body.instance_variable_get(:@parts)
      parts.pop
      parts << EpiloguePart.new(env.request.boundary)

      new_body = ::Faraday::CompositeReadIO.new(*parts)
      env.request_headers[Faraday::Env::ContentLength] = new_body.length.to_s
      new_body
    end
  end

  class EpiloguePart < ::Faraday::Parts::EpiloguePart
    def initialize(boundary)
      # NOTE: ChatWork doesn't accepts ending "\r\n\r\n" of payload...
      # @part = "--#{boundary}--\r\n\r\n"
      @part = "--#{boundary}--\r\n"
      @io = StringIO.new(@part)
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
chatwork-0.12.3 lib/chatwork/multipart.rb
chatwork-0.12.2 lib/chatwork/multipart.rb
chatwork-0.12.1 lib/chatwork/multipart.rb
chatwork-0.12.0 lib/chatwork/multipart.rb
chatwork-0.11.0 lib/chatwork/multipart.rb
chatwork-0.10.0 lib/chatwork/multipart.rb