# -------------------------------------------------------------------------------------------------------------------- # # Copyright (c) 2018 Aspose.Storage for Cloud # # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. # # -------------------------------------------------------------------------------------------------------------------- require 'uri' module AsposeStorageCloud # # Class for storing API configuration info # class Configuration # Defines v1 api version V1_API_VERSION = '/v1' # Defines v2 api version V2_API_VERSION = '/v2' # Defines v3 api version V3_API_VERSION = '/v3' # Defines v1.1 api version V1_1_API_VERSION = '/v1.1' # Defines url scheme attr_accessor :scheme # Defines url host attr_accessor :host # Defines url api version attr_accessor :api_version # Defines API keys used with API Key authentications. # # @return [Hash] key: parameter name, value: parameter value (API key) # # @example parameter name is "api_key", API key is "xxx" (e.g. "api_key=xxx" in query string) # config.api_key['api_key'] = 'xxx' attr_accessor :api_key # Defines API key prefixes used with API Key authentications. # # @return [Hash] key: parameter name, value: API key prefix # # @example parameter name is "Authorization", API key prefix is "Token" (e.g. "Authorization: Token xxx" in headers) # config.api_key_prefix['api_key'] = 'Token' attr_accessor :api_key_prefix # Defines the username used with HTTP basic authentication. # # @return [String] attr_accessor :username # Defines the password used with HTTP basic authentication. # # @return [String] attr_accessor :password # Defines the access token (Bearer) used with OAuth2. attr_accessor :access_token # Defines the refresh token (Bearer) used with OAuth2. attr_accessor :refresh_token # Set this to enable/disable debugging. When enabled (set to true), HTTP request/response # details will be logged with `logger.debug` (see the `logger` attribute). # Default to false. # # @return [true, false] attr_accessor :debugging # Defines the logger used for debugging. # Default to `Rails.logger` (when in Rails) or logging to STDOUT. # # @return [#debug] attr_accessor :logger # Defines the temporary folder to store downloaded files # (for API endpoints that have file response). # Default to use `Tempfile`. # # @return [String] attr_accessor :temp_folder_path # Set this to false to skip client side validation in the operation. # Default to true. # @return [true, false] attr_accessor :client_side_validation def initialize @scheme = 'https' @host = 'api.aspose.cloud' @api_version = V1_API_VERSION @api_key = {} @api_key_prefix = {} @client_side_validation = true @debugging = false @logger = Logger.new(STDOUT) yield(self) if block_given? end # The default Configuration object. def self.default @@default ||= Configuration.new end # yield self def configure yield(self) if block_given? end # sets the scheme def scheme=(scheme) # remove :// from scheme @scheme = scheme.sub(/:\/\//, '') end # sets the host def host=(host) # remove http(s):// and anything after a slash @host = host.sub(/https?:\/\//, '').split('/').first end # sets the api_version def api_version=(api_version) # Add leading and trailing slashes to api_version @api_version = "/#{api_version}".gsub(/\/+/, '/') @api_version = "" if @api_version == "/" end # returns base url def base_url url = "#{scheme}://#{[host, api_version].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') URI.encode(url) end # Gets API key (with prefix if set). # @param [String] param_name the parameter name of API key auth def api_key_with_prefix(param_name) if @api_key_prefix[param_name] "#{@api_key_prefix[param_name]} #{@api_key[param_name]}" else @api_key[param_name] end end # Gets Basic Auth token string def basic_auth_token 'Basic ' + ["#{username}:#{password}"].pack('m').delete("\r\n") end # Returns Auth Settings hash for api client. def auth_settings { 'appsid' => { type: 'api_key', in: 'query', key: 'appsid', value: api_key_with_prefix('appsid') }, 'oauth' => { type: 'oauth2', in: 'header', key: 'Authorization', value: "Bearer #{access_token}" }, 'signature' => { type: 'api_key', in: 'query', key: 'signature', value: api_key_with_prefix('signature') }, } end end end