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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 28febe12a43d2784047f7ff01e604133d403d1c8
|
4
|
+
data.tar.gz: d99f6193d61655797445bf4ac8d4d7979f1af571
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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]}"))] :
|
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
|
-
|
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
|
51
|
-
|
49
|
+
def get_all_result_pages(next_page)
|
50
|
+
results = []
|
52
51
|
begin
|
53
|
-
|
54
|
-
|
55
|
-
next_page =
|
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
|
-
|
56
|
+
results
|
58
57
|
end
|
59
58
|
|
60
59
|
def normalize_metadata(metadata)
|
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.
|
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:
|
11
|
+
date: 2015-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sinatra
|