mLewisLogic/saddle

View on GitHub
lib/saddle/options.rb

Summary

Maintainability
A
0 mins
Test Coverage
# Default options for a client. Override whatever you need to for
# your specific implementation

module Saddle
  module Options

    # Construct our default options, based upon the class methods
    def default_options
      {
        :host => host,
        :port => port,
        :path_prefix => path_prefix,
        :use_ssl => use_ssl,
        :request_style => request_style,
        :num_retries => num_retries,
        :timeout => timeout,
        :extra_env => extra_env,
        :http_adapter => http_adapter,
        :stubs => stubs,
        :return_full_response => return_full_response,
        :additional_middlewares => self.additional_middlewares
      }
    end

    # The default host for this client
    def host
      'localhost'
    end

    # The default port for this client
    def port
      nil
    end

    # A string prefix to prepend to paths as they are build (ie, 'v1')
    def path_prefix
      nil
    end

    # Should this client use SSL by default?
    def use_ssl
      false
    end

    # The POST/PUT style for this client
    # options are [:json, :urlencoded]
    def request_style
      :json
    end

    # Default number of retries per request
    def num_retries
      1
    end

    # Default timeout per request (in seconds)
    def timeout
      30
    end

    # If we need to load more into env before it passes to the adapter, use this
    def extra_env
      {}
    end

    # Support specification of the HTTP adapter being used. Returns a symbol or
    # hash of the form { :key => :net_http, :args => [ ... ] }.
    def http_adapter
      { :key => :net_http, :args => [] }
    end

    # If the Typhoeus adapter is being used, pass stubs to it for testing.
    def stubs
      nil
    end

    # Should the client return the full response object, or just the body?
    def return_full_response
      false
    end

    # Use this to add additional middleware to the request stack
    # ex:
    # add_middleware({
    #   :klass => MyMiddleware,
    #   :args => [arg1, arg2],
    # })
    # end
    #
    ###
    def add_middleware m
      self.additional_middlewares << m
    end

  end
end