Sha256: 965b9213a8bfbcf31d4863df4d65e935d239c6b918f48e60fb1258c10e0833e9
Contents?: true
Size: 1.35 KB
Versions: 3
Compression:
Stored size: 1.35 KB
Contents
require 's3' require 'uri' # Glitter servers currently work with Amazon S3 buckets. They contain multiple channels which # contain multiple releases of software. module Glitter class Server attr_reader :access_key_id, :secret_access_key, :bucket_name, :timeout DEFAULT_S3_TIMEOUT = 60 def initialize(access_key_id = ENV['AWS_ACCESS_KEY_ID'], secret_access_key = ENV['AWS_SECRET_ACCESS_KEY'], bucket_name = ENV['AWS_BUCKET_NAME'], timeout: DEFAULT_S3_TIMEOUT) @access_key_id = access_key_id @secret_access_key = secret_access_key @bucket_name = bucket_name @timeout = timeout end def channel(name) channels[name] end def bucket @bucket ||= s3.buckets.find bucket_name end # Iterate through the objects in S3 and return a hash of channels containing their # respective released versions. def channel_versions bucket.objects.inject Hash.new { |h,k| h[k] = Set.new } do |hash, object| channel, version, _ = Release.object_segments(object.key) hash[channel].add(version) if channel and version hash end end private def channels Hash.new { |h,k| h[k] = Channel.new(k, self) } end def s3 @s3 ||= ::S3::Service.new(access_key_id: access_key_id, secret_access_key: secret_access_key, timeout: timeout, use_ssl: true) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
glitter-2.3.0 | lib/glitter/server.rb |
glitter-2.2.1 | lib/glitter/server.rb |
glitter-2.2.0 | lib/glitter/server.rb |