William Cheng c5a0374d2b
[Ruby] add useAutoload option to use autoload instead of require (#13153)
* [Ruby] Use Ruby autoload to lower memory usage and load times

Fixes #12648

Requiring all models up front can be very expensive in both time and
memory if there are many models. In an example client with 6000 models,
this would consume nearly 400MB of memory and take about 7 seconds to
load. This is mostly unnecessary as most users of the client library
will only actually use a small percentage of the library.

The changes in this commit use Ruby's autoload capability to defer the
loading until the constant is actually used. In that same example client
with 6000 models, when initially requiring the library, the memory
usage dropped to ~20MB and loaded in 0.3 seconds. As the constants are
loaded on-demand, the memory would increase towards that 400MB ceiling,
but if only a few constants are actually used, then memory will never
actually hit that ceiling.

An additional side effect of using Ruby's autoload is that the order of
declaring the constants is not important, as Ruby will naturally load
them in the correct order when they are needed. Thus, this commit obviates
PR #9103 and fixes #4690.

* add option to use autoload in ruby client

* test ruby clients only

* add tests

* update samples

* Revert "test ruby clients only"

This reverts commit 0aaf71cd4cc5d266f824b261a4d312f07bd589e5.

* update doc

Co-authored-by: Jason Frey <fryguy9@gmail.com>
2022-08-11 12:45:13 +08:00

16 KiB

Petstore::PetApi

All URIs are relative to http://petstore.swagger.io:80/v2

Method HTTP request Description
add_pet POST /pet Add a new pet to the store
delete_pet DELETE /pet/{petId} Deletes a pet
find_pets_by_status GET /pet/findByStatus Finds Pets by status
find_pets_by_tags GET /pet/findByTags Finds Pets by tags
get_pet_by_id GET /pet/{petId} Find pet by ID
update_pet PUT /pet Update an existing pet
update_pet_with_form POST /pet/{petId} Updates a pet in the store with form data
upload_file POST /pet/{petId}/uploadImage uploads an image
upload_file_with_required_file POST /fake/{petId}/uploadImageWithRequiredFile uploads an image (required)

add_pet

add_pet(pet)

Add a new pet to the store

Examples

require 'time'
require 'petstore'
# setup authorization
Petstore.configure do |config|
  # Configure OAuth2 access token for authorization: petstore_auth
  config.access_token = 'YOUR ACCESS TOKEN'
end

api_instance = Petstore::PetApi.new
pet = Petstore::Pet.new({name: 'doggie', photo_urls: ['photo_urls_example']}) # Pet | Pet object that needs to be added to the store

begin
  # Add a new pet to the store
  api_instance.add_pet(pet)
rescue Petstore::ApiError => e
  puts "Error when calling PetApi->add_pet: #{e}"
end

Using the add_pet_with_http_info variant

This returns an Array which contains the response data (nil in this case), status code and headers.

<Array(nil, Integer, Hash)> add_pet_with_http_info(pet)

begin
  # Add a new pet to the store
  data, status_code, headers = api_instance.add_pet_with_http_info(pet)
  p status_code # => 2xx
  p headers # => { ... }
  p data # => nil
rescue Petstore::ApiError => e
  puts "Error when calling PetApi->add_pet_with_http_info: #{e}"
end

Parameters

Name Type Description Notes
pet Pet Pet object that needs to be added to the store

Return type

nil (empty response body)

Authorization

petstore_auth

HTTP request headers

  • Content-Type: application/json, application/xml
  • Accept: Not defined

delete_pet

delete_pet(pet_id, opts)

Deletes a pet

Examples

require 'time'
require 'petstore'
# setup authorization
Petstore.configure do |config|
  # Configure OAuth2 access token for authorization: petstore_auth
  config.access_token = 'YOUR ACCESS TOKEN'
end

api_instance = Petstore::PetApi.new
pet_id = 789 # Integer | Pet id to delete
opts = {
  api_key: 'api_key_example' # String | 
}

begin
  # Deletes a pet
  api_instance.delete_pet(pet_id, opts)
rescue Petstore::ApiError => e
  puts "Error when calling PetApi->delete_pet: #{e}"
end

Using the delete_pet_with_http_info variant

This returns an Array which contains the response data (nil in this case), status code and headers.

<Array(nil, Integer, Hash)> delete_pet_with_http_info(pet_id, opts)

begin
  # Deletes a pet
  data, status_code, headers = api_instance.delete_pet_with_http_info(pet_id, opts)
  p status_code # => 2xx
  p headers # => { ... }
  p data # => nil
rescue Petstore::ApiError => e
  puts "Error when calling PetApi->delete_pet_with_http_info: #{e}"
end

Parameters

Name Type Description Notes
pet_id Integer Pet id to delete
api_key String [optional]

Return type

nil (empty response body)

Authorization

petstore_auth

HTTP request headers

  • Content-Type: Not defined
  • Accept: Not defined

find_pets_by_status

<Array> find_pets_by_status(status)

Finds Pets by status

Multiple status values can be provided with comma separated strings

Examples

require 'time'
require 'petstore'
# setup authorization
Petstore.configure do |config|
  # Configure OAuth2 access token for authorization: petstore_auth
  config.access_token = 'YOUR ACCESS TOKEN'
end

api_instance = Petstore::PetApi.new
status = ['available'] # Array<String> | Status values that need to be considered for filter

begin
  # Finds Pets by status
  result = api_instance.find_pets_by_status(status)
  p result
rescue Petstore::ApiError => e
  puts "Error when calling PetApi->find_pets_by_status: #{e}"
end

Using the find_pets_by_status_with_http_info variant

This returns an Array which contains the response data, status code and headers.

<Array(<Array>, Integer, Hash)> find_pets_by_status_with_http_info(status)

begin
  # Finds Pets by status
  data, status_code, headers = api_instance.find_pets_by_status_with_http_info(status)
  p status_code # => 2xx
  p headers # => { ... }
  p data # => <Array<Pet>>
rescue Petstore::ApiError => e
  puts "Error when calling PetApi->find_pets_by_status_with_http_info: #{e}"
end

Parameters

Name Type Description Notes
status Array<String> Status values that need to be considered for filter

Return type

Array<Pet>

Authorization

petstore_auth

HTTP request headers

  • Content-Type: Not defined
  • Accept: application/xml, application/json

find_pets_by_tags

<Array> find_pets_by_tags(tags)

Finds Pets by tags

Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.

Examples

require 'time'
require 'petstore'
# setup authorization
Petstore.configure do |config|
  # Configure OAuth2 access token for authorization: petstore_auth
  config.access_token = 'YOUR ACCESS TOKEN'
end

api_instance = Petstore::PetApi.new
tags = ['inner_example'] # Array<String> | Tags to filter by

begin
  # Finds Pets by tags
  result = api_instance.find_pets_by_tags(tags)
  p result
rescue Petstore::ApiError => e
  puts "Error when calling PetApi->find_pets_by_tags: #{e}"
end

Using the find_pets_by_tags_with_http_info variant

This returns an Array which contains the response data, status code and headers.

<Array(<Array>, Integer, Hash)> find_pets_by_tags_with_http_info(tags)

begin
  # Finds Pets by tags
  data, status_code, headers = api_instance.find_pets_by_tags_with_http_info(tags)
  p status_code # => 2xx
  p headers # => { ... }
  p data # => <Array<Pet>>
rescue Petstore::ApiError => e
  puts "Error when calling PetApi->find_pets_by_tags_with_http_info: #{e}"
end

Parameters

Name Type Description Notes
tags Array<String> Tags to filter by

Return type

Array<Pet>

Authorization

petstore_auth

HTTP request headers

  • Content-Type: Not defined
  • Accept: application/xml, application/json

get_pet_by_id

get_pet_by_id(pet_id)

Find pet by ID

Returns a single pet

Examples

require 'time'
require 'petstore'
# setup authorization
Petstore.configure do |config|
  # Configure API key authorization: api_key
  config.api_key['api_key'] = 'YOUR API KEY'
  # Uncomment the following line to set a prefix for the API key, e.g. 'Bearer' (defaults to nil)
  # config.api_key_prefix['api_key'] = 'Bearer'
end

api_instance = Petstore::PetApi.new
pet_id = 789 # Integer | ID of pet to return

begin
  # Find pet by ID
  result = api_instance.get_pet_by_id(pet_id)
  p result
rescue Petstore::ApiError => e
  puts "Error when calling PetApi->get_pet_by_id: #{e}"
end

Using the get_pet_by_id_with_http_info variant

This returns an Array which contains the response data, status code and headers.

<Array(, Integer, Hash)> get_pet_by_id_with_http_info(pet_id)

begin
  # Find pet by ID
  data, status_code, headers = api_instance.get_pet_by_id_with_http_info(pet_id)
  p status_code # => 2xx
  p headers # => { ... }
  p data # => <Pet>
rescue Petstore::ApiError => e
  puts "Error when calling PetApi->get_pet_by_id_with_http_info: #{e}"
end

Parameters

Name Type Description Notes
pet_id Integer ID of pet to return

Return type

Pet

Authorization

api_key

HTTP request headers

  • Content-Type: Not defined
  • Accept: application/xml, application/json

update_pet

update_pet(pet)

Update an existing pet

Examples

require 'time'
require 'petstore'
# setup authorization
Petstore.configure do |config|
  # Configure OAuth2 access token for authorization: petstore_auth
  config.access_token = 'YOUR ACCESS TOKEN'
end

api_instance = Petstore::PetApi.new
pet = Petstore::Pet.new({name: 'doggie', photo_urls: ['photo_urls_example']}) # Pet | Pet object that needs to be added to the store

begin
  # Update an existing pet
  api_instance.update_pet(pet)
rescue Petstore::ApiError => e
  puts "Error when calling PetApi->update_pet: #{e}"
end

Using the update_pet_with_http_info variant

This returns an Array which contains the response data (nil in this case), status code and headers.

<Array(nil, Integer, Hash)> update_pet_with_http_info(pet)

begin
  # Update an existing pet
  data, status_code, headers = api_instance.update_pet_with_http_info(pet)
  p status_code # => 2xx
  p headers # => { ... }
  p data # => nil
rescue Petstore::ApiError => e
  puts "Error when calling PetApi->update_pet_with_http_info: #{e}"
end

Parameters

Name Type Description Notes
pet Pet Pet object that needs to be added to the store

Return type

nil (empty response body)

Authorization

petstore_auth

HTTP request headers

  • Content-Type: application/json, application/xml
  • Accept: Not defined

update_pet_with_form

update_pet_with_form(pet_id, opts)

Updates a pet in the store with form data

Examples

require 'time'
require 'petstore'
# setup authorization
Petstore.configure do |config|
  # Configure OAuth2 access token for authorization: petstore_auth
  config.access_token = 'YOUR ACCESS TOKEN'
end

api_instance = Petstore::PetApi.new
pet_id = 789 # Integer | ID of pet that needs to be updated
opts = {
  name: 'name_example', # String | Updated name of the pet
  status: 'status_example' # String | Updated status of the pet
}

begin
  # Updates a pet in the store with form data
  api_instance.update_pet_with_form(pet_id, opts)
rescue Petstore::ApiError => e
  puts "Error when calling PetApi->update_pet_with_form: #{e}"
end

Using the update_pet_with_form_with_http_info variant

This returns an Array which contains the response data (nil in this case), status code and headers.

<Array(nil, Integer, Hash)> update_pet_with_form_with_http_info(pet_id, opts)

begin
  # Updates a pet in the store with form data
  data, status_code, headers = api_instance.update_pet_with_form_with_http_info(pet_id, opts)
  p status_code # => 2xx
  p headers # => { ... }
  p data # => nil
rescue Petstore::ApiError => e
  puts "Error when calling PetApi->update_pet_with_form_with_http_info: #{e}"
end

Parameters

Name Type Description Notes
pet_id Integer ID of pet that needs to be updated
name String Updated name of the pet [optional]
status String Updated status of the pet [optional]

Return type

nil (empty response body)

Authorization

petstore_auth

HTTP request headers

  • Content-Type: application/x-www-form-urlencoded
  • Accept: Not defined

upload_file

upload_file(pet_id, opts)

uploads an image

Examples

require 'time'
require 'petstore'
# setup authorization
Petstore.configure do |config|
  # Configure OAuth2 access token for authorization: petstore_auth
  config.access_token = 'YOUR ACCESS TOKEN'
end

api_instance = Petstore::PetApi.new
pet_id = 789 # Integer | ID of pet to update
opts = {
  additional_metadata: 'additional_metadata_example', # String | Additional data to pass to server
  file: File.new('/path/to/some/file') # File | file to upload
}

begin
  # uploads an image
  result = api_instance.upload_file(pet_id, opts)
  p result
rescue Petstore::ApiError => e
  puts "Error when calling PetApi->upload_file: #{e}"
end

Using the upload_file_with_http_info variant

This returns an Array which contains the response data, status code and headers.

<Array(, Integer, Hash)> upload_file_with_http_info(pet_id, opts)

begin
  # uploads an image
  data, status_code, headers = api_instance.upload_file_with_http_info(pet_id, opts)
  p status_code # => 2xx
  p headers # => { ... }
  p data # => <ApiResponse>
rescue Petstore::ApiError => e
  puts "Error when calling PetApi->upload_file_with_http_info: #{e}"
end

Parameters

Name Type Description Notes
pet_id Integer ID of pet to update
additional_metadata String Additional data to pass to server [optional]
file File file to upload [optional]

Return type

ApiResponse

Authorization

petstore_auth

HTTP request headers

  • Content-Type: multipart/form-data
  • Accept: application/json

upload_file_with_required_file

upload_file_with_required_file(pet_id, required_file, opts)

uploads an image (required)

Examples

require 'time'
require 'petstore'
# setup authorization
Petstore.configure do |config|
  # Configure OAuth2 access token for authorization: petstore_auth
  config.access_token = 'YOUR ACCESS TOKEN'
end

api_instance = Petstore::PetApi.new
pet_id = 789 # Integer | ID of pet to update
required_file = File.new('/path/to/some/file') # File | file to upload
opts = {
  additional_metadata: 'additional_metadata_example' # String | Additional data to pass to server
}

begin
  # uploads an image (required)
  result = api_instance.upload_file_with_required_file(pet_id, required_file, opts)
  p result
rescue Petstore::ApiError => e
  puts "Error when calling PetApi->upload_file_with_required_file: #{e}"
end

Using the upload_file_with_required_file_with_http_info variant

This returns an Array which contains the response data, status code and headers.

<Array(, Integer, Hash)> upload_file_with_required_file_with_http_info(pet_id, required_file, opts)

begin
  # uploads an image (required)
  data, status_code, headers = api_instance.upload_file_with_required_file_with_http_info(pet_id, required_file, opts)
  p status_code # => 2xx
  p headers # => { ... }
  p data # => <ApiResponse>
rescue Petstore::ApiError => e
  puts "Error when calling PetApi->upload_file_with_required_file_with_http_info: #{e}"
end

Parameters

Name Type Description Notes
pet_id Integer ID of pet to update
required_file File file to upload
additional_metadata String Additional data to pass to server [optional]

Return type

ApiResponse

Authorization

petstore_auth

HTTP request headers

  • Content-Type: multipart/form-data
  • Accept: application/json