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