class VtApi::Endpoint

API endpoint interface class.

Attributes

method[RW]
uri[RW]

Public Class Methods

new(uri, method, params = {}) click to toggle source

Initialize new endpoint.

Interface parameters are described as in example below. @example

{
    foo: true, # this describes required parameter
    bar: false # this describes a parameter that can be omitted
}

@param [Object] uri Relative URL of the endpoint. @param [Object] method HTTP method to be used for the endpoint. @param [Object] params Endpoint parameters interface.

# File lib/vt_api/internal/endpoint.rb, line 22
def initialize(uri, method, params = {})
        @uri    = uri
        @method = method
        @params = params
end

Public Instance Methods

missing_params(passed_params) click to toggle source

Get a list of missing parameters.

@param [Hash] passed_params @return [Array]

# File lib/vt_api/internal/endpoint.rb, line 44
def missing_params(passed_params)
        missing = []

        @params.each do |param, required|
                missing << param if required && passed_params[param].nil?
        end

        missing
end
params_valid?(passed_params) click to toggle source

Check whether given parameters match endpoint interface.

@param [Hash] passed_params @return [Boolean]

# File lib/vt_api/internal/endpoint.rb, line 32
def params_valid?(passed_params)
        @params.each do |param, required|
                return false if required && passed_params[param].nil?
        end

        true
end

Private Instance Methods

clean_uri(uri) click to toggle source

Remove redundant slashes from URL. @example

clean_url 'http://google.com////search' # => 'http://google.com/search'

@param [String] uri @return [String]

# File lib/vt_api/internal/endpoint.rb, line 62
def clean_uri(uri)
        uri.gsub %r{([^:])[\/]+}, '\1/'
end