Sha256: fb84ff9c9980820bd78bbda9c3b22b9d2ebd84133f9ddd312819251b1dfb242f

Contents?: true

Size: 1.99 KB

Versions: 1

Compression:

Stored size: 1.99 KB

Contents

require 'json'
require 'rest-client'

require 'cradlepoint/version'

require 'cradlepoint/hash_helpers'

require 'cradlepoint/cradlepoint_object'
require 'cradlepoint/account'
require 'cradlepoint/net_device'
require 'cradlepoint/net_flow'
require 'cradlepoint/router'
require 'cradlepoint/config'

module Cradlepoint

  class << self
    attr_accessor :username, :password, :account, :base_url
  end
  
  @base_url = 'cradlepointecm.com/api/v1'

  def self.make_request(method, url = '', params = {})
    raise 'You need to call Cradlepoint.authenticate(username, password) first.' unless username and password

    params.merge!(format: :json)
    headers = { accept: :json, content_type: :json }

    response = case method
               when :get then RestClient.get(url, params: params, headers: headers)
               else return false
               end
    
    handle_response(response)
  rescue RestClient::Exception => e
    puts "RestClient::Exception received: #{ e.response.code }"
    return case e.response.code
           when 400 then { success: false, error_code: 400, error: e }
           when 401 then { success: false, error_code: 401, error: e }
           when 403 then { success: false, error_code: 403, error: e }
           when 404 then { success: false, error_code: 404, error: e }
           when 500 then { success: false, error_code: 500, error: e }
           else raise(e) # Not an error we are expecting.
           end
  end
  
  def self.authenticate(username, password)
    self.username = username
    self.password = password
    true
  end
  
  def self.url_prepend
    "https://#{ @username }:#{ @password }@"
  end
  
  def self.handle_response(response)
    begin
      parsed_response = JSON.parse(response)
    rescue JSON::ParserError, TypeError
      raise "Cradlepoint received an invalid json response."
    end
    
    parsed_response['success'] ? 
      symbolize_keys(parsed_response['data']) : 
      raise("Unsuccessful response received.")  # TODO: Handle more elegantly.
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cradlepoint-0.1.1 lib/cradlepoint.rb