Sha256: c4f38b5a238da443f23aa298300245eb958417d2369a858b560c8fa014523987

Contents?: true

Size: 1.75 KB

Versions: 3

Compression:

Stored size: 1.75 KB

Contents

module VkontakteApi
  # A low-level module which handles the requests to VKontakte API and returns their results as mashes.
  #
  # It uses Faraday with middleware underneath the hood.
  module API
    # URL prefix for calling API methods.
    URL_PREFIX = 'https://api.vk.com/method'
    
    class << self
      # API method call.
      # @param [String] method_name A full name of the method.
      # @param [Hash] args Method arguments.
      # @param [String] token The access token.
      # @return [Hashie::Mash] Mashed server response.
      def call(method_name, args = {}, token = nil)
        flat_arguments = Utils.flatten_arguments(args)
        flat_arguments[:v] ||= VkontakteApi.api_version unless VkontakteApi.api_version.nil?
        connection(url: URL_PREFIX, token: token).send(VkontakteApi.http_verb, method_name, flat_arguments).body
      end
      
      # Faraday connection.
      # @param [Hash] options Connection options.
      # @option options [String] :url Connection URL (either full or just prefix).
      # @option options [String] :token OAuth2 access token (not used if omitted).
      # @return [Faraday::Connection] Created connection.
      def connection(options = {})
        url   = options.delete(:url)
        token = options.delete(:token)
        
        Faraday.new(url, VkontakteApi.faraday_options) do |builder|
          builder.request :oauth2, token unless token.nil?
          builder.request :multipart
          builder.request :url_encoded
          builder.request :retry, VkontakteApi.max_retries
          
          builder.response :vk_logger
          builder.response :mashify
          builder.response :oj, preserve_raw: true
          
          builder.adapter VkontakteApi.adapter
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
vkontakte_api-1.4.3 lib/vkontakte_api/api.rb
vkontakte_api-1.4.2 lib/vkontakte_api/api.rb
vkontakte_api-1.4 lib/vkontakte_api/api.rb