Sha256: 91013b27d39b262570f1f5355358c466b52dd49161381003ef32e48b31d989aa

Contents?: true

Size: 1.02 KB

Versions: 8

Compression:

Stored size: 1.02 KB

Contents

# frozen_string_literal: true

module Meteoservice
  module ParserXml
    include Meteoservice::Constants

    def connection(path)
      connection = Faraday.new(url: BASE_URL) do |faraday|
        faraday.request :xml, content_type: /\bxml$/
        faraday.adapter Faraday.default_adapter
        faraday.response :xml
      end

      response ||= connection.get(path)
    rescue Faraday::Error => e
      puts "Ошибка соединения с сервером: #{e.message}"
      abort e.message
    else
      begin
        body = response.body
      rescue StandardError => e
        puts e.class.name
        abort e.message
      else
        respond_with_error(response.status, body) unless response.success?
        body
      end
    end

    private

    # code - это код состояния HTTP (504, 429, 404...)
    def respond_with_error(code, body)
      raise(Meteoservice::Error, body) unless Meteoservice::Error::ERRORS.key?(code)

      raise Meteoservice::Error::ERRORS[code].from_response(body)
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
meteoservice-0.2.7 lib/meteoservice/parser_xml.rb
meteoservice-0.2.6 lib/meteoservice/parser_xml.rb
meteoservice-0.2.5 lib/meteoservice/parser_xml.rb
meteoservice-0.2.4 lib/meteoservice/parser_xml.rb
meteoservice-0.2.2 lib/meteoservice/parser_xml.rb
meteoservice-0.2.1 lib/meteoservice/parser_xml.rb
meteoservice-0.2.0 lib/meteoservice/parser_xml.rb
meteoservice-0.1.0 lib/meteoservice/parser_xml.rb