Class: ERPC::CloudCatalogClient
- Inherits:
-
Object
- Object
- ERPC::CloudCatalogClient
- Defined in:
- lib/erpc_sdk/rest.rb
Constant Summary collapse
- RESOURCE_KINDS =
%w[bare-metal solana-grpc solana-shredstream vps].freeze
- RESOURCE_MODES =
%w[dedicated direct shared].freeze
Instance Method Summary collapse
-
#initialize(transport) ⇒ CloudCatalogClient
constructor
A new instance of CloudCatalogClient.
- #list ⇒ Object
Constructor Details
#initialize(transport) ⇒ CloudCatalogClient
Returns a new instance of CloudCatalogClient.
244 245 246 |
# File 'lib/erpc_sdk/rest.rb', line 244 def initialize(transport) @transport = transport end |
Instance Method Details
#list ⇒ Object
248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 |
# File 'lib/erpc_sdk/rest.rb', line 248 def list envelope = Validation.mapping(@transport.get("/v4/cloud/catalog")) = Validation.mapping(envelope["message"]) offerings = ["offerings"] raise InvalidResponseError unless envelope["success"] == true && offerings.is_a?(Array) offerings.each do |raw| item = Validation.mapping(raw) %w[id name description].each { |field| Validation.string(item[field]) } raise InvalidResponseError unless RESOURCE_KINDS.include?(item["kind"]) raise InvalidResponseError if item["mode"] && !RESOURCE_MODES.include?(item["mode"]) %w[regions capabilities].each do |field| array = item[field] raise InvalidResponseError unless array.is_a?(Array) && array.all? { |entry| entry.is_a?(String) } end end offerings rescue InvalidResponseError raise InvalidResponseError, "ERPC returned an invalid Cloud catalog" end |