puppet-forge-server 1.2.0 → 1.3.0

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.
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