class Phishtank::DB

Public Class Methods

new(api_key, format='json', compression=nil) click to toggle source
# File lib/phishtank/db.rb, line 3
def initialize(api_key, format='json', compression=nil)
  @api_key = api_key
  formats = ['json', 'csv', 'php_serialized', 'xml']
  compressions = ['gz', 'bz2']

  # Validate formats
  if (formats.include?(format))
    @format = format
  else
    raise Exception.new("Unknown data format. Please use one of the following: #{formats}")
  end

  # Validate compression methods
  if (compressions.include?(compression))
    @compression = compression
  elsif compression.nil?
    @compression = ''
  else
    raise Exception.new("Unknown compression method. Please use one of the following: #{compressions} or none (nil)")
  end

end

Public Instance Methods

download() click to toggle source

Get the database snapshot from Phishtank.com

# File lib/phishtank/db.rb, line 27
def download
  api_url = build_url
  RestClient::Request.execute(method: 'GET', url: api_url, open_timeout: 20)
end

Private Instance Methods

build_url() click to toggle source

Create API url

# File lib/phishtank/db.rb, line 35
def build_url
  base_url = "http://data.phishtank.com/data/#{@api_key}/online-valid"

  if @format
    base_url = "#{base_url}.#{@format}"
  end

  if @compression
    base_url = "#{base_url}.#{@compression}"
  end
  base_url
end