librarian-puppet-maestrodev 0.9.9.6 → 0.9.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,5 @@
1
- require 'uri'
2
- require 'net/http'
3
1
  require 'json'
2
+ require 'open-uri'
4
3
 
5
4
  module Librarian
6
5
  module Puppet
@@ -8,35 +7,26 @@ module Librarian
8
7
  class Forge
9
8
  class Repo
10
9
 
11
- attr_accessor :source, :name
12
- private :source=, :name=
10
+ attr_accessor :source, :name, :versions, :api_data
11
+ private :source=, :name=, :versions=, :api_data, :api_data=
13
12
 
14
13
  def initialize(source, name)
15
14
  self.source = source
16
15
  self.name = name
17
- @dependencies = {}
18
- end
19
16
 
20
- def versions
21
- return @versions if @versions
22
- data = api_call("#{name}.json")
23
- if data.nil?
17
+ # call API and cache data
18
+ self.api_data = api_call(name)
19
+ if api_data.nil?
24
20
  raise Error, "Unable to find module '#{name}' on #{source}"
25
21
  end
26
-
27
- versions = data['releases'].map { |r| r['version'] }
22
+ versions = api_data[name].map { |r| r['version'] }.reverse
28
23
  debug { " Module #{name} found versions: #{versions.join(", ")}" }
29
24
  versions.select { |v| ! Gem::Version.correct? v }.each { |v| debug { "Ignoring invalid version '#{v}' for module #{name}" } }
30
- @versions = versions.select { |v| Gem::Version.correct? v }
25
+ self.versions = versions.select { |v| Gem::Version.correct? v }
31
26
  end
32
27
 
33
28
  def dependencies(version)
34
- return @dependencies[version] if @dependencies[version]
35
- data = api_call("api/v1/releases.json?module=#{name}&version=#{version}")
36
- if data.nil?
37
- raise Error, "Unable to find version #{version} for module '#{name}' on #{source}"
38
- end
39
- @dependencies[version] = data[name].first['dependencies']
29
+ api_data[name].detect{|x| x['version'] == version.to_s}['dependencies']
40
30
  end
41
31
 
42
32
  def manifests
@@ -133,46 +123,34 @@ module Librarian
133
123
  end
134
124
 
135
125
  def vendor_cache(name, version)
126
+ info = api_data[name].detect {|h| h['version'] == version.to_s }
136
127
  File.open(vendored_path(name, version).to_s, 'w') do |f|
137
- download(name, version) do |data|
138
- f << data
128
+ open("#{source}#{info['file']}") do |input|
129
+ while (buffer = input.read)
130
+ f.write(buffer)
131
+ end
139
132
  end
140
133
  end
141
134
  end
142
135
 
143
- def download(name, version, &block)
144
- data = api_call("api/v1/releases.json?module=#{name}&version=#{version}")
145
-
146
- info = data[name].detect {|h| h['version'] == version.to_s }
147
-
148
- stream(info['file'], &block)
149
- end
150
-
151
- def stream(file, &block)
152
- Net::HTTP.get_response(URI.parse("#{source}#{file}")) do |res|
153
- res.code
154
-
155
- res.read_body(&block)
156
- end
157
- end
158
-
159
136
  def debug(*args, &block)
160
137
  environment.logger.debug(*args, &block)
161
138
  end
162
139
 
163
140
  private
164
141
 
165
- def api_call(path)
142
+ def api_call(module_name)
166
143
  base_url = source.uri
167
- resp = Net::HTTP.get_response(URI.parse("#{base_url}/#{path}"))
168
- case resp.code.to_i
169
- when 404,410
170
- nil
171
- when 200
172
- data = resp.body
144
+ begin
145
+ data = open("#{base_url}/api/v1/releases.json?module=#{module_name}") {|f| f.read}
173
146
  JSON.parse(data)
174
- else
175
- raise Error, "Error requesting #{base_url}/#{path}: [#{resp.code}] #{resp.body}"
147
+ rescue OpenURI::HTTPError => e
148
+ case e.io.status[0].to_i
149
+ when 404,410
150
+ nil
151
+ else
152
+ raise e, "Error requesting #{base_url}/#{path}: #{e.to_s}"
153
+ end
176
154
  end
177
155
  end
178
156
  end
@@ -1,5 +1,5 @@
1
1
  module Librarian
2
2
  module Puppet
3
- VERSION = "0.9.9.6"
3
+ VERSION = "0.9.9.7"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: librarian-puppet-maestrodev
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.9.6
4
+ version: 0.9.9.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-10 00:00:00.000000000 Z
12
+ date: 2013-07-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: librarian
@@ -149,7 +149,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
149
149
  version: '0'
150
150
  segments:
151
151
  - 0
152
- hash: -204921353019984320
152
+ hash: -3641701570484774639
153
153
  required_rubygems_version: !ruby/object:Gem::Requirement
154
154
  none: false
155
155
  requirements:
@@ -158,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
158
  version: '0'
159
159
  segments:
160
160
  - 0
161
- hash: -204921353019984320
161
+ hash: -3641701570484774639
162
162
  requirements: []
163
163
  rubyforge_project:
164
164
  rubygems_version: 1.8.25