Class: Tr8n::ApiClient
- Inherits:
-
Base
- Object
- Base
- Tr8n::ApiClient
show all
- Defined in:
- lib/tr8n/api_client.rb
Constant Summary
collapse
- API_HOST =
'https://translationexchange.com'
- API_PATH =
'/tr8n/api/'
Instance Attribute Summary
Attributes inherited from Base
#attributes
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Base
attributes, belongs_to, has_many, #hash_value, hash_value, #initialize, #method_missing, #to_hash, #update_attributes
Constructor Details
This class inherits a constructor from Tr8n::Base
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
in the class Tr8n::Base
Class Method Details
.error?(data) ⇒ Boolean
57
58
59
|
# File 'lib/tr8n/api_client.rb', line 57
def self.error?(data)
not data["error"].nil?
end
|
Instance Method Details
#access_token ⇒ Object
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/tr8n/api_client.rb', line 33
def access_token
application.access_token ||= begin
api("oauth/request_token",
{
:client_id => application.key,
:client_secret => application.secret,
:grant_type => :client_credentials
},
{
:host => application.host
}
)
end
application.access_token["access_token"]
end
|
#api(path, params = {}, opts = {}) ⇒ Object
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
# File 'lib/tr8n/api_client.rb', line 65
def api(path, params = {}, opts = {})
Tr8n.logger.trace_api_call(path, params) do
conn = Faraday.new(:url => host) do |faraday|
faraday.request(:url_encoded)
faraday.adapter(Faraday.default_adapter)
end
if opts[:method] == :post
response = conn.post("#{API_PATH}#{path}", params)
else
response = conn.get("#{API_PATH}#{path}", params)
end
data = JSON.parse(response.body)
unless data["error"].nil?
raise Tr8n::Exception.new("Error: #{data["error"]}")
end
process_response(data, opts)
end
end
|
#get(path, params = {}, opts = {}) ⇒ Object
49
50
51
|
# File 'lib/tr8n/api_client.rb', line 49
def get(path, params = {}, opts = {})
api(path, params.merge(:access_token => access_token, :t => Time.now.to_i), opts)
end
|
#host ⇒ Object
61
62
63
|
# File 'lib/tr8n/api_client.rb', line 61
def host
application.host || API_HOST
end
|
#object_class(opts) ⇒ Object
89
90
91
92
|
# File 'lib/tr8n/api_client.rb', line 89
def object_class(opts)
return unless opts[:class]
opts[:class].is_a?(String) ? opts[:class].constantize : opts[:class]
end
|
#post(path, params = {}, opts = {}) ⇒ Object
53
54
55
|
# File 'lib/tr8n/api_client.rb', line 53
def post(path, params = {}, opts = {})
api(path, params.merge(:access_token => access_token, :t => Time.now.to_i), opts.merge(:method => :post))
end
|
#process_response(data, opts) ⇒ Object
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
# File 'lib/tr8n/api_client.rb', line 94
def process_response(data, opts)
if data["results"]
Tr8n.logger.debug("recieved #{data["results"].size} result(s)")
return data["results"] unless object_class(opts)
objects = []
data["results"].each do |data|
objects << object_class(opts).new(data.merge(opts[:attributes] || {}))
end
return objects
end
return data unless object_class(opts)
Tr8n.logger.debug("constructing #{object_class(opts).name}")
object_class(opts).new(data.merge(opts[:attributes] || {}))
end
|