Sha256: 7d3863fdff67614156d9866ae08853cd6038e9ca9e326b6233984311a0670f73

Contents?: true

Size: 1.39 KB

Versions: 3

Compression:

Stored size: 1.39 KB

Contents

module LinkedIn
  module Configuration
    module ClassConfiguration
      def default_config
        {
          request_format: :json,

          app_key: nil,
          app_secret: nil,
          access_token: nil,

          scope: ['r_basicprofile'],
          redirect_uri: 'http://localhost',

          logger: Logger.new('/dev/null')
        }
      end

      def configuration
        @configuration ||= OpenStruct.new default_config
      end

      def reset
        configuration.marshal_load default_config
      end
    end

    module InstanceConfiguration
      def configuration
        @configuration ||= self.class.configuration.dup
      end

      def reset
        @configuration.marshal_load self.class.configuration
      end
    end

    module BaseConfiguration
      def configure(config={}, &block)
        self.configuration.marshal_load self.configuration.marshal_dump.merge(config)

        yield self.configuration if block_given?

        self.configuration
      end

      def load(file_path = 'linkedin.yml')
        config = YAML::load(File.open(file_path)).symbolize_keys
        configure config
      end

      def config(*keys)
        configuration.marshal_dump.slice(*keys)
      end
    end

    include BaseConfiguration
    include InstanceConfiguration

    def self.included(klass)
      klass.extend BaseConfiguration
      klass.extend ClassConfiguration
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
linkedin2-0.0.19 lib/linkedin/configuration.rb
linkedin2-0.0.18 lib/linkedin/configuration.rb
linkedin2-0.0.17 lib/linkedin/configuration.rb