Sha256: 58f9f773a43105333597d9fff7b286f1a4d0dfafbd604a1029186e6fa5fe6a6b

Contents?: true

Size: 1.11 KB

Versions: 9

Compression:

Stored size: 1.11 KB

Contents

require 'restclient'
require 'rack/utils'
require 'json/pure'
require 'stringio'

module Taps
class Multipart
	class Container
		attr_accessor :attachments

		def initialize
			@attachments = []
		end

		def attach(opts)
			mp = Taps::Multipart.new(opts)
			attachments << mp
		end

		def generate
			hash = {}
			attachments.each do |mp|
				hash[mp.name] = mp
			end
			m = RestClient::Payload::Multipart.new(hash)
			[m.to_s, m.headers['Content-Type']]
		end
	end

	attr_reader :opts

	def initialize(opts={})
		@opts = opts
	end

	def name
		opts[:name]
	end

	def to_s
		opts[:payload]
	end

	def content_type
		opts[:content_type] || 'text/plain'
	end

	def original_filename
		opts[:original_filename]
	end

	def self.create
		c = Taps::Multipart::Container.new
		yield c
		c.generate
	end

	# response is a rest-client response
	def self.parse(response)
		content = response.to_s
		env = {
			'CONTENT_TYPE' => response.headers[:content_type],
			'CONTENT_LENGTH' => content.size,
			'rack.input' => StringIO.new(content)
		}

		params = Rack::Utils::Multipart.parse_multipart(env)
		params.symbolize_keys!
		params
	end

end
end

Version data entries

9 entries across 9 versions & 2 rubygems

Version Path
taps-0.3.11 lib/taps/multipart.rb
dkastner-taps-0.3.11 lib/taps/multipart.rb
taps-0.3.10 lib/taps/multipart.rb
taps-0.3.9 lib/taps/multipart.rb
taps-0.3.8 lib/taps/multipart.rb
taps-0.3.7 lib/taps/multipart.rb
taps-0.3.6 lib/taps/multipart.rb
taps-0.3.5 lib/taps/multipart.rb
taps-0.3.4 lib/taps/multipart.rb