class ActiveGraphql::Client::Adapters::FormatMultipartVariables
Converts deeply nested File instances to Faraday::UploadIO
Attributes
variables[R]
Public Class Methods
new(variables)
click to toggle source
# File lib/active_graphql/client/adapters/format_multipart_variables.rb, line 14 def initialize(variables) @variables = variables end
Public Instance Methods
call()
click to toggle source
# File lib/active_graphql/client/adapters/format_multipart_variables.rb, line 18 def call deep_transform_values(variables) do |variable| variable_value(variable) end end
Private Instance Methods
deep_transform_values(hash) { |val| ... }
click to toggle source
# File lib/active_graphql/client/adapters/format_multipart_variables.rb, line 28 def deep_transform_values(hash, &block) return hash unless hash.is_a?(Hash) hash.transform_values do |val| if val.is_a?(Hash) deep_transform_values(val, &block) else yield(val) end end end
file_variable_value(file)
click to toggle source
# File lib/active_graphql/client/adapters/format_multipart_variables.rb, line 52 def file_variable_value(file) content_type = MIME::Types.type_for(file.path).first return Faraday::UploadIO.new(file.path, content_type) if content_type raise NoMimeTypeException, "Unable to determine mime type for #{file.path}" end
variable_value(variable)
click to toggle source
# File lib/active_graphql/client/adapters/format_multipart_variables.rb, line 40 def variable_value(variable) if variable.is_a?(Array) variable.map { |it| variable_value(it) } elsif variable.is_a?(Hash) variable.transform_values { |it| variable_value(it) } elsif variable.is_a?(File) file_variable_value(variable) else variable end end