=begin
#Auth Oauth

#No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)

The version of the OpenAPI document: v1

Generated by: https://openapi-generator.tech
OpenAPI Generator version: 6.2.1

=end

require 'cgi'

module Hubspot
  module Oauth
    class AccessTokensApi
      attr_accessor :api_client

      def initialize(api_client = ApiClient.default)
        @api_client = api_client
      end
      # Retrieve OAuth token metadata
      # Retrieve a token's metadata, including the email address of the user that the token was created for and the ID of the account it's associated with.  Note: HubSpot access tokens will fluctuate in size as the information that's encoded in them changes over time. It's recommended to allow for tokens to be up to 300 characters to account for any potential changes.
      # @param token [String] The access token that you want to retrieve information about.
      # @param [Hash] opts the optional parameters
      # @return [AccessTokenInfoResponse]
      def get(token, opts = {})
        data, _status_code, _headers = get_with_http_info(token, opts)
        data
      end

      # Retrieve OAuth token metadata
      # Retrieve a token&#39;s metadata, including the email address of the user that the token was created for and the ID of the account it&#39;s associated with.  Note: HubSpot access tokens will fluctuate in size as the information that&#39;s encoded in them changes over time. It&#39;s recommended to allow for tokens to be up to 300 characters to account for any potential changes.
      # @param token [String] The access token that you want to retrieve information about.
      # @param [Hash] opts the optional parameters
      # @return [Array<(AccessTokenInfoResponse, Integer, Hash)>] AccessTokenInfoResponse data, response status code and response headers
      def get_with_http_info(token, opts = {})
        if @api_client.config.debugging
          @api_client.config.logger.debug 'Calling API: AccessTokensApi.get ...'
        end
        # verify the required parameter 'token' is set
        if @api_client.config.client_side_validation && token.nil?
          fail ArgumentError, "Missing the required parameter 'token' when calling AccessTokensApi.get"
        end
        # resource path
        local_var_path = '/oauth/v1/access-tokens/{token}'.sub('{' + 'token' + '}', CGI.escape(token.to_s))

        # query parameters
        query_params = opts[:query_params] || {}

        # header parameters
        header_params = opts[:header_params] || {}
        # HTTP header 'Accept' (if needed)
        header_params['Accept'] = @api_client.select_header_accept(['application/json', '*/*'])

        # form parameters
        form_params = opts[:form_params] || {}

        # http body (model)
        post_body = opts[:debug_body]

        # return_type
        return_type = opts[:debug_return_type] || 'AccessTokenInfoResponse'

        # auth_names
        auth_names = opts[:debug_auth_names] || []

        new_options = opts.merge(
          :operation => :"AccessTokensApi.get",
          :header_params => header_params,
          :query_params => query_params,
          :form_params => form_params,
          :body => post_body,
          :auth_names => auth_names,
          :return_type => return_type
        )

        data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
        if @api_client.config.debugging
          @api_client.config.logger.debug "API called: AccessTokensApi#get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
        end
        return data, status_code, headers
      end
    end
  end
end
