class ApiWrapperFor8x8::Connection
Constants
- MAX_TRY
- RECORDS_LIMIT
- VALID_SEGMENT
Public Class Methods
api_token_keys()
click to toggle source
# File lib/ApiWrapperFor8x8/connection.rb, line 35 def self.api_token_keys [:username, :password].freeze end
new(creds={})
click to toggle source
# File lib/ApiWrapperFor8x8/connection.rb, line 16 def initialize(creds={}) @configuration = {} ApiWrapperFor8x8::Connection.api_token_keys.each do |key| @configuration[key] = creds[key].to_s end end
Public Instance Methods
api_token_keys_valid?()
click to toggle source
# File lib/ApiWrapperFor8x8/connection.rb, line 31 def api_token_keys_valid? return ApiWrapperFor8x8::Connection.api_token_keys.detect {|key| @configuration[key] == ''} == nil end
apply_filter(list, filtered_options)
click to toggle source
# File lib/ApiWrapperFor8x8/connection.rb, line 87 def apply_filter(list, filtered_options) if filtered_options.size == 0 return list end list.select do |ele| flag = true filtered_options.each do |key, value| flag = false unless (ele[key] && ele[key] == value) end flag end end
get(url, params={}, filtered_opts={})
click to toggle source
# File lib/ApiWrapperFor8x8/connection.rb, line 39 def get(url, params={}, filtered_opts={}) offset = params[:n] || 1 params[:n] = offset unless params[:n] unless params.empty? url = "#{url}?#{serialize_param(params)}" end tries = 1 resp = [] begin resp_tmp = get_stat(request(:get, url, {}), url) resp.concat(apply_filter(resp_tmp, filtered_opts)) if resp_tmp tries += 1 # update the url to increase the offset offset += RECORDS_LIMIT url.gsub!(/n=[0-9]*/, "n=#{offset}") end while (size_of(resp_tmp) >= RECORDS_LIMIT && tries <= MAX_TRY) resp end
get_stat(resp, url)
click to toggle source
# File lib/ApiWrapperFor8x8/connection.rb, line 80 def get_stat(resp, url) if root_name = validate_and_extract_url(url) return [] if (resp && resp.size == 0) return resp[root_name][root_name[0...-1]] end end
parsed_response(response)
click to toggle source
# File lib/ApiWrapperFor8x8/connection.rb, line 100 def parsed_response(response) if response.is_a? Net::HTTPResponse unless response.is_a? Net::HTTPSuccess raise ApiWrapperFor8x8::ResponseError.new(response) end JSON.parse(response.body) else unless response.success? raise ApiWrapperFor8x8::ResponseError.new(response) end response.parsed_response end end
request(method, url, options={})
click to toggle source
# File lib/ApiWrapperFor8x8/connection.rb, line 23 def request(method, url, options={}) unless api_token_keys_valid? raise ApiWrapperFor8x8::ResponseError.new(nil, "Please set username and password correctly") end options[:basic_auth] = @configuration parsed_response(self.class.__send__(method, url, options)) end
serialize_param(params)
click to toggle source
# File lib/ApiWrapperFor8x8/connection.rb, line 61 def serialize_param(params) params.sort.map {|key, value| URI.escape("#{key}=#{value}")}.join('&') end
size_of(details)
click to toggle source
# File lib/ApiWrapperFor8x8/connection.rb, line 65 def size_of(details) details ||= [] details.size end
validate_and_extract_url(url)
click to toggle source
# File lib/ApiWrapperFor8x8/connection.rb, line 70 def validate_and_extract_url(url) uri = URI(url) last_seg = uri.path.split('/').last if last_seg =~ /(#{VALID_SEGMENT.join('|')})\.json$/ return last_seg.split('.').first else raise ApiWrapperFor8x8::ResponseError.new(nil, "URL path is incorrect! please double check your url.") end end