module Fingerbank::Upstream

Public Instance Methods

interrogate(user_agent) click to toggle source
# File lib/fingerbank_client/upstream.rb, line 21
def interrogate(user_agent)
  http = Net::HTTP.new("fingerbank.inverse.ca", 443)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  url = "/api/v1/combinations/interrogate?key=#{self.key}"
  require 'cgi'
  user_agent = CGI.escape(user_agent)
  url = "#{url}&user_agent=#{user_agent}"
  resp = http.get(url)

  return nil if resp.code == '404'
  raise FingerbankError.new("Communication error"), "Couldn't contact upstream : #{resp.body}" if resp.code != '200'

  require 'json'
  data = JSON.parse(resp.body) 

  return data
end
update() click to toggle source
# File lib/fingerbank_client/upstream.rb, line 6
def update
  http = Net::HTTP.new("fingerbank.inverse.ca", 443)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  resp = http.get("/api/v1/download?key=#{self.key}")

  raise FingerbankError.new("Communication error"), "Couldn't download databse : #{resp.body}" if resp.code != '200'

  file = File.new("fingerbank.sqlite", "w:ASCII-8BIT")
  file.write(resp.body)
  file.close

  return true
end