Sha256: 2e34c0765e4c5e8a6e6e513a23f9afa064c7e8292b3719abfe2486b512c18773
Contents?: true
Size: 1.87 KB
Versions: 5
Compression:
Stored size: 1.87 KB
Contents
module Lipseys class Base protected # Wrapper to `self.requires!` that can be used as an instance method. def requires!(*args) self.class.requires!(*args) end def self.requires!(hash, *params) params.each do |param| if param.is_a?(Array) raise ArgumentError.new("Missing required parameter: #{param.first}") unless hash.has_key?(param.first) valid_options = param[1..-1] raise ArgumentError.new("Parameter: #{param.first} must be one of: #{valid_options.join(', ')}") unless valid_options.include?(hash[param.first]) else raise ArgumentError.new("Missing required parameter: #{param}") unless hash.has_key?(param) end end end def content_for(xml_doc, field) node = xml_doc.css(field).first node.nil? ? nil : node.content.strip end def get_response_xml(api_url, params) uri = URI(api_url) uri.query = URI.encode_www_form(params_to_auth(params)) response = Net::HTTP.get_response(uri) xml_doc = Nokogiri::XML(response.body) raise Lipseys::NotAuthenticated if not_authenticated?(xml_doc) xml_doc end def not_authenticated?(xml_doc) msg = content_for(xml_doc, 'CatalogError') msg =~ /Login failed/i || msg =~ /Credentials Not Valid/i end def stream_to_tempfile(api_url, params) tempfile = Tempfile.new uri = URI(api_url) uri.query = URI.encode_www_form(params_to_auth(params)) Net::HTTP.get_response(uri) do |response| File.open(tempfile, 'w') do |file| response.read_body do |chunk| file.write(chunk.force_encoding('UTF-8')) end end end tempfile end private def params_to_auth(params) { email: params.fetch(:username), pass: params.fetch(:password), } end end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
lipseys-5.0.1 | lib/lipseys/base.rb |
lipseys-5.0.0 | lib/lipseys/base.rb |
lipseys-4.0.0 | lib/lipseys/base.rb |
lipseys-3.0.1 | lib/lipseys/base.rb |
lipseys-3.0.0 | lib/lipseys/base.rb |