=begin
#Pulp 3 API

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

The version of the OpenAPI document: v3

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

=end

require 'cgi'

module PulpPythonClient
  class DistributionsPypiApi
    attr_accessor :api_client

    def initialize(api_client = ApiClient.default)
      @api_client = api_client
    end
    # Create a python distribution
    # Trigger an asynchronous create task
    # @param data [PythonPythonDistribution] 
    # @param [Hash] opts the optional parameters
    # @return [AsyncOperationResponse]
    def create(data, opts = {})
      data, _status_code, _headers = create_with_http_info(data, opts)
      data
    end

    # Create a python distribution
    # Trigger an asynchronous create task
    # @param data [PythonPythonDistribution] 
    # @param [Hash] opts the optional parameters
    # @return [Array<(AsyncOperationResponse, Integer, Hash)>] AsyncOperationResponse data, response status code and response headers
    def create_with_http_info(data, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: DistributionsPypiApi.create ...'
      end
      # verify the required parameter 'data' is set
      if @api_client.config.client_side_validation && data.nil?
        fail ArgumentError, "Missing the required parameter 'data' when calling DistributionsPypiApi.create"
      end
      # resource path
      local_var_path = '/pulp/api/v3/distributions/python/pypi/'

      # 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'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])

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

      # http body (model)
      post_body = opts[:body] || @api_client.object_to_http_body(data) 

      # return_type
      return_type = opts[:return_type] || 'AsyncOperationResponse' 

      # auth_names
      auth_names = opts[:auth_names] || ['Basic']

      new_options = opts.merge(
        :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(:POST, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: DistributionsPypiApi#create\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete a python distribution
    # Trigger an asynchronous delete task
    # @param python_distribution_href [String] URI of Python Distribution. e.g.: /pulp/api/v3/distributions/python/pypi/1/
    # @param [Hash] opts the optional parameters
    # @return [AsyncOperationResponse]
    def delete(python_distribution_href, opts = {})
      data, _status_code, _headers = delete_with_http_info(python_distribution_href, opts)
      data
    end

    # Delete a python distribution
    # Trigger an asynchronous delete task
    # @param python_distribution_href [String] URI of Python Distribution. e.g.: /pulp/api/v3/distributions/python/pypi/1/
    # @param [Hash] opts the optional parameters
    # @return [Array<(AsyncOperationResponse, Integer, Hash)>] AsyncOperationResponse data, response status code and response headers
    def delete_with_http_info(python_distribution_href, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: DistributionsPypiApi.delete ...'
      end
      # verify the required parameter 'python_distribution_href' is set
      if @api_client.config.client_side_validation && python_distribution_href.nil?
        fail ArgumentError, "Missing the required parameter 'python_distribution_href' when calling DistributionsPypiApi.delete"
      end
      # resource path
      local_var_path = '{python_distribution_href}'.sub('{' + 'python_distribution_href' + '}', CGI.escape(python_distribution_href.to_s).gsub('%2F', '/'))

      # 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[:body] 

      # return_type
      return_type = opts[:return_type] || 'AsyncOperationResponse' 

      # auth_names
      auth_names = opts[:auth_names] || ['Basic']

      new_options = opts.merge(
        :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(:DELETE, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: DistributionsPypiApi#delete\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # List python distributions
    #  Pulp Python Distributions are used to distribute Python Publications.  Pulp Python Distributions should not be confused with \"Python Distribution\" as defined by the Python community. In Pulp usage, Python content is refered to as Python Package Content.
    # @param [Hash] opts the optional parameters
    # @option opts [String] :ordering Which field to use when ordering the results.
    # @option opts [String] :name 
    # @option opts [String] :name__in Filter results where name is in a comma-separated list of values
    # @option opts [String] :base_path 
    # @option opts [String] :base_path__contains Filter results where base_path contains value
    # @option opts [String] :base_path__icontains Filter results where base_path contains value
    # @option opts [String] :base_path__in Filter results where base_path is in a comma-separated list of values
    # @option opts [Integer] :limit Number of results to return per page.
    # @option opts [Integer] :offset The initial index from which to return the results.
    # @option opts [String] :fields A list of fields to include in the response.
    # @option opts [String] :exclude_fields A list of fields to exclude from the response.
    # @return [InlineResponse2001]
    def list(opts = {})
      data, _status_code, _headers = list_with_http_info(opts)
      data
    end

    # List python distributions
    #  Pulp Python Distributions are used to distribute Python Publications.  Pulp Python Distributions should not be confused with \&quot;Python Distribution\&quot; as defined by the Python community. In Pulp usage, Python content is refered to as Python Package Content.
    # @param [Hash] opts the optional parameters
    # @option opts [String] :ordering Which field to use when ordering the results.
    # @option opts [String] :name 
    # @option opts [String] :name__in Filter results where name is in a comma-separated list of values
    # @option opts [String] :base_path 
    # @option opts [String] :base_path__contains Filter results where base_path contains value
    # @option opts [String] :base_path__icontains Filter results where base_path contains value
    # @option opts [String] :base_path__in Filter results where base_path is in a comma-separated list of values
    # @option opts [Integer] :limit Number of results to return per page.
    # @option opts [Integer] :offset The initial index from which to return the results.
    # @option opts [String] :fields A list of fields to include in the response.
    # @option opts [String] :exclude_fields A list of fields to exclude from the response.
    # @return [Array<(InlineResponse2001, Integer, Hash)>] InlineResponse2001 data, response status code and response headers
    def list_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: DistributionsPypiApi.list ...'
      end
      # resource path
      local_var_path = '/pulp/api/v3/distributions/python/pypi/'

      # query parameters
      query_params = opts[:query_params] || {}
      query_params[:'ordering'] = opts[:'ordering'] if !opts[:'ordering'].nil?
      query_params[:'name'] = opts[:'name'] if !opts[:'name'].nil?
      query_params[:'name__in'] = opts[:'name__in'] if !opts[:'name__in'].nil?
      query_params[:'base_path'] = opts[:'base_path'] if !opts[:'base_path'].nil?
      query_params[:'base_path__contains'] = opts[:'base_path__contains'] if !opts[:'base_path__contains'].nil?
      query_params[:'base_path__icontains'] = opts[:'base_path__icontains'] if !opts[:'base_path__icontains'].nil?
      query_params[:'base_path__in'] = opts[:'base_path__in'] if !opts[:'base_path__in'].nil?
      query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
      query_params[:'offset'] = opts[:'offset'] if !opts[:'offset'].nil?
      query_params[:'fields'] = opts[:'fields'] if !opts[:'fields'].nil?
      query_params[:'exclude_fields'] = opts[:'exclude_fields'] if !opts[:'exclude_fields'].nil?

      # 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[:body] 

      # return_type
      return_type = opts[:return_type] || 'InlineResponse2001' 

      # auth_names
      auth_names = opts[:auth_names] || ['Basic']

      new_options = opts.merge(
        :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: DistributionsPypiApi#list\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Partially update a python distribution
    # Trigger an asynchronous partial update task
    # @param python_distribution_href [String] URI of Python Distribution. e.g.: /pulp/api/v3/distributions/python/pypi/1/
    # @param data [PythonPythonDistribution] 
    # @param [Hash] opts the optional parameters
    # @return [AsyncOperationResponse]
    def partial_update(python_distribution_href, data, opts = {})
      data, _status_code, _headers = partial_update_with_http_info(python_distribution_href, data, opts)
      data
    end

    # Partially update a python distribution
    # Trigger an asynchronous partial update task
    # @param python_distribution_href [String] URI of Python Distribution. e.g.: /pulp/api/v3/distributions/python/pypi/1/
    # @param data [PythonPythonDistribution] 
    # @param [Hash] opts the optional parameters
    # @return [Array<(AsyncOperationResponse, Integer, Hash)>] AsyncOperationResponse data, response status code and response headers
    def partial_update_with_http_info(python_distribution_href, data, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: DistributionsPypiApi.partial_update ...'
      end
      # verify the required parameter 'python_distribution_href' is set
      if @api_client.config.client_side_validation && python_distribution_href.nil?
        fail ArgumentError, "Missing the required parameter 'python_distribution_href' when calling DistributionsPypiApi.partial_update"
      end
      # verify the required parameter 'data' is set
      if @api_client.config.client_side_validation && data.nil?
        fail ArgumentError, "Missing the required parameter 'data' when calling DistributionsPypiApi.partial_update"
      end
      # resource path
      local_var_path = '{python_distribution_href}'.sub('{' + 'python_distribution_href' + '}', CGI.escape(python_distribution_href.to_s).gsub('%2F', '/'))

      # 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'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])

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

      # http body (model)
      post_body = opts[:body] || @api_client.object_to_http_body(data) 

      # return_type
      return_type = opts[:return_type] || 'AsyncOperationResponse' 

      # auth_names
      auth_names = opts[:auth_names] || ['Basic']

      new_options = opts.merge(
        :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(:PATCH, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: DistributionsPypiApi#partial_update\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Inspect a python distribution
    #  Pulp Python Distributions are used to distribute Python Publications.  Pulp Python Distributions should not be confused with \"Python Distribution\" as defined by the Python community. In Pulp usage, Python content is refered to as Python Package Content.
    # @param python_distribution_href [String] URI of Python Distribution. e.g.: /pulp/api/v3/distributions/python/pypi/1/
    # @param [Hash] opts the optional parameters
    # @option opts [String] :fields A list of fields to include in the response.
    # @option opts [String] :exclude_fields A list of fields to exclude from the response.
    # @return [PythonPythonDistributionRead]
    def read(python_distribution_href, opts = {})
      data, _status_code, _headers = read_with_http_info(python_distribution_href, opts)
      data
    end

    # Inspect a python distribution
    #  Pulp Python Distributions are used to distribute Python Publications.  Pulp Python Distributions should not be confused with \&quot;Python Distribution\&quot; as defined by the Python community. In Pulp usage, Python content is refered to as Python Package Content.
    # @param python_distribution_href [String] URI of Python Distribution. e.g.: /pulp/api/v3/distributions/python/pypi/1/
    # @param [Hash] opts the optional parameters
    # @option opts [String] :fields A list of fields to include in the response.
    # @option opts [String] :exclude_fields A list of fields to exclude from the response.
    # @return [Array<(PythonPythonDistributionRead, Integer, Hash)>] PythonPythonDistributionRead data, response status code and response headers
    def read_with_http_info(python_distribution_href, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: DistributionsPypiApi.read ...'
      end
      # verify the required parameter 'python_distribution_href' is set
      if @api_client.config.client_side_validation && python_distribution_href.nil?
        fail ArgumentError, "Missing the required parameter 'python_distribution_href' when calling DistributionsPypiApi.read"
      end
      # resource path
      local_var_path = '{python_distribution_href}'.sub('{' + 'python_distribution_href' + '}', CGI.escape(python_distribution_href.to_s).gsub('%2F', '/'))

      # query parameters
      query_params = opts[:query_params] || {}
      query_params[:'fields'] = opts[:'fields'] if !opts[:'fields'].nil?
      query_params[:'exclude_fields'] = opts[:'exclude_fields'] if !opts[:'exclude_fields'].nil?

      # 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[:body] 

      # return_type
      return_type = opts[:return_type] || 'PythonPythonDistributionRead' 

      # auth_names
      auth_names = opts[:auth_names] || ['Basic']

      new_options = opts.merge(
        :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: DistributionsPypiApi#read\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Update a python distribution
    # Trigger an asynchronous update task
    # @param python_distribution_href [String] URI of Python Distribution. e.g.: /pulp/api/v3/distributions/python/pypi/1/
    # @param data [PythonPythonDistribution] 
    # @param [Hash] opts the optional parameters
    # @return [AsyncOperationResponse]
    def update(python_distribution_href, data, opts = {})
      data, _status_code, _headers = update_with_http_info(python_distribution_href, data, opts)
      data
    end

    # Update a python distribution
    # Trigger an asynchronous update task
    # @param python_distribution_href [String] URI of Python Distribution. e.g.: /pulp/api/v3/distributions/python/pypi/1/
    # @param data [PythonPythonDistribution] 
    # @param [Hash] opts the optional parameters
    # @return [Array<(AsyncOperationResponse, Integer, Hash)>] AsyncOperationResponse data, response status code and response headers
    def update_with_http_info(python_distribution_href, data, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: DistributionsPypiApi.update ...'
      end
      # verify the required parameter 'python_distribution_href' is set
      if @api_client.config.client_side_validation && python_distribution_href.nil?
        fail ArgumentError, "Missing the required parameter 'python_distribution_href' when calling DistributionsPypiApi.update"
      end
      # verify the required parameter 'data' is set
      if @api_client.config.client_side_validation && data.nil?
        fail ArgumentError, "Missing the required parameter 'data' when calling DistributionsPypiApi.update"
      end
      # resource path
      local_var_path = '{python_distribution_href}'.sub('{' + 'python_distribution_href' + '}', CGI.escape(python_distribution_href.to_s).gsub('%2F', '/'))

      # 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'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])

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

      # http body (model)
      post_body = opts[:body] || @api_client.object_to_http_body(data) 

      # return_type
      return_type = opts[:return_type] || 'AsyncOperationResponse' 

      # auth_names
      auth_names = opts[:auth_names] || ['Basic']

      new_options = opts.merge(
        :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(:PUT, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: DistributionsPypiApi#update\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
  end
end