Module: StarkBank::Utils::Rest

Defined in:
lib/utils/rest.rb

Class Method Summary collapse

Class Method Details

.delete_id(resource_name:, resource_maker:, id:, user: nil) ⇒ Object



103
104
105
106
107
108
109
110
111
# File 'lib/utils/rest.rb', line 103

def self.delete_id(resource_name:, resource_maker:, id:, user: nil)
  json = StarkBank::Utils::Request.fetch(
    method: 'DELETE',
    path: "#{StarkBank::Utils::API.endpoint(resource_name)}/#{id}",
    user: user
  ).json
  entity = json[StarkBank::Utils::API.last_name(resource_name)]
  StarkBank::Utils::API.from_api_json(resource_maker, entity)
end

.get_content(resource_name:, resource_maker:, sub_resource_name:, id:, user: nil, **query) ⇒ Object



63
64
65
66
67
68
69
70
# File 'lib/utils/rest.rb', line 63

def self.get_content(resource_name:, resource_maker:, sub_resource_name:, id:, user: nil, **query)
  StarkBank::Utils::Request.fetch(
    method: 'GET',
    path: "#{StarkBank::Utils::API.endpoint(resource_name)}/#{id}/#{sub_resource_name}",
    query: StarkBank::Utils::API.cast_json_to_api_format(query),
    user: user
  ).content
end

.get_id(resource_name:, resource_maker:, id:, user: nil) ⇒ Object



53
54
55
56
57
58
59
60
61
# File 'lib/utils/rest.rb', line 53

def self.get_id(resource_name:, resource_maker:, id:, user: nil)
  json = StarkBank::Utils::Request.fetch(
    method: 'GET',
    path: "#{StarkBank::Utils::API.endpoint(resource_name)}/#{id}",
    user: user
  ).json
  entity = json[StarkBank::Utils::API.last_name(resource_name)]
  StarkBank::Utils::API.from_api_json(resource_maker, entity)
end

.get_page(resource_name:, resource_maker:, user: nil, **query) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/utils/rest.rb', line 9

def self.get_page(resource_name:, resource_maker:, user: nil, **query)
  json = StarkBank::Utils::Request.fetch(
    method: 'GET',
    path: StarkBank::Utils::API.endpoint(resource_name),
    query: query,
    user: user
  ).json
  entities = []
  json[StarkBank::Utils::API.last_name_plural(resource_name)].each do |entity_json|
    entities << StarkBank::Utils::API.from_api_json(resource_maker, entity_json)
  end
  return entities, json['cursor']
end

.get_stream(resource_name:, resource_maker:, user: nil, **query) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/utils/rest.rb', line 23

def self.get_stream(resource_name:, resource_maker:, user: nil, **query)
  limit = query[:limit]
  query[:limit] = limit.nil? ? limit : [limit, 100].min

  Enumerator.new do |enum|
    loop do
      json = StarkBank::Utils::Request.fetch(
        method: 'GET',
        path: StarkBank::Utils::API.endpoint(resource_name),
        query: query,
        user: user
      ).json
      entities = json[StarkBank::Utils::API.last_name_plural(resource_name)]

      entities.each do |entity|
        enum << StarkBank::Utils::API.from_api_json(resource_maker, entity)
      end

      unless limit.nil?
        limit -= 100
        query[:limit] = [limit, 100].min
      end

      cursor = json['cursor']
      query['cursor'] = cursor
      break if cursor.nil? || cursor.empty? || (!limit.nil? && limit <= 0)
    end
  end
end

.get_sub_resource(resource_name:, sub_resource_maker:, sub_resource_name:, id:, user: nil, **query) ⇒ Object



124
125
126
127
128
129
130
131
132
133
# File 'lib/utils/rest.rb', line 124

def self.get_sub_resource(resource_name:, sub_resource_maker:, sub_resource_name:, id:, user: nil, **query)
  json = StarkBank::Utils::Request.fetch(
    method: 'GET',
    path: "#{StarkBank::Utils::API.endpoint(resource_name)}/#{id}/#{StarkBank::Utils::API.endpoint(sub_resource_name)}",
    user: user,
    query: StarkBank::Utils::API.cast_json_to_api_format(query)
  ).json
  entity = json[StarkBank::Utils::API.last_name(sub_resource_name)]
  StarkBank::Utils::API.from_api_json(sub_resource_maker, entity)
end

.patch_id(resource_name:, resource_maker:, id:, user: nil, **payload) ⇒ Object



113
114
115
116
117
118
119
120
121
122
# File 'lib/utils/rest.rb', line 113

def self.patch_id(resource_name:, resource_maker:, id:, user: nil, **payload)
  json = StarkBank::Utils::Request.fetch(
    method: 'PATCH',
    path: "#{StarkBank::Utils::API.endpoint(resource_name)}/#{id}",
    user: user,
    payload: StarkBank::Utils::API.cast_json_to_api_format(payload)
  ).json
  entity = json[StarkBank::Utils::API.last_name(resource_name)]
  StarkBank::Utils::API.from_api_json(resource_maker, entity)
end

.post(resource_name:, resource_maker:, entities:, user: nil) ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/utils/rest.rb', line 72

def self.post(resource_name:, resource_maker:, entities:, user: nil)
  jsons = []
  entities.each do |entity|
    jsons << StarkBank::Utils::API.api_json(entity)
  end
  payload = { StarkBank::Utils::API.last_name_plural(resource_name) => jsons }
  json = StarkBank::Utils::Request.fetch(
    method: 'POST',
    path: StarkBank::Utils::API.endpoint(resource_name),
    payload: payload,
    user: user
  ).json
  returned_jsons = json[StarkBank::Utils::API.last_name_plural(resource_name)]
  entities = []
  returned_jsons.each do |returned_json|
    entities << StarkBank::Utils::API.from_api_json(resource_maker, returned_json)
  end
  entities
end

.post_single(resource_name:, resource_maker:, entity:, user: nil) ⇒ Object



92
93
94
95
96
97
98
99
100
101
# File 'lib/utils/rest.rb', line 92

def self.post_single(resource_name:, resource_maker:, entity:, user: nil)
  json = StarkBank::Utils::Request.fetch(
    method: 'POST',
    path: StarkBank::Utils::API.endpoint(resource_name),
    payload: StarkBank::Utils::API.api_json(entity),
    user: user
  ).json
  entity_json = json[StarkBank::Utils::API.last_name(resource_name)]
  StarkBank::Utils::API.from_api_json(resource_maker, entity_json)
end