Class: Emojidex::Service::Transactor

Inherits:
Object
  • Object
show all
Defined in:
lib/emojidex/service/transactor.rb

Overview

API transaction utility

Constant Summary collapse

@@connection =
nil
@@settings =

@@retries = 10

{
  api: {
    host: 'www.emojidex.com',
    prefix: '/api/v1/',
    protocol: 'https'
  },
  cdn: {
    host: 'cdn.emojidex.com',
    prefix: '/emoji/',
    protocol: 'https'
  },
  closed_net: false
}

Class Method Summary collapse

Class Method Details

.api_urlObject



76
77
78
# File 'lib/emojidex/service/transactor.rb', line 76

def self.api_url()
  "#{@@settings[:api][:protocol]}://#{@@settings[:api][:host]}#{@@settings[:api][:prefix]}"
end

.cdn_urlObject



80
81
82
# File 'lib/emojidex/service/transactor.rb', line 80

def self.cdn_url()
  "#{@@settings[:cdn][:protocol]}://#{@@settings[:cdn][:host]}#{@@settings[:cdn][:prefix]}"
end

.connectObject



61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/emojidex/service/transactor.rb', line 61

def self.connect
  return @@connection if @@connection
  @@connection = Faraday.new do |conn|
    conn.request :url_encoded
    #conn.request :retry, max: @@retries, interval: 0.05, interval_randomness: 0.5,
    #              backoff_factor: 2
    # conn.response :logger
    conn.headers['Accept'] = 'application/msgpack'
    conn.use FaradayMiddleware::FollowRedirects, limit: 5
    conn.adapter :typhoeus #Faraday.default_adapter
  end
  _kludge_certs if Gem.win_platform?
  @@connection
end

.delete(endpoint, params = {}) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/emojidex/service/transactor.rb', line 46

def self.delete(endpoint, params = {})
  response = connect.delete(
    "#{api_url}#{endpoint}", params)

  _status_raiser(response)
  _datafy_json(response.body)
end

.download(file_subpath) ⇒ Object



54
55
56
57
58
59
# File 'lib/emojidex/service/transactor.rb', line 54

def self.download(file_subpath)
  connect.get(URI.escape("#{cdn_url}#{file_subpath.tr(' ', '_')}"))
rescue Faraday::ConnectionFailed
  _kludge_certs
  connect.get(URI.escape("#{cdn_url}#{file_subpath.tr(' ', '_')}"))
end

.get(endpoint, params = {}) ⇒ Object



31
32
33
34
35
36
# File 'lib/emojidex/service/transactor.rb', line 31

def self.get(endpoint, params = {})
  response = connect.get(
    "#{api_url}#{URI.encode(endpoint)}", params)
  _status_raiser(response)
  _datafy_json(response.body)
end

.post(endpoint, params = {}) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/emojidex/service/transactor.rb', line 38

def self.post(endpoint, params = {})
  response = connect.post(
    "#{api_url}#{endpoint}", params)

  _status_raiser(response)
  _datafy_json(response.body)
end