Sha256: ea1d02eac33b22f035198dc534782b0a52ec460ff0a37de30affcc1f384b5908

Contents?: true

Size: 1.92 KB

Versions: 1

Compression:

Stored size: 1.92 KB

Contents

require 'faraday_middleware'
require File.expand_path(File.join(File.dirname(__FILE__), 'source'))
require File.expand_path(File.join(File.dirname(__FILE__), 'income_level'))
require File.expand_path(File.join(File.dirname(__FILE__), 'lending_type'))
require File.expand_path(File.join(File.dirname(__FILE__), 'country'))
require File.expand_path(File.join(File.dirname(__FILE__), 'indicator'))
require File.expand_path(File.join(File.dirname(__FILE__), 'topic'))
require File.expand_path(File.join(File.dirname(__FILE__), 'region'))
require File.expand_path(File.join(File.dirname(__FILE__), 'query'))
require File.expand_path(File.join(File.dirname(__FILE__), 'data'))
require File.expand_path(File.join(File.dirname(__FILE__), 'param_query'))
require File.expand_path(File.join(File.dirname(__FILE__), 'data_query'))

module WorldBank
  class Client

    attr_accessor :query

    def initialize(query, raw)
      @query = query
      @raw = raw
    end

    def get_query
      @path = @query[:dirs].join('/')
      @path += '?'
      params = []
      @query[:params].each do |key, value|
        params << "#{key.to_s}=#{value.to_s}"
      end
      @path += params.join('&')
      get(@path)
    end

    def get(path, headers={})
        response = connection.get do |request|
          request.url(path, headers)
        end
      response.body
    end

  private

    def connection
      Faraday.new(:url => 'http://api.worldbank.org/') do |connection|
        connection.use Faraday::Request::UrlEncoded
        connection.use Faraday::Response::RaiseError
        connection.use Faraday::Response::Mashify
        unless @raw
          case @query[:params][:format].to_s.downcase
            when 'json'
              connection.use Faraday::Response::ParseJson
            when 'xml'
              connection.use Faraday::Response::ParseXml
            end
        end
        connection.adapter(Faraday.default_adapter)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
world_bank-0.9.0 lib/world_bank/client.rb