Class: GemMirror::Source
- Inherits:
-
Object
- Object
- GemMirror::Source
- Defined in:
- lib/gem-mirror/source.rb
Overview
The Source class is used for storing information about an external source such as the name and the Gems to mirror.
Instance Attribute Summary collapse
- #gems ⇒ Array readonly
- #host ⇒ String readonly
- #name ⇒ String readonly
Instance Method Summary collapse
- #client ⇒ HTTPClient private
-
#fetch_gem(name, version) ⇒ String
Fetches the
.gemfile of a given Gem and version. -
#fetch_specification(name, version) ⇒ String
Fetches the Gem specification of a Gem.
-
#fetch_versions ⇒ String
Fetches a list of all the available Gems and their versions.
-
#gem(name, requirement = nil) ⇒ Object
Adds a new Gem to the source.
-
#http_get(url) ⇒ HTTP::Message
private
Requests the given HTTP resource.
-
#initialize(name, host, gems = []) ⇒ Source
constructor
A new instance of Source.
-
#updated(new_gems) ⇒ Source
Returns a new Source instance based on the current one.
Constructor Details
#initialize(name, host, gems = []) ⇒ Source
Returns a new instance of Source.
21 22 23 24 25 |
# File 'lib/gem-mirror/source.rb', line 21 def initialize(name, host, gems = []) @name = name.downcase.gsub(/\s+/, '_') @host = host.chomp('/') @gems = gems end |
Instance Attribute Details
#gems ⇒ Array (readonly)
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/gem-mirror/source.rb', line 13 class Source attr_reader :name, :host, :gems ## # @param [String] name # @param [String] host # @param [Array] gems # def initialize(name, host, gems = []) @name = name.downcase.gsub(/\s+/, '_') @host = host.chomp('/') @gems = gems end ## # Returns a new Source instance based on the current one. # # @param [Array] new_gems The gems to set, overwrites the current ones. # @return [Source] # def updated(new_gems) return self.class.new(name, host, new_gems) end ## # Fetches a list of all the available Gems and their versions. # # @return [String] # def fetch_versions return http_get(host + '/' + Configuration.versions_file).body end ## # Fetches the Gem specification of a Gem. # # @param [String] name # @param [String] version # @return [String] # def fetch_specification(name, version) url = host + "/quick/#{Configuration.marshal_identifier}" + "/#{name}-#{version}.gemspec.rz" return http_get(url).body end ## # Fetches the `.gem` file of a given Gem and version. # # @param [String] name # @param [String] version # @return [String] # def fetch_gem(name, version) return http_get(host + "/gems/#{name}-#{version}.gem").body end ## # Adds a new Gem to the source. # # @param [String] name # @param [String] requirement # def gem(name, requirement = nil) gems << Gem.new(name, requirement) end private ## # Requests the given HTTP resource. # # @param [String] url # @return [HTTP::Message] # def http_get(url) response = client.get(url, :follow_redirect => true) unless HTTP::Status.successful?(response.status) raise HTTPClient::BadResponseError, response.reason end return response end ## # @return [HTTPClient] # def client return @client ||= HTTPClient.new end end |
#host ⇒ String (readonly)
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/gem-mirror/source.rb', line 13 class Source attr_reader :name, :host, :gems ## # @param [String] name # @param [String] host # @param [Array] gems # def initialize(name, host, gems = []) @name = name.downcase.gsub(/\s+/, '_') @host = host.chomp('/') @gems = gems end ## # Returns a new Source instance based on the current one. # # @param [Array] new_gems The gems to set, overwrites the current ones. # @return [Source] # def updated(new_gems) return self.class.new(name, host, new_gems) end ## # Fetches a list of all the available Gems and their versions. # # @return [String] # def fetch_versions return http_get(host + '/' + Configuration.versions_file).body end ## # Fetches the Gem specification of a Gem. # # @param [String] name # @param [String] version # @return [String] # def fetch_specification(name, version) url = host + "/quick/#{Configuration.marshal_identifier}" + "/#{name}-#{version}.gemspec.rz" return http_get(url).body end ## # Fetches the `.gem` file of a given Gem and version. # # @param [String] name # @param [String] version # @return [String] # def fetch_gem(name, version) return http_get(host + "/gems/#{name}-#{version}.gem").body end ## # Adds a new Gem to the source. # # @param [String] name # @param [String] requirement # def gem(name, requirement = nil) gems << Gem.new(name, requirement) end private ## # Requests the given HTTP resource. # # @param [String] url # @return [HTTP::Message] # def http_get(url) response = client.get(url, :follow_redirect => true) unless HTTP::Status.successful?(response.status) raise HTTPClient::BadResponseError, response.reason end return response end ## # @return [HTTPClient] # def client return @client ||= HTTPClient.new end end |
#name ⇒ String (readonly)
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/gem-mirror/source.rb', line 13 class Source attr_reader :name, :host, :gems ## # @param [String] name # @param [String] host # @param [Array] gems # def initialize(name, host, gems = []) @name = name.downcase.gsub(/\s+/, '_') @host = host.chomp('/') @gems = gems end ## # Returns a new Source instance based on the current one. # # @param [Array] new_gems The gems to set, overwrites the current ones. # @return [Source] # def updated(new_gems) return self.class.new(name, host, new_gems) end ## # Fetches a list of all the available Gems and their versions. # # @return [String] # def fetch_versions return http_get(host + '/' + Configuration.versions_file).body end ## # Fetches the Gem specification of a Gem. # # @param [String] name # @param [String] version # @return [String] # def fetch_specification(name, version) url = host + "/quick/#{Configuration.marshal_identifier}" + "/#{name}-#{version}.gemspec.rz" return http_get(url).body end ## # Fetches the `.gem` file of a given Gem and version. # # @param [String] name # @param [String] version # @return [String] # def fetch_gem(name, version) return http_get(host + "/gems/#{name}-#{version}.gem").body end ## # Adds a new Gem to the source. # # @param [String] name # @param [String] requirement # def gem(name, requirement = nil) gems << Gem.new(name, requirement) end private ## # Requests the given HTTP resource. # # @param [String] url # @return [HTTP::Message] # def http_get(url) response = client.get(url, :follow_redirect => true) unless HTTP::Status.successful?(response.status) raise HTTPClient::BadResponseError, response.reason end return response end ## # @return [HTTPClient] # def client return @client ||= HTTPClient.new end end |
Instance Method Details
#client ⇒ HTTPClient (private)
102 103 104 |
# File 'lib/gem-mirror/source.rb', line 102 def client return @client ||= HTTPClient.new end |
#fetch_gem(name, version) ⇒ String
Fetches the .gem file of a given Gem and version.
67 68 69 |
# File 'lib/gem-mirror/source.rb', line 67 def fetch_gem(name, version) return http_get(host + "/gems/#{name}-#{version}.gem").body end |
#fetch_specification(name, version) ⇒ String
Fetches the Gem specification of a Gem.
53 54 55 56 57 58 |
# File 'lib/gem-mirror/source.rb', line 53 def fetch_specification(name, version) url = host + "/quick/#{Configuration.marshal_identifier}" + "/#{name}-#{version}.gemspec.rz" return http_get(url).body end |
#fetch_versions ⇒ String
Fetches a list of all the available Gems and their versions.
42 43 44 |
# File 'lib/gem-mirror/source.rb', line 42 def fetch_versions return http_get(host + '/' + Configuration.versions_file).body end |
#gem(name, requirement = nil) ⇒ Object
Adds a new Gem to the source.
77 78 79 |
# File 'lib/gem-mirror/source.rb', line 77 def gem(name, requirement = nil) gems << Gem.new(name, requirement) end |
#http_get(url) ⇒ HTTP::Message (private)
Requests the given HTTP resource.
89 90 91 92 93 94 95 96 97 |
# File 'lib/gem-mirror/source.rb', line 89 def http_get(url) response = client.get(url, :follow_redirect => true) unless HTTP::Status.successful?(response.status) raise HTTPClient::BadResponseError, response.reason end return response end |
#updated(new_gems) ⇒ Source
Returns a new Source instance based on the current one.
33 34 35 |
# File 'lib/gem-mirror/source.rb', line 33 def updated(new_gems) return self.class.new(name, host, new_gems) end |