Sha256: 375cbed7b1c9de5ab35da54a1700de764aec0fbd45b007401679a8fae97f7b6d

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

module DingBot
  # Defines constants and methods related to configuration.
  module Configuration
    # An array of valid keys in the options hash when configuring a DingBot::API.
    VALID_OPTIONS_KEYS = [:endpoint, :access_token, :httparty, :secret].freeze

    # The user agent that will be sent to the API endpoint if none is set.
    DEFAULT_USER_AGENT = "DingBot Ruby Gem #{DingBot::VERSION}".freeze

    DEFAULT_ENDPOINT = "https://oapi.dingtalk.com/robot/send"

    # @private
    attr_accessor(*VALID_OPTIONS_KEYS)

    # Sets all configuration options to their default values
    # when this module is extended.
    def self.extended(base)
      base.reset
    end

    # Convenience method to allow configuration options to be set in a block.
    def configure
      yield self
    end

    # Creates a hash of options and their values.
    def options
      VALID_OPTIONS_KEYS.inject({}) do |option, key|
        option.merge!(key => send(key))
      end
    end

    # Resets all configuration options to the defaults.
    def reset
      self.endpoint = ENV['DINGTALK_ENDPOINT'] || DEFAULT_ENDPOINT
      self.access_token = ENV['DINGTALK_ACCESS_TOKEN']
      self.secret = ENV['DINGTALK_SECRET']
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dingbot-0.2.5 lib/dingbot/configuration.rb