Sha256: 54ae91c614e81d61fb7ed26a773ea66420af9d0547fb5148f29054e6e760453e

Contents?: true

Size: 1.8 KB

Versions: 4

Compression:

Stored size: 1.8 KB

Contents

module Soaspec
  # Accessors specific to REST handler
  module RestAccessors

    # Defines method 'base_url_value' containing base URL used in REST requests
    # @param [String] url Base Url to use in REST requests. Suburl is appended to this
    def base_url(url)
      define_method('base_url_value') do
        url
      end
    end

    # Will create access_token method based on passed parameters
    # @param [Hash] params Params client_id: nil, client_secret: nil, token_url: nil, username: nil, password: nil, security_token: nil
    def oauth2(params)
      # Method to send request to get oauth token based on parameters
      define_method('oauth_response') do
        OAuth2.new(params, api_username).response
      end

      define_method('access_token') do
        oauth_response['access_token']
      end

      define_method('instance_url') do
        oauth_response['instance_url']
      end
    end

    # Pass path to YAML file containing OAuth2 parameters
    # @param [String] path_to_filename Will have Soaspec.credentials_folder appended to it if set
    def oauth2_file(path_to_filename)
      full_path = Soaspec.credentials_folder ? File.join(Soaspec.credentials_folder, path_to_filename) : path_to_filename
      full_path += '.yml' unless full_path.end_with?('.yml')
      file_hash = YAML.load_file(full_path)
      raise 'File at ' + full_path + ' is not a hash ' unless file_hash.is_a? Hash
      oauth_hash = file_hash.transform_keys_to_symbols
      oauth2 **oauth_hash
    end

    # @param [Hash] headers Hash of REST headers used in RestClient
    def headers(headers)
      define_method('rest_client_headers') do
        headers
      end
    end

    # Convert each key from snake_case to PascalCase
    def pascal_keys(set)
      define_method('pascal_keys?') do
        set
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
soaspec-0.1.10 lib/soaspec/exchange_handlers/rest_accessors.rb
soaspec-0.1.9 lib/soaspec/exchange_handlers/rest_accessors.rb
soaspec-0.1.8 lib/soaspec/exchange_handlers/rest_accessors.rb
soaspec-0.1.7 lib/soaspec/exchange_handlers/rest_accessors.rb