Class: Feathr::Api::FeathrEndpoint
- Inherits:
-
Object
- Object
- Feathr::Api::FeathrEndpoint
show all
- Defined in:
- lib/feathr/api/feathr_endpoint.rb
Direct Known Subclasses
Accounts, ApiTokenAuth, ApiTokenRefresh, ApiTokenVerify, Cashouts, Contractors, FeathrObject, FeaturedPlatforms, Healthz, IncomeRequests, Incomes, Invoices, Managers, MembershipRequests, Memberships, Platforms, PublicPlatforms, Rebates, Receiveables, ResetPassword, Users
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(client: Feathr::Client.default, prepended_path: '') ⇒ FeathrEndpoint
Returns a new instance of FeathrEndpoint.
7
8
9
10
|
# File 'lib/feathr/api/feathr_endpoint.rb', line 7
def initialize(client: Feathr::Client.default, prepended_path: '')
@client = client
@prepended_path = prepended_path
end
|
Instance Attribute Details
#client ⇒ Object
Returns the value of attribute client.
5
6
7
|
# File 'lib/feathr/api/feathr_endpoint.rb', line 5
def client
@client
end
|
#prepended_path ⇒ Object
Returns the value of attribute prepended_path.
5
6
7
|
# File 'lib/feathr/api/feathr_endpoint.rb', line 5
def prepended_path
@prepended_path
end
|
Class Method Details
.api_path(path) ⇒ Object
13
14
15
16
17
18
19
20
|
# File 'lib/feathr/api/feathr_endpoint.rb', line 13
def api_path(path)
define_method(:api_path) do
[
prepended_path,
path.gsub(/\/?$/, '/')
].join('/').gsub(/^\//,'')
end
end
|
.define_all ⇒ Object
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'lib/feathr/api/feathr_endpoint.rb', line 34
def define_all
define_method(:all) do
client.request(method: :get, path: api_path) do |data|
data.map do |resource|
if feathr_object == Feathr::Api::Membership
feathr_object.new(resource)
else
id = resource["url"][/\/(\d*)\/$/, 1]
feathr_object.new(resource, id)
end
end
end
end
define_method(:first) do |count=1|
count > 1 ? all.first(count) : all.first
end
define_method(:last) do |count=1|
count > 1 ? all.last(count) : all.last
end
end
|
.define_create ⇒ Object
70
71
72
73
74
75
76
77
78
79
80
81
|
# File 'lib/feathr/api/feathr_endpoint.rb', line 70
def define_create
define_method(:create) do |query|
client.request(method: :post, path: api_path, query: query) do |data|
if feathr_object == Feathr::Api::Membership
feathr_object.new(data)
else
id = data["url"][/\/(\d*)\/$/, 1]
feathr_object.new(data, id)
end
end
end
end
|
.define_destroy ⇒ Object
98
99
100
101
102
103
104
105
|
# File 'lib/feathr/api/feathr_endpoint.rb', line 98
def define_destroy
define_method(:destroy) do |id|
path = "#{ api_path }#{ id }/"
client.request(method: :delete, path: path) do |data|
data
end
end
end
|
.define_find ⇒ Object
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/feathr/api/feathr_endpoint.rb', line 57
def define_find
define_method(:find) do |id|
path = "#{ api_path }#{ id }/"
client.request(method: :get, path: path) do |data|
if feathr_object == Feathr::Api::Membership
feathr_object.new(data)
else
feathr_object.new(data, id)
end
end
end
end
|
.define_update ⇒ Object
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
# File 'lib/feathr/api/feathr_endpoint.rb', line 83
def define_update
define_method(:update) do |id, query|
path = "#{ api_path }#{ id }/"
client.request(method: :patch, path: path, query: query) do |data|
if feathr_object == Feathr::Api::Membership
feathr_object.new(data)
else
id = data["url"][/\/(\d*)\/$/, 1]
feathr_object.new(data, id)
end
end
end
end
|
.feathr_endpoints(*endpoints) ⇒ Object
28
29
30
31
32
|
# File 'lib/feathr/api/feathr_endpoint.rb', line 28
def feathr_endpoints(*endpoints)
endpoints.each do |name|
self.send("define_#{ name }")
end
end
|
.feathr_object(klass) ⇒ Object
22
23
24
25
26
|
# File 'lib/feathr/api/feathr_endpoint.rb', line 22
def feathr_object(klass)
define_method(:feathr_object) do
klass
end
end
|