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