class Floodgate::Client

Public Class Methods

add_ip_address(ip_address) click to toggle source
# File lib/floodgate/client.rb, line 7
def self.add_ip_address(ip_address)
  return if ip_address.nil? || ip_address.empty?

  params = { ip_address: { ip_address: ip_address } }

  post('ip_addresses', params)
end
add_my_ip_address() click to toggle source
# File lib/floodgate/client.rb, line 15
def self.add_my_ip_address
  add_ip_address(my_ip_address)
end
allowed_ip_addresses() click to toggle source
# File lib/floodgate/client.rb, line 23
def self.allowed_ip_addresses
  status.allowed_ip_addresses
end
base_url() click to toggle source
# File lib/floodgate/client.rb, line 112
def self.base_url
  "https://#{host_name}/apps/#{Config.app_id}"
end
close() click to toggle source
# File lib/floodgate/client.rb, line 27
def self.close
  params = { app: { filter_traffic: true } }

  put('', params)
end
default_status() click to toggle source
# File lib/floodgate/client.rb, line 60
def self.default_status
  Hashie::Mash.new(
    default_status: true,
    filter_traffic: false,
    allowed_ip_addresses: [],
    redirect_url: nil
  )
end
delete(path, params = {}) click to toggle source
# File lib/floodgate/client.rb, line 78
def self.delete(path, params = {})
  verb_with_params_in_body(:delete, path, params)
end
get(path, params = {}) click to toggle source
# File lib/floodgate/client.rb, line 82
def self.get(path, params = {})
  params.merge!(api_token: Config.api_token)

  response = get_connection.get(path, params)

  response.body
end
get_connection() click to toggle source
# File lib/floodgate/client.rb, line 120
def self.get_connection
  conn = Faraday.new(url: base_url) do |builder|
    builder.use Faraday::Response::Mashify
    builder.use FaradayMiddleware::ParseJson, content_type: 'application/json'
    builder.use Faraday::Request::UrlEncoded
    builder.use Faraday::Response::RaiseError
    builder.use Faraday::Adapter::NetHttp
  end

  conn.headers[:accept] = 'application/vnd.floodgate-v1+json'
  conn.headers[:user_agent] = user_agent

  conn
end
host_name() click to toggle source
# File lib/floodgate/client.rb, line 108
def self.host_name
  Config.test? ? 'staging-api.floodgate.io' : 'api.floodgate.io'
end
my_ip_address() click to toggle source
# File lib/floodgate/client.rb, line 33
def self.my_ip_address
  conn = Faraday.new(url: 'http://ip.floodgate.io')
  response = conn.get('')
  value = response.body.strip
  IPAddr.new(value, Socket::AF_INET).to_s
end
open() click to toggle source
# File lib/floodgate/client.rb, line 40
def self.open
  params = { app: { filter_traffic: false } }

  put('', params)
end
post(path, params = {}) click to toggle source
# File lib/floodgate/client.rb, line 90
def self.post(path, params = {})
  verb_with_params_in_body(:post, path, params)
end
put(path, params = {}) click to toggle source
# File lib/floodgate/client.rb, line 94
def self.put(path, params = {})
  verb_with_params_in_body(:put, path, params)
end
remove_ip_address(ip_address) click to toggle source
# File lib/floodgate/client.rb, line 46
def self.remove_ip_address(ip_address)
  return if ip_address.nil? || ip_address.empty?

  params = { ip_address: { ip_address: ip_address } }

  delete('ip_addresses', params)
end
remove_my_ip_address() click to toggle source
# File lib/floodgate/client.rb, line 19
def self.remove_my_ip_address
  remove_ip_address(my_ip_address)
end
set_redirect_url(redirect_url) click to toggle source
# File lib/floodgate/client.rb, line 54
def self.set_redirect_url(redirect_url)
  params = { app: { redirect_url: redirect_url } }

  put('', params)
end
status() click to toggle source
# File lib/floodgate/client.rb, line 69
def self.status
  begin
    get('status')
  rescue Faraday::Error::ClientError => e
    # TODO: Log
    default_status
  end
end
user_agent() click to toggle source
# File lib/floodgate/client.rb, line 116
def self.user_agent
  'FloodgateAgent'
end
verb_with_params_in_body(verb, path, params = {}) click to toggle source
# File lib/floodgate/client.rb, line 98
def self.verb_with_params_in_body(verb, path, params = {})
  params.merge!(api_token: Config.api_token)

  response = get_connection.public_send(verb, path) do |request|
    request.body = params
  end

  response.body
end