Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updating 4.x client to expect query string params as ['params'] #619

Merged
merged 1 commit into from Jul 29, 2020

Conversation

douglasmiller
Copy link
Contributor

This is an update for the 4.x version of the client.

This updates how optional parameters are specified in operations. In the 3.x version of the client, optional parameters were specified an optional keyword arguments directly on each operation. This 4.x update moves these parameters into a hash whose key, :params is an optional keyword argument on the operation.

This is to facilitate additional options that may be passed into each operation (e.g. :headers for custom headers).

The ability to specify custom headers was added to the 3.x clients in #597, though this solution is not very future flexible.

Existing 3.x code sample:

options = {
  limit: 200,
  headers: {
    'Accept-Language' => 'fr'
  }
}
accounts = @client.list_accounts(options)

Updated 4.x code sample:

options = {
  params: {
      limit: 200
  }
  headers: {
    'Accept-Language' => 'fr'
  }
}
accounts = @client.list_accounts(options)

@douglasmiller douglasmiller requested a review from bhelx July 28, 2020 20:13
@bhelx bhelx merged commit 35d2aab into v3-v2020-01-01 Jul 29, 2020
@joannasese joannasese added the V4 v2021-02-25 Client label Feb 11, 2021
douglasmiller added a commit that referenced this pull request Mar 1, 2021
# Changelog

## [Unreleased](https://github.com/recurly/recurly-client-ruby/tree/HEAD)

[Full Changelog](3.18.1...HEAD)

**Implemented enhancements:**

- Remove site\_id and subdomain from client initializer [\#624](#624) ([joannasese](https://github.com/joannasese))

**Fixed bugs:**

- Every method is returning wrong number of arguments [\#664](#664)

**Merged pull requests:**

- Updating changelog script and changelog generator config for 4.x release [\#663](#663) ([douglasmiller](https://github.com/douglasmiller))
- Removing unused method 'set\_site\_id' [\#627](#627) ([douglasmiller](https://github.com/douglasmiller))
- Updating 4.x client to expect query string params as \['params'\] [\#619](#619) ([douglasmiller](https://github.com/douglasmiller))
- Updating error mapping based on status code [\#616](#616) ([douglasmiller](https://github.com/douglasmiller))
@douglasmiller douglasmiller mentioned this pull request Mar 1, 2021
douglasmiller added a commit that referenced this pull request Mar 1, 2021
# Changelog

## [Unreleased](https://github.com/recurly/recurly-client-ruby/tree/HEAD)

[Full Changelog](3.18.1...HEAD)

## Breaking Changes

- Remove `site_id` and `subdomain` from client initializer.  [#624]
- Remove `set_site_id` method from client.  [#627]
- Classify unexpected error responses from Recurly API via an HTTP status code mapping provided in `Recurly::Errors::ERROR_MAP`.  [#616]
- Remove `NetworkError` class. All error classes now extend the `APIError`. This means that the order of multiple rescue blocks will need to be re-considered.  [#616]

    ### 3.x

    ```ruby
    rescue Recurly::Errors::ValidationError => ex
      # catch a validation error
    rescue Recurly::Errors::APIError => ex
      # catch a generic api error
    rescue Recurly::Errors::TimeoutError => ex
      # catch a specific network error
    ```

    ### 4.x

    ```ruby
    rescue Recurly::Errors::ValidationError => ex
      # catch a validation error
    rescue Recurly::Errors::TimeoutError => ex
      # catch a specific network error
    rescue Recurly::Errors::APIError => ex
      # catch a generic api error
    ```

- Rename `InvalidResponseError` to `InvalidContentTypeError`.  [#616]
- Rename `UnavailableError` to `ServiceUnavailableError`.  [#616]
- Reorganize top-level keys of the optional parameters hash to improve clarity and create space for additional options.  [#619]

    ### 3.x

    ```ruby
    options = {
      limit: 200,
      headers: {
        'Accept-Language' => 'fr'
      }
    }
    accounts = @client.list_accounts(options)
    ```

    ### 4.x

    ```ruby
    options = {
      params: {
          limit: 200
      }
      headers: {
        'Accept-Language' => 'fr'
      }
    }
    accounts = @client.list_accounts(options)
    ```

**Implemented enhancements:**

- Remove site\_id and subdomain from client initializer [\#624](#624) ([joannasese](https://github.com/joannasese))

**Fixed bugs:**

- Every method is returning wrong number of arguments [\#664](#664)

**Merged pull requests:**

- Updating changelog script and changelog generator config for 4.x release [\#663](#663) ([douglasmiller](https://github.com/douglasmiller))
- Removing unused method 'set\_site\_id' [\#627](#627) ([douglasmiller](https://github.com/douglasmiller))
- Updating 4.x client to expect query string params as \['params'\] [\#619](#619) ([douglasmiller](https://github.com/douglasmiller))
- Updating error mapping based on status code [\#616](#616) ([douglasmiller](https://github.com/douglasmiller))
@douglasmiller douglasmiller mentioned this pull request Mar 1, 2021
douglasmiller added a commit that referenced this pull request Mar 19, 2021
# Changelog

## [Unreleased](https://github.com/recurly/recurly-client-ruby/tree/HEAD)

[Full Changelog](3.18.1...HEAD)

# Major Version Release

The 4.x major version of the client pairs with the `v2021-02-25` API version. This version of the client and the API contain breaking changes that should be considered before upgrading your integration.

## Breaking Changes in the API
All changes to the core API are documented in the [Developer Portal changelog](https://developers.recurly.com/api/changelog.html#v2021-02-25---current-ga-version)

## Breaking Changes in Client

- Remove `site_id` and `subdomain` from client initializer.  [#624]
- Remove `set_site_id` method from client.  [#627]
- Classify unexpected error responses from Recurly API via an HTTP status code mapping provided in `Recurly::Errors::ERROR_MAP`.  [#616]
- Remove `NetworkError` class. All error classes now extend the `APIError`. This means that the order of multiple rescue blocks will need to be re-considered.  [#616]

    ### 3.x

    ```ruby
    rescue Recurly::Errors::ValidationError => ex
      # catch a validation error
    rescue Recurly::Errors::APIError => ex
      # catch a generic api error
    rescue Recurly::Errors::TimeoutError => ex
      # catch a specific network error
    ```

    ### 4.x

    ```ruby
    rescue Recurly::Errors::ValidationError => ex
      # catch a validation error
    rescue Recurly::Errors::TimeoutError => ex
      # catch a specific network error
    rescue Recurly::Errors::APIError => ex
      # catch a generic api error
    ```

- Rename `InvalidResponseError` to `InvalidContentTypeError`.  [#616]
- Rename `UnavailableError` to `ServiceUnavailableError`.  [#616]
- Reorganize top-level keys of the optional parameters hash to improve clarity and create space for additional options.  [#619]

    ### 3.x

    ```ruby
    options = {
      limit: 200,
      headers: {
        'Accept-Language' => 'fr'
      }
    }
    accounts = @client.list_accounts(options)
    ```

    ### 4.x

    ```ruby
    options = {
      params: {
          limit: 200
      }
      headers: {
        'Accept-Language' => 'fr'
      }
    }
    accounts = @client.list_accounts(options)
    ```

**Implemented enhancements:**

- Remove site\_id and subdomain from client initializer [\#624](#624) ([joannasese](https://github.com/joannasese))

**Fixed bugs:**

- Every method is returning wrong number of arguments [\#664](#664)

**Merged pull requests:**

- Sync updates not ported from 3.x client [\#671](#671) ([douglasmiller](https://github.com/douglasmiller))
- Release 4.0.0 [\#669](#669) ([douglasmiller](https://github.com/douglasmiller))
- Updating changelog script and changelog generator config for 4.x release [\#663](#663) ([douglasmiller](https://github.com/douglasmiller))
- Removing unused method 'set\_site\_id' [\#627](#627) ([douglasmiller](https://github.com/douglasmiller))
- Updating 4.x client to expect query string params as \['params'\] [\#619](#619) ([douglasmiller](https://github.com/douglasmiller))
- Updating error mapping based on status code [\#616](#616) ([douglasmiller](https://github.com/douglasmiller))
@douglasmiller douglasmiller mentioned this pull request Mar 19, 2021
@douglasmiller douglasmiller deleted the options-params branch September 1, 2022 21:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
V4 v2021-02-25 Client
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants