ibm-cloud-sdk 0.1.1 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +26 -0
- data/README.md +1 -1
- data/ibm-cloud-sdk.gemspec +3 -1
- data/lib/ibm/cloud/sdk.rb +2 -0
- data/lib/ibm/cloud/sdk/power_iaas.rb +70 -1
- data/lib/ibm/cloud/sdk/resource_controller.rb +2 -8
- data/lib/ibm/cloud/sdk/version.rb +1 -1
- data/lib/ibm/cloud/sdk/vpc.rb +132 -0
- data/lib/ibm/cloud/sdk/vpc/base_collection.rb +108 -0
- data/lib/ibm/cloud/sdk/vpc/base_instance.rb +23 -0
- data/lib/ibm/cloud/sdk/vpc/base_vpc.rb +61 -0
- data/lib/ibm/cloud/sdk/vpc/cloud_sdk.rb +33 -0
- data/lib/ibm/cloud/sdk/vpc/floatingips.rb +20 -0
- data/lib/ibm/cloud/sdk/vpc/flowlogcollectors.rb +20 -0
- data/lib/ibm/cloud/sdk/vpc/helpers/connection.rb +66 -0
- data/lib/ibm/cloud/sdk/vpc/helpers/response.rb +92 -0
- data/lib/ibm/cloud/sdk/vpc/ike_policies.rb +24 -0
- data/lib/ibm/cloud/sdk/vpc/images.rb +21 -0
- data/lib/ibm/cloud/sdk/vpc/instance/actions.rb +19 -0
- data/lib/ibm/cloud/sdk/vpc/instance/floating_ips.rb +23 -0
- data/lib/ibm/cloud/sdk/vpc/instance/network_interfaces.rb +28 -0
- data/lib/ibm/cloud/sdk/vpc/instance/volume_attachments.rb +23 -0
- data/lib/ibm/cloud/sdk/vpc/instance_profiles.rb +21 -0
- data/lib/ibm/cloud/sdk/vpc/instances.rb +64 -0
- data/lib/ibm/cloud/sdk/vpc/ipsec_policies.rb +24 -0
- data/lib/ibm/cloud/sdk/vpc/keys.rb +43 -0
- data/lib/ibm/cloud/sdk/vpc/load_balancer.rb +23 -0
- data/lib/ibm/cloud/sdk/vpc/load_balancer/listeners.rb +30 -0
- data/lib/ibm/cloud/sdk/vpc/load_balancer/members.rb +23 -0
- data/lib/ibm/cloud/sdk/vpc/load_balancer/policies.rb +30 -0
- data/lib/ibm/cloud/sdk/vpc/load_balancer/pools.rb +28 -0
- data/lib/ibm/cloud/sdk/vpc/load_balancer/rules.rb +25 -0
- data/lib/ibm/cloud/sdk/vpc/load_balancers.rb +19 -0
- data/lib/ibm/cloud/sdk/vpc/network_acls.rb +39 -0
- data/lib/ibm/cloud/sdk/vpc/operating_systems.rb +21 -0
- data/lib/ibm/cloud/sdk/vpc/public_gateways.rb +21 -0
- data/lib/ibm/cloud/sdk/vpc/regions.rb +35 -0
- data/lib/ibm/cloud/sdk/vpc/security_groups.rb +48 -0
- data/lib/ibm/cloud/sdk/vpc/subnets.rb +21 -0
- data/lib/ibm/cloud/sdk/vpc/volume_profiles.rb +21 -0
- data/lib/ibm/cloud/sdk/vpc/volumes.rb +21 -0
- data/lib/ibm/cloud/sdk/vpc/vpcs.rb +60 -0
- data/lib/ibm/cloud/sdk/vpc/vpn_gateway/connections.rb +35 -0
- data/lib/ibm/cloud/sdk/vpc/vpn_gateway/local_cidrs.rb +32 -0
- data/lib/ibm/cloud/sdk/vpc/vpn_gateway/peer_cidrs.rb +32 -0
- data/lib/ibm/cloud/sdk/vpc/vpn_gateways.rb +25 -0
- metadata +57 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 160845336c50ab1c67c274cb62fd5e52af7bf0d6e4b5a4a1b57c4ea3c5eb47db
|
4
|
+
data.tar.gz: 7762d522d6754815a4e19a927bdcce0d73a8c5a0d204980d44dfdf006d7254d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f42fe440d6a3610c94b7336246eda2dfdf6f794afa501480e633563d3a25f2d27bc337ebf41f82b82dad3a3958c2dbbf094244da77021fbe188fffa5cb73d294
|
7
|
+
data.tar.gz: 7af6df6df99133b619aa62bcc03281dc58f8b1f79c1b26d57b6cbf490dfc85f0dbdd46d41306780d8ead81148d71bf9003b78b787d8d21a64c6974ac0fc546a7
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# Changelog
|
2
|
+
All notable changes to the gem ibm-cloud-sdk-ruby will be documented here.
|
3
|
+
|
4
|
+
## v0.1.6 - 2020-09-23
|
5
|
+
- Add PowerIaaS method to get instance info
|
6
|
+
- Return region specific PowerVS storage types
|
7
|
+
- Move VPC instance into instances and add initialization method.
|
8
|
+
|
9
|
+
## v0.1.5 - 2020-09-21
|
10
|
+
- Added Enumerable based pagination support
|
11
|
+
- Move instance profiles
|
12
|
+
- Improve resource lookup by GUID
|
13
|
+
- Add support to create a PowerIaas volume
|
14
|
+
|
15
|
+
## v0.1.4 - 2020-09-17
|
16
|
+
- Added support for the IBM Virtual Private Cloud (VPC) service
|
17
|
+
|
18
|
+
## v0.1.3 - 2020-08-31
|
19
|
+
### Added the following rest api calls for Power System Virtual Server service
|
20
|
+
- Add PowerIaas 'delete_volume' method
|
21
|
+
- Add PowerVS SAP API calls
|
22
|
+
- get list of available system pools within a particular data center
|
23
|
+
- get list of all storage type availble in the data center. There may be
|
24
|
+
update to the call once PowerVS service updates the storage type rest api
|
25
|
+
for Power System Virtual Server service .
|
26
|
+
|
data/README.md
CHANGED
@@ -28,5 +28,5 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
28
28
|
|
29
29
|
## Contributing
|
30
30
|
|
31
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
31
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/IBM-Cloud/ibm-cloud-sdk-ruby.
|
32
32
|
|
data/ibm-cloud-sdk.gemspec
CHANGED
@@ -11,7 +11,8 @@ Gem::Specification.new do |spec|
|
|
11
11
|
spec.licenses = %w["Apache-2.0"]
|
12
12
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
|
13
13
|
|
14
|
-
spec.metadata["homepage_uri"]
|
14
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
15
|
+
spec.metadata["changelog_uri"] = "https://github.com/IBM-Cloud/ibm-cloud-sdk-ruby/blob/v#{spec.version}/CHANGELOG.md"
|
15
16
|
|
16
17
|
# Specify which files should be added to the gem when it is released.
|
17
18
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
@@ -23,4 +24,5 @@ Gem::Specification.new do |spec|
|
|
23
24
|
spec.require_paths = ["lib"]
|
24
25
|
|
25
26
|
spec.add_dependency "rest-client"
|
27
|
+
spec.add_dependency "http"
|
26
28
|
end
|
data/lib/ibm/cloud/sdk.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
|
1
2
|
require "json"
|
2
3
|
require "rest-client"
|
3
4
|
|
@@ -6,6 +7,7 @@ require "ibm/cloud/sdk/iam"
|
|
6
7
|
require "ibm/cloud/sdk/power_iaas"
|
7
8
|
require "ibm/cloud/sdk/resource_controller"
|
8
9
|
require "ibm/cloud/sdk/version"
|
10
|
+
require "ibm/cloud/sdk/vpc/cloud_sdk"
|
9
11
|
|
10
12
|
module IBM
|
11
13
|
module Cloud
|
@@ -18,7 +18,14 @@ module IBM
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def endpoint
|
21
|
-
"https://#{region}.power-iaas.cloud.ibm.com/pcloud/v1"
|
21
|
+
"https://#{region.sub(/-\d$/, '')}.power-iaas.cloud.ibm.com/pcloud/v1"
|
22
|
+
end
|
23
|
+
|
24
|
+
# Get Power Cloud Instance information
|
25
|
+
#
|
26
|
+
# @return [Hash] CloudInstance
|
27
|
+
def get_pcloud_instance
|
28
|
+
get("cloud-instances/#{guid}")
|
22
29
|
end
|
23
30
|
|
24
31
|
# Get all PVM instances in an IBM Power Cloud instance
|
@@ -113,6 +120,21 @@ module IBM
|
|
113
120
|
get("cloud-instances/#{guid}/volumes/#{volume_id}")
|
114
121
|
end
|
115
122
|
|
123
|
+
# Delete a volume
|
124
|
+
#
|
125
|
+
# @param volume_id [String] The ID of a volume
|
126
|
+
def delete_volume(volume_id)
|
127
|
+
delete("cloud-instances/#{guid}/volumes/#{volume_id}")
|
128
|
+
end
|
129
|
+
|
130
|
+
# Create a volume
|
131
|
+
#
|
132
|
+
# @param volume_hash [Hash] New volume attributes
|
133
|
+
# @return [Hash] Volume
|
134
|
+
def create_volume(volume_hash)
|
135
|
+
post("cloud-instances/#{guid}/volumes", volume_hash.to_json)
|
136
|
+
end
|
137
|
+
|
116
138
|
# Get all networks in an IBM Power Cloud instance
|
117
139
|
#
|
118
140
|
# @return [Array<Hash>] all networks for this IBM Power Cloud instance
|
@@ -131,6 +153,22 @@ module IBM
|
|
131
153
|
get("cloud-instances/#{guid}/networks/#{network_id}")
|
132
154
|
end
|
133
155
|
|
156
|
+
# Get a available system pools list for IBM Power Cloud DC
|
157
|
+
#
|
158
|
+
# @return [Hash] SystemPool
|
159
|
+
def get_system_pool
|
160
|
+
get("cloud-instances/#{guid}/system-pools")
|
161
|
+
end
|
162
|
+
|
163
|
+
# Get a storage types list in IBM Power Cloud.
|
164
|
+
# note: this mehod to be refactored under the common
|
165
|
+
# IBM::Cloud::SDK::PowerIaas.endpoint when the rest api become available.
|
166
|
+
#
|
167
|
+
# @return [Hash] StorageType
|
168
|
+
def get_storage_types
|
169
|
+
JSON.parse(RestClient.get("https://#{region.sub(/-\d$/, '')}.power-iaas.cloud.ibm.com/broker/v1/storage-types", headers))[region]
|
170
|
+
end
|
171
|
+
|
134
172
|
def create_network(network_hash)
|
135
173
|
post("cloud-instances/#{guid}/networks", network_hash.to_json)
|
136
174
|
end
|
@@ -156,6 +194,37 @@ module IBM
|
|
156
194
|
delete("tenants/#{tenant}/sshkeys/#{name}")
|
157
195
|
end
|
158
196
|
|
197
|
+
# Get an SAP profile
|
198
|
+
#
|
199
|
+
# @param sap_profile_id [String] The ID of an SAP profile
|
200
|
+
# @return [Hash] SAP profile
|
201
|
+
def get_sap_profile(sap_profile_id)
|
202
|
+
get("cloud-instances/#{guid}/sap/#{sap_profile_id}")
|
203
|
+
end
|
204
|
+
|
205
|
+
# Get list of all SAP profiles
|
206
|
+
#
|
207
|
+
# @return [Array<Hash>] all SAP profiles available to this instance
|
208
|
+
def get_sap_profiles
|
209
|
+
sap_profiles = get("cloud-instances/#{guid}/sap")["profiles"] || []
|
210
|
+
|
211
|
+
sap_profiles.map do |sap_profile|
|
212
|
+
get_sap_profile(sap_profile["profileID"])
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
# Create a new SAP PVM Instance
|
217
|
+
#
|
218
|
+
# Create a new PVM instance using an SAP profile. The resultant PVM
|
219
|
+
# instance is the standard 'PVMInstance' type and can be accessed via
|
220
|
+
# the existing *_pvm_instance methods.
|
221
|
+
#
|
222
|
+
# @param sap_profile_id [String] The ID of an SAP profile
|
223
|
+
# @return [Hash] SAP profile
|
224
|
+
def create_sap_pvm_instance(instance_hash)
|
225
|
+
post("cloud-instances/#{guid}/sap", instance_hash.to_json)
|
226
|
+
end
|
227
|
+
|
159
228
|
private
|
160
229
|
|
161
230
|
attr_reader :crn, :guid, :region, :tenant, :token
|
@@ -2,6 +2,7 @@ module IBM
|
|
2
2
|
module Cloud
|
3
3
|
module SDK
|
4
4
|
class ResourceController < BaseService
|
5
|
+
require "ibm/cloud/sdk/resource_controller/resource"
|
5
6
|
def endpoint
|
6
7
|
"https://resource-controller.cloud.ibm.com/v2"
|
7
8
|
end
|
@@ -10,15 +11,8 @@ module IBM
|
|
10
11
|
@token = token
|
11
12
|
end
|
12
13
|
|
13
|
-
def get_resources
|
14
|
-
resources = get("resource_instances")["resources"] || []
|
15
|
-
|
16
|
-
require "ibm/cloud/sdk/resource_controller/resource"
|
17
|
-
resources.map { |instance| Resource.new(instance) }
|
18
|
-
end
|
19
|
-
|
20
14
|
def get_resource(guid)
|
21
|
-
|
15
|
+
Resource.new(get("resource_instances/#{guid}"))
|
22
16
|
end
|
23
17
|
|
24
18
|
private
|
@@ -0,0 +1,132 @@
|
|
1
|
+
# typed: true
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require_relative 'vpc/base_vpc'
|
5
|
+
require_relative 'vpc/base_collection'
|
6
|
+
require_relative 'vpc/base_instance'
|
7
|
+
|
8
|
+
require_relative 'vpc/floatingips'
|
9
|
+
require_relative 'vpc/flowlogcollectors'
|
10
|
+
require_relative 'vpc/ike_policies'
|
11
|
+
require_relative 'vpc/images'
|
12
|
+
require_relative 'vpc/instance_profiles'
|
13
|
+
require_relative 'vpc/instances'
|
14
|
+
require_relative 'vpc/ipsec_policies'
|
15
|
+
require_relative 'vpc/keys'
|
16
|
+
require_relative 'vpc/load_balancers'
|
17
|
+
require_relative 'vpc/network_acls'
|
18
|
+
require_relative 'vpc/operating_systems'
|
19
|
+
require_relative 'vpc/public_gateways'
|
20
|
+
require_relative 'vpc/regions'
|
21
|
+
require_relative 'vpc/security_groups'
|
22
|
+
require_relative 'vpc/subnets'
|
23
|
+
require_relative 'vpc/volume_profiles'
|
24
|
+
require_relative 'vpc/volumes'
|
25
|
+
require_relative 'vpc/vpcs'
|
26
|
+
require_relative 'vpc/vpn_gateways'
|
27
|
+
|
28
|
+
module IBM
|
29
|
+
module Cloud
|
30
|
+
module SDK
|
31
|
+
# Container that encapsulates the VPC API.
|
32
|
+
class Vpc < BaseVPC
|
33
|
+
# Create an API Client object for the VPC IaaS service
|
34
|
+
#
|
35
|
+
# @param region [String] the IBM Power Cloud instance region
|
36
|
+
# @param connection [IBM::Cloud::SDK::VPC::Connection] A connection object.
|
37
|
+
# @param logger [Logger] An instance of an instanciated logger.
|
38
|
+
def initialize(region, connection, logger: nil)
|
39
|
+
@region = region
|
40
|
+
@connection = connection
|
41
|
+
|
42
|
+
@logger = logger || Logger.new($stdout, level: :warn)
|
43
|
+
end
|
44
|
+
|
45
|
+
attr_reader :connection, :logger
|
46
|
+
attr_accessor :region
|
47
|
+
|
48
|
+
# The Region API endpoint.
|
49
|
+
def endpoint
|
50
|
+
"https://#{region.sub(/-\d$/, '')}.iaas.cloud.ibm.com/v1"
|
51
|
+
end
|
52
|
+
|
53
|
+
# Entry point to the Floating IPs API.
|
54
|
+
def floating_ips
|
55
|
+
VPC::FloatingIPs.new(self)
|
56
|
+
end
|
57
|
+
|
58
|
+
def flowlog_collectors
|
59
|
+
VPC::FlowLogCollectors.new(self)
|
60
|
+
end
|
61
|
+
|
62
|
+
def ike_policies
|
63
|
+
VPC::IKEPolicies.new(self)
|
64
|
+
end
|
65
|
+
|
66
|
+
def images
|
67
|
+
VPC::Images.new(self)
|
68
|
+
end
|
69
|
+
|
70
|
+
def instance_profiles
|
71
|
+
VPC::InstanceProfiles.new(self)
|
72
|
+
end
|
73
|
+
|
74
|
+
def instances
|
75
|
+
VPC::Instances.new(self)
|
76
|
+
end
|
77
|
+
|
78
|
+
def ipsec_policies
|
79
|
+
VPC::IPSecPolicies.new(self)
|
80
|
+
end
|
81
|
+
|
82
|
+
def keys
|
83
|
+
VPC::Keys.new(self)
|
84
|
+
end
|
85
|
+
|
86
|
+
def load_balancers
|
87
|
+
VPC::LoadBalancers.new(self)
|
88
|
+
end
|
89
|
+
|
90
|
+
def network_acls
|
91
|
+
VPC::NetworkACLs.new(self)
|
92
|
+
end
|
93
|
+
|
94
|
+
def operating_systems
|
95
|
+
VPC::OperatingSystems.new(self)
|
96
|
+
end
|
97
|
+
|
98
|
+
def public_gateways
|
99
|
+
VPC::PublicGateways.new(self)
|
100
|
+
end
|
101
|
+
|
102
|
+
def regions
|
103
|
+
VPC::Regions.new(self)
|
104
|
+
end
|
105
|
+
|
106
|
+
def security_groups
|
107
|
+
VPC::SecurityGroups.new(self)
|
108
|
+
end
|
109
|
+
|
110
|
+
def subnets
|
111
|
+
VPC::Subnets.new(self)
|
112
|
+
end
|
113
|
+
|
114
|
+
def volumes_profiles
|
115
|
+
VPC::VolumeProfiles.new(self)
|
116
|
+
end
|
117
|
+
|
118
|
+
def volumes
|
119
|
+
VPC::Volumes.new(self)
|
120
|
+
end
|
121
|
+
|
122
|
+
def vpcs
|
123
|
+
VPC::Vpcs.new(self)
|
124
|
+
end
|
125
|
+
|
126
|
+
def vpn_gateways
|
127
|
+
VPC::VPNGateways.new(self)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
# typed: true
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module IBM
|
5
|
+
module Cloud
|
6
|
+
module SDK
|
7
|
+
# Container that encapsulates the VPC API.
|
8
|
+
class BaseCollection < BaseVPC
|
9
|
+
# This class is used as a base for collection APIs.
|
10
|
+
# @param parent [Object] The parent instance in the API chain.
|
11
|
+
# @param endpoint [string] A path from the parent to the desired endpoint. In most cases is should be 1 word.
|
12
|
+
# @param array_key [string] The key that the API response holds the endpoint data. When nil the endpoint will be used.
|
13
|
+
# @param child_class [Object] The Object to be used when instanciating the single instance for this class.
|
14
|
+
def initialize(parent, endpoint, array_key: nil, child_class: nil)
|
15
|
+
# Setup empty base instance variables.
|
16
|
+
@params = nil
|
17
|
+
|
18
|
+
array_key ||= endpoint
|
19
|
+
|
20
|
+
# Set the array key and child class.
|
21
|
+
@array_key ||= array_key
|
22
|
+
@instance ||= child_class
|
23
|
+
|
24
|
+
super(parent, endpoint)
|
25
|
+
end
|
26
|
+
|
27
|
+
# A chainable method to set query filters on the collection.
|
28
|
+
# @example vpc.images.params(limit: 1).all
|
29
|
+
#
|
30
|
+
# @param start [String] A server-supplied token determining what resource to start the page on.
|
31
|
+
# @param limit [Integer] The number of resources to return on a page allowed values are between 1 and 100
|
32
|
+
# @param resource_group [String] Filters the collection to resources within one of the resource groups identified in a comma-separated list of resource group identifiers
|
33
|
+
# @return [BaseCollection] This class with the param instance variable set.
|
34
|
+
def params(start: nil, limit: nil, resource_group: nil)
|
35
|
+
@params = {}
|
36
|
+
@params[:start] = start if start
|
37
|
+
@params[:limit] = limit if limit
|
38
|
+
@params[:resource_group] = resource_group if resource_group
|
39
|
+
self
|
40
|
+
end
|
41
|
+
|
42
|
+
# Retrieve the collection from the cloud.
|
43
|
+
# @return [IBM::Cloud::SDK::VPC::Response] The http response object.
|
44
|
+
def fetch
|
45
|
+
@data ||= get(params: @params)
|
46
|
+
end
|
47
|
+
|
48
|
+
# Get an iterable for the resource collection.
|
49
|
+
# @return [Enumerator] Use standard each, next idioms.
|
50
|
+
def all
|
51
|
+
each_resource(url)
|
52
|
+
end
|
53
|
+
|
54
|
+
# Fetch all data and return in an array.
|
55
|
+
# @return [Array] Hashes of the returned data.
|
56
|
+
def data
|
57
|
+
all.to_a
|
58
|
+
end
|
59
|
+
|
60
|
+
# Determine if the collection has a total_count key in its response.
|
61
|
+
# @return [Boolean]
|
62
|
+
def has_count?
|
63
|
+
fetch.json&.key?(:total_count)
|
64
|
+
end
|
65
|
+
|
66
|
+
# Get the total count if it exists in the response. Returns nil otherwise.
|
67
|
+
# @return [Integer] The total count reuturned by the server.
|
68
|
+
def count
|
69
|
+
fetch.json&.fetch(:total_count)
|
70
|
+
end
|
71
|
+
|
72
|
+
# A generic post method to create a resource on the collection.
|
73
|
+
# @param payload [Hash] A hash of parameters to send to the server.
|
74
|
+
# @param payload_type [String] One of the following options json, form, or body.
|
75
|
+
# @return [IBM::Cloud::SDK::VPC::Response] The http response object.
|
76
|
+
def create(payload, payload_type = 'json')
|
77
|
+
adhoc(method: 'post', payload_type: payload_type, payload: payload)
|
78
|
+
end
|
79
|
+
|
80
|
+
# Access a specific instance by either id or name depending on API.
|
81
|
+
def instance(id)
|
82
|
+
@instance.new(self, id)
|
83
|
+
end
|
84
|
+
|
85
|
+
private
|
86
|
+
|
87
|
+
# Create a generator that removes the need for pagination.
|
88
|
+
def each_resource(url, &block)
|
89
|
+
return enum_for(:each_resource, url) unless block_given?
|
90
|
+
return unless url
|
91
|
+
|
92
|
+
response = @connection.adhoc('get', url, metadata(@params)).json
|
93
|
+
resources = response.fetch(@array_key.to_sym)
|
94
|
+
|
95
|
+
resources&.each do |value|
|
96
|
+
yield value
|
97
|
+
end
|
98
|
+
return unless response.key?(:next)
|
99
|
+
|
100
|
+
next_url = response.dig(:next, :href)
|
101
|
+
return unless next_url
|
102
|
+
|
103
|
+
each_resource(next_url, &block)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|