Sha256: 05a03edfbe282f827f8c1e808c04b91e9bc00705eef7edcd6e274c387ad53ea0

Contents?: true

Size: 1.47 KB

Versions: 4

Compression:

Stored size: 1.47 KB

Contents

module Progstr
  module Filer
    class << self
      attr_accessor :host, :port, :path_prefix, :session_timeout
      attr_writer :access_key, :secret_key

      def access_key
        @access_key || ENV['PROGSTR_FILER_ACCESS_KEY']
      end

      def secret_key
        @secret_key || ENV['PROGSTR_FILER_SECRET_KEY']
      end

      def host
        @host ||= "filer-api.progstr.com"
      end
      def port
        @port || 80
      end
      def path_prefix
        @path_prefix ||= '/'
      end
      def session_timeout
        @http_read_timeout ||= 30 * 60 # 30 minutes
      end

      def generate_auth_token
        expiration = expiration_time
        to_sign = "#{access_key}-#{expiration}-#{secret_key}"
        signature = Digest::SHA1.hexdigest(to_sign)
        "#{access_key}-#{expiration}-#{signature}"
      end

      def generate_file_auth_token(file_id)
        expiration = expiration_time
        to_sign = "#{access_key}-#{file_id}-#{expiration}-#{secret_key}"
        signature = Digest::SHA1.hexdigest(to_sign)
        "#{access_key}-#{expiration}-#{signature}"
      end

      def url_prefix
        prefix = "http://#{Progstr::Filer.host}:#{Progstr::Filer.port}#{Progstr::Filer.path_prefix}"
        if prefix.end_with? "/"
          prefix
        else
          prefix + "/"
        end
      end

      private
      def expiration_time
        seconds = (Time.now + session_timeout).to_i
        millis = seconds * 1000
        millis
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
progstr-filer-0.8.7 lib/filer/config.rb
progstr-filer-0.8.6 lib/filer/config.rb
progstr-filer-0.8.5 lib/filer/config.rb
progstr-filer-0.8.4 lib/filer/config.rb