class PurpleWifi
Attributes
date_from[RW]
Class attributes
date_to[RW]
Class attributes
domain[RW]
Class attributes
public_key[RW]
Class attributes
secret_key[RW]
Class attributes
target[RW]
Class attributes
venue[RW]
Class attributes
Public Class Methods
new(domain, public_key, secret_key, target = :venues)
click to toggle source
# File lib/purple_wifi.rb, line 10 def initialize(domain, public_key, secret_key, target = :venues) @domain = domain @public_key = public_key @secret_key = secret_key @target = target @venue = venue @date_from = date_from @date_to = date_to @request_time = Time.now.httpdate end
Public Instance Methods
generate_hash()
click to toggle source
# File lib/purple_wifi.rb, line 56 def generate_hash OpenSSL::HMAC.hexdigest('SHA256', @secret_key, generate_signature) #OpenSSL::HMAC.hexdigest('SHA256', @secret_key, generate_signature) end
generate_header()
click to toggle source
# File lib/purple_wifi.rb, line 61 def generate_header { 'Content-Type' => 'application/json', 'Content-Length' => '0', 'Date' => @request_time, 'X-API-Authorization' => @public_key + ':' + generate_hash } end
generate_signature()
click to toggle source
# File lib/purple_wifi.rb, line 39 def generate_signature line1 = "application/json" line2 = "#{@domain}" if @target == 'venue' line3 = "/api/company/v1/venues" elsif @target == 'visitor' if @date_from == '' && @date_to == '' line3 = "/api/company/v1/venue/#{@venue}/visitors" elsif @date_from != '' && @date_to != '' line3 = "/api/company/v1/venue/#{@venue}/visitors?from=#{@date_from}&to=#{@date_to}" end end line4 = @request_time [line1, line2, line3, line4].join("\n") + "\n\n" #"#{line1}\r\n#{line2}\r\n#{line3}\r\n#{line4}\r\n" end
generate_url()
click to toggle source
# File lib/purple_wifi.rb, line 24 def generate_url if @target == 'venue' "https://#{@domain}/api/company/v1/venues" elsif @target == 'visitor' # If the user HASN'T passed the from/to dates, then the last part of the request url will be missing: url_end = '' # If the user HAS passed the from/to dates, then this creates the last part of the request url: if @date_from != '' && @date_to != '' url_end = "?from=#{@date_from}&to=#{@date_to}" end "https://#{@domain}/api/company/v1/venue/#{venue}/visitors#{url_end}" end end
venues()
click to toggle source
# File lib/purple_wifi.rb, line 82 def venues if venues_json['success'] venue_json = venues_json end for venue in 0...venue_json['data']['venues'].size names = [venue_json['data']['venues'][venue]['name']] end for venue in 0...venue_json['data']['venues'].size ids = [venue_json['data']['venues'][venue]['id']] end venue_dict = {} for venue in 0...venue_json['data']['venues'].size venue_dict[venue] = names[venue], ids[venue] end venue_dict end
venues_json()
click to toggle source
# File lib/purple_wifi.rb, line 70 def venues_json # Returns a json object containing full details of all venues in the Purple instance. @target = 'venue' uri = URI.parse(generate_url) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri) request.initialize_http_header(generate_header) response = http.request(request) JSON.parse(response.body) end
visitor_json(venue, date_from = '', date_to = '')
click to toggle source
# File lib/purple_wifi.rb, line 101 def visitor_json(venue, date_from = '', date_to = '') @target = 'visitor' @venue = venue @date_from = date_from @date_to = date_to uri = URI.parse(generate_url) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri) request.initialize_http_header(generate_header) response = http.request(request) JSON.parse(response.body) end