Sha256: 91e97074992b75c70129a38c5c3117dc4746b1ae17e015c1aae96cb6fe938d1a
Contents?: true
Size: 1.55 KB
Versions: 2
Compression:
Stored size: 1.55 KB
Contents
require "active_support/core_ext/class/subclasses" module Muhimbi class Converter attr_accessor :file_content, :file, :options def initialize(opts={}) unless opts[:file].blank? self.file_content = encode_file(opts[:file]) self.file = opts[:file] end self.tap do |client| client.options ||= {} client.defaults_options(opts) client.options ||= opts yield client if block_given? end end def convert wsdl_res = Muhimbi::Client.client.call(:convert , message: self.options ) wsdl_res.to_hash[:convert_response][:convert_result] end def method_missing(meth, opts = {}) merge_options meth, opts end def defaults_options(opts={}) self.sourceFile(self.file_content) self.openOptions({ "FileExtension" => File.extname( self.file ).gsub(".", ""), "OriginalFileName"=> File.basename( self.file) }) self.conversionSettings({ "Format"=> "PDF", "Fidelity"=> "Full" }) end private def allowed_methods ["sourceFile", "openOptions", "conversionSettings"] end def merge_options(name, opts) name = name.to_s.camelize(:lower) @options.merge! "ns:#{name}" => redo_opts(opts) if allowed_methods.include?(name) end def redo_opts(opts) return opts unless opts.class == Hash Hash[opts.map {|k, v| ["ns1:#{k}", v] }] end def encode_file(file) Base64.strict_encode64(file.read) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
muhimbi-0.0.2 | lib/muhimbi/converter.rb |
muhimbi-0.0.1 | lib/muhimbi/converter.rb |