puppet-forge-server 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3fc878b60f808ff3ccfd744ef972e0acd5896be2
4
- data.tar.gz: a4c0e1961bb1fe2eb452ca1036efac07b05aeccb
3
+ metadata.gz: 28febe12a43d2784047f7ff01e604133d403d1c8
4
+ data.tar.gz: d99f6193d61655797445bf4ac8d4d7979f1af571
5
5
  SHA512:
6
- metadata.gz: b0ffedd8529f0e510ecdafbfbcfa4e30ef5994a726fc9a3617702ef511527159897f5ff4037842f49ce71272cb9c9a47875e74501d840edaab9b4e3219132452
7
- data.tar.gz: b4a98a5d8e131399f6ca7b28207edd604a46c469118f0a46ee3508f96a1e69dcea4c30db30d5f1fb36aeb1272e137e4d03beab8168cc97aa7b29372509772570
6
+ metadata.gz: b0be3a7fa83dcebef6f88c8fb93f8250244c9490dd6a7e9a32a0a74cb5ee66125eac7995b4489bcc37d9d6c52bea887ab427dba0a430a77ef6aed30470f0fcae
7
+ data.tar.gz: f6f396a4cb6cbf4c8586b797bff5d978d6fcf305a3341afc5e3599ede7dbc1fc1c0c7a8a6e9f660fbbebc830063b2e459854269560dc96d1ba7c9f7bad5bc1da
@@ -30,19 +30,19 @@ module PuppetForgeServer::Api::V3
30
30
  modules[element[:metadata].name][:releases] = (modules[element[:metadata].name][:releases] + releases_version(element[:metadata])).version_sort_by { |r| r[:version] }.reverse
31
31
  else
32
32
  name = element[:metadata].name.sub(/^[^-]+-/, '')
33
+ author = element[:metadata].name.split('-')[0]
33
34
  modules[element[:metadata].name] = {
34
35
  :uri => "/v3/modules/#{element[:metadata].name}",
35
36
  :name => name,
36
37
  :homepage_url => element[:metadata].project_page,
37
38
  :issues_url => element[:metadata].issues_url,
38
39
  :releases => releases_version(element[:metadata]),
39
- :current_release => get_releases([element]).first
40
+ :current_release => get_releases([element]).first,
41
+ :owner => {:username => author, :uri => "/v3/users/#{author}"}
40
42
  }
41
43
  end
42
44
  end
43
-
44
- PuppetForgeServer::Logger.get.error "Requested module count is more than 1:\n#{modules.values}" if modules.values.count > 1
45
- modules.values.first
45
+ modules.values
46
46
  end
47
47
 
48
48
  private
@@ -19,12 +19,13 @@ module PuppetForgeServer::Api::V3
19
19
  def get_releases(metadata)
20
20
  metadata.map do |element|
21
21
  name = element[:metadata].name.sub(/^[^-]+-/, '')
22
-
22
+ author = element[:metadata].name.split('-')[0]
23
23
  {
24
24
  :uri => "/v3/releases/#{element[:metadata].name}-#{element[:metadata].version}",
25
25
  :module => {
26
26
  :uri => "/v3/modules/#{element[:metadata].name}",
27
- :name => name
27
+ :name => name,
28
+ :owner => {:username => author, :uri => "/v3/users/#{author}"}
28
29
  },
29
30
  :metadata => element[:metadata].to_hash,
30
31
  :version => element[:metadata].version,
@@ -73,7 +73,23 @@ module PuppetForgeServer::App
73
73
  backend.get_metadata(author, name)
74
74
  end.flatten.compact.uniq
75
75
  halt 404, json({:errors => ['404 Not found']}) if metadata.empty?
76
- json get_modules(metadata)
76
+ PuppetForgeServer::Logger.get(:server).error "Requested module count is more than 1:\n#{metadata}" if metadata.count > 1
77
+ json get_modules(metadata).first
78
+ end
79
+
80
+ get '/v3/modules' do
81
+ query = params[:query]
82
+ metadata = @backends.map do |backend|
83
+ backend.query_metadata(query)
84
+ end.flatten.compact.uniq
85
+ modules = metadata.empty? ? nil : get_modules(metadata)
86
+ halt 200, json({:pagination => {:next => false}, :results => []}) unless modules
87
+ json :pagination => {:next => false, :total => modules.count}, :results => modules
88
+ end
89
+
90
+ get '/v3/users/:author' do
91
+ author = params[:author]
92
+ json :username => author, :uri => "/v3/users/#{author}"
77
93
  end
78
94
 
79
95
  private
@@ -27,10 +27,9 @@ module PuppetForgeServer::Backends
27
27
  end
28
28
 
29
29
  def get_metadata(author, name, options = {})
30
- options = ({:with_checksum => true}).merge(options)
31
30
  query ="#{author}-#{name}"
32
31
  begin
33
- releases = options[:version] ? [JSON.parse(get("/v3/releases/#{query}-#{options[:version]}"))] : get_all_release_pages("/v3/releases?module=#{query}")
32
+ releases = options[:version] ? [JSON.parse(get("/v3/releases/#{query}-#{options[:version]}"))] : get_all_result_pages("/v3/releases?module=#{query}")
34
33
  get_release_metadata(releases)
35
34
  rescue OpenURI::HTTPError
36
35
  #ignore
@@ -38,23 +37,23 @@ module PuppetForgeServer::Backends
38
37
  end
39
38
 
40
39
  def query_metadata(query, options = {})
41
- author, name = query.split('-')
42
40
  begin
43
- get_metadata(author, name, options) if author && name
41
+ releases = get_all_result_pages("/v3/modules?query=#{query}").map {|element| element['current_release']}
42
+ get_release_metadata(releases)
44
43
  rescue OpenURI::HTTPError
45
44
  #ignore
46
45
  end
47
46
  end
48
47
 
49
48
  private
50
- def get_all_release_pages(next_page)
51
- releases = []
49
+ def get_all_result_pages(next_page)
50
+ results = []
52
51
  begin
53
- result = JSON.parse(get(next_page))
54
- releases += result['results']
55
- next_page = result['pagination']['next']
52
+ current_page = JSON.parse(get(next_page))
53
+ results += current_page['results']
54
+ next_page = current_page['pagination']['next']
56
55
  end while next_page
57
- releases
56
+ results
58
57
  end
59
58
 
60
59
  def normalize_metadata(metadata)
@@ -15,5 +15,5 @@
15
15
  # limitations under the License.
16
16
 
17
17
  module PuppetForgeServer
18
- VERSION = '1.2.0'
18
+ VERSION = '1.3.0'
19
19
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-forge-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ilja Bobkevic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-08 00:00:00.000000000 Z
11
+ date: 2015-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sinatra