niffler 0.0.2
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 +15 -0
- data/Gemfile +16 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +19 -0
- data/Rakefile +53 -0
- data/doc/TODO.md +8 -0
- data/lib/niffler/maven.rb +101 -0
- data/lib/niffler/version.rb +3 -0
- data/lib/niffler.rb +0 -0
- data/niffler-0.0.1.gem +0 -0
- data/niffler.gemspec +32 -0
- data/spec/lib/niffler/maven_spec.rb +126 -0
- data/spec/lib/niffler_spec.rb +0 -0
- data/spec/spec_helper.rb +11 -0
- metadata +172 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
YjQ1NjY0ODI5NWNiY2U0YTUwYjYwMmJmNzJlZjNmNjkwNjcyYmYzMQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZTJjZTk1MTM2ZjYyZTA0NzcxYzEzNDQ1YjA5YjgwYTI2ZTc2N2UyNg==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
NTU4MTY4YmMxNTcwNzViNjJiMDc3YzViZTU2YjFjZTE0N2I5NzE4OGNjNGI2
|
10
|
+
YTg2YjI5NGY1ZjMxY2NkNjIzYTJjMzFjYmU1N2UzMmZhMDc2MmQyYzRmN2Ri
|
11
|
+
MjBjNzNjYzJjNTMwZmViZjlkNmY1YzI1ZGUwMDliNWNmMTA3OGQ=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MTg0MzNmMjFjNTBiNDQyYWM5Y2E0MGY0ODA5MWI5YzBjZDRlYjVkMmExYWQ5
|
14
|
+
MmY2NTk5NjlmOWZkYmI0YWUyMzY5YTE3ZWUzNTliNWVlNzU4YTNjM2FmYjA4
|
15
|
+
ZGZlYTZmY2UzNTViNTRiMjBmNTZlYTRiNTIyYmU3NGYwYWVmYTM=
|
data/Gemfile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
# Add dependencies required to use your gem here.
|
3
|
+
# Example:
|
4
|
+
# gem "activesupport", ">= 2.3.5"
|
5
|
+
|
6
|
+
# Add dependencies to develop your gem here.
|
7
|
+
# Include everything needed to run rake, tests, features, etc.
|
8
|
+
group :development do
|
9
|
+
gem "shoulda", ">= 0"
|
10
|
+
gem "rdoc", "~> 3.12"
|
11
|
+
gem "bundler", "~> 1.0.0"
|
12
|
+
gem "jeweler", "~> 1.8.4"
|
13
|
+
gem "rcov", ">= 0"
|
14
|
+
gem "sinatra", ">= 0"
|
15
|
+
gem "realweb"
|
16
|
+
end
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2013 Michael Carlson
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
= niffler
|
2
|
+
|
3
|
+
This project is a ruby gem wrapper of the Maven jar repository (http://search.maven.org/#api).
|
4
|
+
|
5
|
+
== Contributing to niffler
|
6
|
+
|
7
|
+
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
|
8
|
+
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
|
9
|
+
* Fork the project.
|
10
|
+
* Start a feature/bugfix branch.
|
11
|
+
* Commit and push until you are happy with your contribution.
|
12
|
+
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
13
|
+
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
|
14
|
+
|
15
|
+
== Copyright
|
16
|
+
|
17
|
+
Copyright (c) 2013 Michael Carlson. See LICENSE.txt for
|
18
|
+
further details.
|
19
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'bundler'
|
5
|
+
begin
|
6
|
+
Bundler.setup(:default, :development)
|
7
|
+
rescue Bundler::BundlerError => e
|
8
|
+
$stderr.puts e.message
|
9
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
+
exit e.status_code
|
11
|
+
end
|
12
|
+
require 'rake'
|
13
|
+
|
14
|
+
require 'jeweler'
|
15
|
+
Jeweler::Tasks.new do |gem|
|
16
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
+
gem.name = "niffler"
|
18
|
+
gem.homepage = "http://github.com/Prandium/niffler"
|
19
|
+
gem.license = "MIT"
|
20
|
+
gem.summary = %Q{TODO: one-line summary of your gem}
|
21
|
+
gem.description = %Q{TODO: longer description of your gem}
|
22
|
+
gem.email = "me@mbcarlson.org"
|
23
|
+
gem.authors = ["Michael Carlson"]
|
24
|
+
# dependencies defined in Gemfile
|
25
|
+
end
|
26
|
+
Jeweler::RubygemsDotOrgTasks.new
|
27
|
+
|
28
|
+
require 'rake/testtask'
|
29
|
+
Rake::TestTask.new(:test) do |test|
|
30
|
+
test.libs << 'lib' << 'test'
|
31
|
+
test.pattern = 'test/**/test_*.rb'
|
32
|
+
test.verbose = true
|
33
|
+
end
|
34
|
+
|
35
|
+
require 'rcov/rcovtask'
|
36
|
+
Rcov::RcovTask.new do |test|
|
37
|
+
test.libs << 'test'
|
38
|
+
test.pattern = 'test/**/test_*.rb'
|
39
|
+
test.verbose = true
|
40
|
+
test.rcov_opts << '--exclude "gems/*"'
|
41
|
+
end
|
42
|
+
|
43
|
+
task :default => :test
|
44
|
+
|
45
|
+
require 'rdoc/task'
|
46
|
+
Rake::RDocTask.new do |rdoc|
|
47
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
48
|
+
|
49
|
+
rdoc.rdoc_dir = 'rdoc'
|
50
|
+
rdoc.title = "niffler #{version}"
|
51
|
+
rdoc.rdoc_files.include('README*')
|
52
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
53
|
+
end
|
data/doc/TODO.md
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
require 'cgi'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
class Niffler
|
6
|
+
class Maven
|
7
|
+
attr_accessor :group, :artifact, :version, :repository, :packaging
|
8
|
+
BASE_URL = "http://search.maven.org/solrsearch/select?"
|
9
|
+
JSON_URL = "&wt=json"
|
10
|
+
ROWS_URL = "&rows=500"
|
11
|
+
ROW_URL = "&rows=1"
|
12
|
+
|
13
|
+
def initialize(opts)
|
14
|
+
@group = opts.fetch(:group)
|
15
|
+
@artifact = opts.fetch(:artifact)
|
16
|
+
@version = opts.fetch(:version)
|
17
|
+
@repository = opts.fetch(:repository)
|
18
|
+
@packaging = opts.fetch(:packaging)
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.groups_query(name)
|
22
|
+
# build the query for groups specifying 500 maximum responses
|
23
|
+
url = BASE_URL+"q="+CGI::escape(name)+JSON_URL+ROWS_URL
|
24
|
+
json = fetch_json(url)
|
25
|
+
results = parse_json(json)
|
26
|
+
return results
|
27
|
+
end # def find_by_group
|
28
|
+
|
29
|
+
def self.group_query(name)
|
30
|
+
# build the query for a group specifying only one response
|
31
|
+
url = BASE_URL+"q="+CGI::escape(name)+JSON_URL+ROWS_URL
|
32
|
+
# returns an array with a single entry
|
33
|
+
json = fetch_json(url)
|
34
|
+
result = parse_json(json).last
|
35
|
+
return result
|
36
|
+
end # def self.group_query
|
37
|
+
|
38
|
+
def self.artifacts_query(name)
|
39
|
+
# build the query for an artifact specifying 500 maximum responses
|
40
|
+
url = BASE_URL+"q="+CGI::escape("a:\"#{name}\"")+JSON_URL+ROWS_URL
|
41
|
+
json = fetch_json(url)
|
42
|
+
results = parse_json(json)
|
43
|
+
return results
|
44
|
+
end # def self.artifacts_query
|
45
|
+
|
46
|
+
def self.artifact_query(name)
|
47
|
+
# build the query for artifacts specifying only one response
|
48
|
+
url = BASE_URL+"q="+CGI::escape("a:\"#{name}\"")+JSON_URL+ROW_URL
|
49
|
+
json = fetch_json(url)
|
50
|
+
result = parse_json(json).last
|
51
|
+
return result
|
52
|
+
end # def self.artifact_query
|
53
|
+
|
54
|
+
def self.hash_query(hash)
|
55
|
+
url = BASE_URL+"q="+CGI::escape("1:\"#{hash}\"")+JSON_URL+ROW_URL
|
56
|
+
json = fetch_json(url)
|
57
|
+
result = parse_hash_json(json)
|
58
|
+
return result
|
59
|
+
end # def self.hash_query
|
60
|
+
|
61
|
+
private
|
62
|
+
def self.fetch_json(url)
|
63
|
+
# open is the open-uri, which returns a io-string object, so we need to convert that to a encoded string
|
64
|
+
response = open(url)
|
65
|
+
|
66
|
+
# open-uri will save the response as a temp file if it's too large, so check what the class is before parsing
|
67
|
+
if response.kind_of?(StringIO)
|
68
|
+
resp_string = response.string
|
69
|
+
else
|
70
|
+
resp_string = response.read
|
71
|
+
end
|
72
|
+
|
73
|
+
json = JSON.parse(resp_string)
|
74
|
+
return json
|
75
|
+
end # def self.fetch_json
|
76
|
+
|
77
|
+
def self.parse_json(json)
|
78
|
+
# json will look like the following
|
79
|
+
# {"responseHeader"=>{"status"=>0, "QTime"=>1, "params"=>{"spellcheck"=>"true", "fl"=>"id,g,a,latestVersion,p,ec,repositoryId,text,timestamp,versionCount", "sort"=>"score desc,timestamp desc,g asc,a asc", "indent"=>"off", "q"=>"guice", "qf"=>"text^20 g^5 a^10", "spellcheck.count"=>"5", "wt"=>"json", "rows"=>"20", "version"=>"2.2", "defType"=>"dismax"}}, "response"=>{"numFound"=>234, "start"=>0, "docs"=>[{"id"=>"com.jolira:guice", "g"=>"com.jolira", "a"=>"guice", "latestVersion"=>"3.0.0", "repositoryId"=>"central", "p"=>"jar", "timestamp"=>1301724755000, "versionCount"=>8, "text"=>["com.jolira", "guice", "-javadoc.jar", "-sources.jar", ".jar", ".pom"], "ec"=>["-javadoc.jar", "-sources.jar", ".jar", ".pom"]}
|
80
|
+
results = []
|
81
|
+
# response docs refers to the portion of the response with the software metadata for each result
|
82
|
+
for r in json["response"]["docs"]
|
83
|
+
result = Niffler::Maven.new(group: r["g"], artifact: r["a"], version: r["latestVersion"],
|
84
|
+
repository: r["repositoryId"], packaging: r["p"])
|
85
|
+
results << result
|
86
|
+
end # for result
|
87
|
+
|
88
|
+
return results
|
89
|
+
end # def query
|
90
|
+
|
91
|
+
def self.parse_hash_json(json)
|
92
|
+
# json will look like the following
|
93
|
+
# {"responseHeader"=>{"status"=>0, "QTime"=>1, "params"=>{"spellcheck"=>"true", "fl"=>"id,g,a,latestVersion,p,ec,repositoryId,text,timestamp,versionCount", "sort"=>"score desc,timestamp desc,g asc,a asc", "indent"=>"off", "q"=>"guice", "qf"=>"text^20 g^5 a^10", "spellcheck.count"=>"5", "wt"=>"json", "rows"=>"20", "version"=>"2.2", "defType"=>"dismax"}}, "response"=>{"numFound"=>234, "start"=>0, "docs"=>[{"id"=>"com.jolira:guice", "g"=>"com.jolira", "a"=>"guice", "latestVersion"=>"3.0.0", "repositoryId"=>"central", "p"=>"jar", "timestamp"=>1301724755000, "versionCount"=>8, "text"=>["com.jolira", "guice", "-javadoc.jar", "-sources.jar", ".jar", ".pom"], "ec"=>["-javadoc.jar", "-sources.jar", ".jar", ".pom"]}
|
94
|
+
# response docs refers to the portion of the response with the software metadata for each result
|
95
|
+
r = json["response"]["docs"].last
|
96
|
+
result = Niffler::Maven.new(group: r["g"], artifact: r["a"], version: r["v"],
|
97
|
+
repository: r["repositoryId"], packaging: r["p"])
|
98
|
+
return result
|
99
|
+
end # def parse_response
|
100
|
+
end # class Maven
|
101
|
+
end # class Niffler
|
data/lib/niffler.rb
ADDED
File without changes
|
data/niffler-0.0.1.gem
ADDED
Binary file
|
data/niffler.gemspec
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'niffler/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "niffler"
|
8
|
+
gem.version = Niffler::VERSION
|
9
|
+
gem.authors = ["Michael Carlson"]
|
10
|
+
gem.email = ["me@mbcarlson.org"]
|
11
|
+
gem.description = %q{A tool for getting software metadata from various online tools}
|
12
|
+
gem.summary = %q{ This gem will fetch information about software based on the SHA1 hash } +
|
13
|
+
%q{ of the jar. }
|
14
|
+
gem.homepage = "https://github.com/Prandium/niffler"
|
15
|
+
|
16
|
+
gem.files = `git ls-files`.split($/)
|
17
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
18
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
|
+
gem.require_paths = ['lib']
|
20
|
+
|
21
|
+
gem.required_ruby_version = '>= 1.9.2'
|
22
|
+
|
23
|
+
gem.add_dependency('rack-client')
|
24
|
+
gem.add_dependency('excon')
|
25
|
+
gem.add_dependency('celluloid')
|
26
|
+
|
27
|
+
gem.add_development_dependency('rspec')
|
28
|
+
gem.add_development_dependency('sinatra')
|
29
|
+
gem.add_development_dependency('realweb')
|
30
|
+
gem.add_development_dependency('awesome_print')
|
31
|
+
gem.add_development_dependency('colorize')
|
32
|
+
end
|
@@ -0,0 +1,126 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'json'
|
3
|
+
require 'niffler/maven'
|
4
|
+
|
5
|
+
describe Niffler::Maven do
|
6
|
+
describe '#group_query' do
|
7
|
+
before do
|
8
|
+
@result = Niffler::Maven.group_query("guice")
|
9
|
+
end # before
|
10
|
+
|
11
|
+
it 'returns a Niffler::Maven object' do
|
12
|
+
@result.should be_kind_of(Niffler::Maven)
|
13
|
+
end # it
|
14
|
+
|
15
|
+
it 'returns the group name' do
|
16
|
+
@result.group.should eq("org.apache.servicemix.bundles")
|
17
|
+
end # it
|
18
|
+
|
19
|
+
it 'returns the artifact name' do
|
20
|
+
@result.artifact.should eq("org.apache.servicemix.bundles.guice")
|
21
|
+
end # it
|
22
|
+
|
23
|
+
it 'returns the latest version' do
|
24
|
+
@result.version.should eq("3.0_1")
|
25
|
+
end # it
|
26
|
+
|
27
|
+
it 'returns the repository' do
|
28
|
+
@result.repository.should eq("central")
|
29
|
+
end # it
|
30
|
+
|
31
|
+
it 'returns the packaging' do
|
32
|
+
@result.packaging.should eq("bundle")
|
33
|
+
end # it
|
34
|
+
end # describe
|
35
|
+
|
36
|
+
describe '#groups_query' do
|
37
|
+
context 'with a valid group name only' do
|
38
|
+
before do
|
39
|
+
@results = Niffler::Maven.groups_query("guice")
|
40
|
+
end # before
|
41
|
+
|
42
|
+
it 'returns an array of Mavens' do
|
43
|
+
@results.should be_kind_of(Array)
|
44
|
+
@results.count.should eq(235)
|
45
|
+
@results.last.should be_kind_of(Niffler::Maven)
|
46
|
+
end # it
|
47
|
+
end # context
|
48
|
+
|
49
|
+
context 'with a group AND version' do
|
50
|
+
pending "returns correctly when a version is also specified"
|
51
|
+
end # context
|
52
|
+
|
53
|
+
context 'with a group AND packaging are specified' do
|
54
|
+
pending "returns correctly when packaging is also specified"
|
55
|
+
end # context
|
56
|
+
|
57
|
+
context 'with a group AND classifier are specified' do
|
58
|
+
pending "returns correctly when a classifier (i) is also specified"
|
59
|
+
end # context
|
60
|
+
end # describe
|
61
|
+
|
62
|
+
describe '#artifacts_query' do
|
63
|
+
context 'with a valid artifact name' do
|
64
|
+
before do
|
65
|
+
@results = Niffler::Maven.artifacts_query("guice")
|
66
|
+
end # before
|
67
|
+
|
68
|
+
it 'returns an array of responses' do
|
69
|
+
@results.should be_kind_of(Array)
|
70
|
+
@results.last.should be_kind_of(Niffler::Maven)
|
71
|
+
end # it
|
72
|
+
end # context
|
73
|
+
end # describe
|
74
|
+
|
75
|
+
describe '#artifact_query' do
|
76
|
+
context 'with a valid artifact name' do
|
77
|
+
before do
|
78
|
+
@result = Niffler::Maven.artifact_query("guice-maven-plugin")
|
79
|
+
end # before
|
80
|
+
|
81
|
+
it 'returns the group name' do
|
82
|
+
@result.group.should eq("org.apache.camel")
|
83
|
+
end # it
|
84
|
+
|
85
|
+
it 'returns the artifact name' do
|
86
|
+
@result.artifact.should eq("guice-maven-plugin")
|
87
|
+
end # it
|
88
|
+
|
89
|
+
it 'returns the latest version' do
|
90
|
+
@result.version.should eq("2.10.4")
|
91
|
+
end # it
|
92
|
+
|
93
|
+
it 'returns the repository' do
|
94
|
+
@result.repository.should eq("central")
|
95
|
+
end # it
|
96
|
+
|
97
|
+
it 'returns the packaging' do
|
98
|
+
@result.packaging.should eq("maven-plugin")
|
99
|
+
end # it
|
100
|
+
end # context
|
101
|
+
end # describe
|
102
|
+
|
103
|
+
describe '#hash_query' do
|
104
|
+
context 'with a valid hash' do
|
105
|
+
before do
|
106
|
+
@result = Niffler::Maven.hash_query("35379fb6526fd019f331542b4e9ae2e566c57933")
|
107
|
+
end # before
|
108
|
+
|
109
|
+
it 'returns the group name' do
|
110
|
+
@result.group.should eq("org.eclipse.jetty")
|
111
|
+
end # it
|
112
|
+
|
113
|
+
it 'returns the artifact name' do
|
114
|
+
@result.artifact.should eq("jetty-webapp")
|
115
|
+
end # it
|
116
|
+
|
117
|
+
it 'returns the latest version' do
|
118
|
+
@result.version.should eq("7.3.0.v20110203")
|
119
|
+
end # it
|
120
|
+
|
121
|
+
it 'returns the packaging' do
|
122
|
+
@result.packaging.should eq("jar")
|
123
|
+
end # it
|
124
|
+
end # context
|
125
|
+
end # describe hash
|
126
|
+
end # describe Niffler
|
File without changes
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
RESPONSE = {
|
2
|
+
:headers => {
|
3
|
+
"Content-Type"=>"application/json",
|
4
|
+
"Content-Length"=>"6024",
|
5
|
+
"Server"=>"nginx/0.8.55",
|
6
|
+
"Date"=>"Thu, 18 Apr 2013 18:14:58 GMT",
|
7
|
+
"Connection"=>"keep-alive"
|
8
|
+
},
|
9
|
+
:body => %q|{"responseHeader":{"status":0,"QTime":1,"params":{"spellcheck":"true","fl":"id,g,a,latestVersion,p,ec,repositoryId,text,timestamp,versionCount","sort":"score desc,timestamp desc,g asc,a asc","indent":"off","q":"guice","qf":"text^20 g^5 a^10","spellcheck.count":"5","wt":"json","rows":"20","version":"2.2","defType":"dismax"}},"response":{"numFound":234,"start":0,"docs":[{"id":"com.jolira:guice","g":"com.jolira","a":"guice","latestVersion":"3.0.0","repositoryId":"central","p":"jar","timestamp":1301724755000,"versionCount":8,"text":["com.jolira","guice","-javadoc.jar","-sources.jar",".jar",".pom"],"ec":["-javadoc.jar","-sources.jar",".jar",".pom"]},{"id":"com.google.inject:guice","g":"com.google.inject","a":"guice","latestVersion":"3.0","repositoryId":"central","p":"jar","timestamp":1301077187000,"versionCount":6,"text":["com.google.inject","guice","-sources.jar","-javadoc.jar",".jar","-tests.jar","-no_aop.jar",".pom"],"ec":["-sources.jar","-javadoc.jar",".jar","-tests.jar","-no_aop.jar",".pom"]},{"id":"org.jvnet.hudson:guice","g":"org.jvnet.hudson","a":"guice","latestVersion":"3.0-rc1","repositoryId":"central","p":"jar","timestamp":1292057917000,"versionCount":1,"text":["org.jvnet.hudson","guice","-sources.jar",".jar",".pom"],"ec":["-sources.jar",".jar",".pom"]},{"id":"com.mycila.com.google.inject:guice","g":"com.mycila.com.google.inject","a":"guice","latestVersion":"3.0-20100927","repositoryId":"central","p":"jar","timestamp":1285626177000,"versionCount":2,"text":["com.mycila.com.google.inject","guice","-sources.jar",".jar",".pom"],"ec":["-sources.jar",".jar",".pom"]},{"id":"org.mod4j.com.google.inject:guice","g":"org.mod4j.com.google.inject","a":"guice","latestVersion":"1.0-XTEXT-PATCHED","repositoryId":"central","p":"jar","timestamp":1250254399000,"versionCount":1,"text":["org.mod4j.com.google.inject","guice",".jar",".pom"],"ec":[".jar",".pom"]},{"id":"com.google.code.guice:guice","g":"com.google.code.guice","a":"guice","latestVersion":"1.0","repositoryId":"central","p":"pom","timestamp":1174541157000,"versionCount":1,"text":["com.google.code.guice","guice","-sources.jar",".jar",".pom"],"ec":["-sources.jar",".jar",".pom"]},{"id":"com.google.code.jbpm-guice:jbpm3-guice-aggregator","g":"com.google.code.jbpm-guice","a":"jbpm3-guice-aggregator","latestVersion":"1.1.0","repositoryId":"central","p":"pom","timestamp":1323506182000,"versionCount":1,"text":["com.google.code.jbpm-guice","jbpm3-guice-aggregator",".pom"],"ec":[".pom"]},{"id":"com.googlecode.guice-junit4:guice-junit4-parent","g":"com.googlecode.guice-junit4","a":"guice-junit4-parent","latestVersion":"0.2","repositoryId":"central","p":"pom","timestamp":1277114820000,"versionCount":3,"text":["com.googlecode.guice-junit4","guice-junit4-parent","-tests.jar",".pom"],"ec":["-tests.jar",".pom"]},{"id":"com.jolira:guice-parent","g":"com.jolira","a":"guice-parent","latestVersion":"3.0.5","repositoryId":"central","p":"pom","timestamp":1333567502000,"versionCount":13,"text":["com.jolira","guice-parent",".pom"],"ec":[".pom"]},{"id":"org.sonatype.sisu.inject:guice-extensions","g":"org.sonatype.sisu.inject","a":"guice-extensions","latestVersion":"3.1.3","repositoryId":"central","p":"pom","timestamp":1359681367000,"versionCount":14,"text":["org.sonatype.sisu.inject","guice-extensions",".pom"],"ec":[".pom"]},{"id":"org.sonatype.sisu.inject:guice-parent","g":"org.sonatype.sisu.inject","a":"guice-parent","latestVersion":"3.1.3","repositoryId":"central","p":"pom","timestamp":1359681236000,"versionCount":14,"text":["org.sonatype.sisu.inject","guice-parent",".pom"],"ec":[".pom"]},{"id":"org.mockwire:mockwire-guice3-ws","g":"org.mockwire","a":"mockwire-guice3-ws","latestVersion":"1.1","repositoryId":"central","p":"jar","timestamp":1331287941000,"versionCount":1,"text":["org.mockwire","mockwire-guice3-ws",".jar",".pom"],"ec":[".jar",".pom"]},{"id":"net.peachjean.guice:peachguice-test","g":"net.peachjean.guice","a":"peachguice-test","latestVersion":"0.1","repositoryId":"central","p":"jar","timestamp":1319580272000,"versionCount":1,"text":["net.peachjean.guice","peachguice-test",".jar",".pom"],"ec":[".jar",".pom"]},{"id":"net.peachjean.guice:peachguice-parent","g":"net.peachjean.guice","a":"peachguice-parent","latestVersion":"0.1","repositoryId":"central","p":"pom","timestamp":1319580270000,"versionCount":1,"text":["net.peachjean.guice","peachguice-parent",".pom"],"ec":[".pom"]},{"id":"org.sonatype.sisu.inject:guice-plexus","g":"org.sonatype.sisu.inject","a":"guice-plexus","latestVersion":"2.3.0","repositoryId":"central","p":"pom","timestamp":1315887209000,"versionCount":15,"text":["org.sonatype.sisu.inject","guice-plexus",".pom"],"ec":[".pom"]},{"id":"org.sonatype.sisu.inject:guice-bean","g":"org.sonatype.sisu.inject","a":"guice-bean","latestVersion":"2.3.0","repositoryId":"central","p":"pom","timestamp":1315887004000,"versionCount":15,"text":["org.sonatype.sisu.inject","guice-bean",".pom"],"ec":[".pom"]},{"id":"com.google.inject:guice-parent","g":"com.google.inject","a":"guice-parent","latestVersion":"3.0","repositoryId":"central","p":"pom","timestamp":1301077025000,"versionCount":6,"text":["com.google.inject","guice-parent",".pom"],"ec":[".pom"]},{"id":"org.sonatype.sisu.inject:guice-eclipse","g":"org.sonatype.sisu.inject","a":"guice-eclipse","latestVersion":"2.2.0","repositoryId":"central","p":"pom","timestamp":1299849360000,"versionCount":1,"text":["org.sonatype.sisu.inject","guice-eclipse",".pom"],"ec":[".pom"]},{"id":"de.devsurf.injection.guice:integrations","g":"de.devsurf.injection.guice","a":"integrations","latestVersion":"0.8.7","repositoryId":"central","p":"pom","timestamp":1294933063000,"versionCount":11,"text":["de.devsurf.injection.guice","integrations",".pom"],"ec":[".pom"]},{"id":"de.devsurf.injection.guice:scanner","g":"de.devsurf.injection.guice","a":"scanner","latestVersion":"0.8.7","repositoryId":"central","p":"pom","timestamp":1294932962000,"versionCount":7,"text":["de.devsurf.injection.guice","scanner",".pom"],"ec":[".pom"]}]},"spellcheck":{"suggestions":[]}}|,
|
10
|
+
:status => 200
|
11
|
+
}
|
metadata
ADDED
@@ -0,0 +1,172 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: niffler
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Michael Carlson
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-04-20 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rack-client
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ! '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ! '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: excon
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: celluloid
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: sinatra
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: realweb
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ! '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: awesome_print
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ! '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: colorize
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ! '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
description: A tool for getting software metadata from various online tools
|
126
|
+
email:
|
127
|
+
- me@mbcarlson.org
|
128
|
+
executables: []
|
129
|
+
extensions: []
|
130
|
+
extra_rdoc_files: []
|
131
|
+
files:
|
132
|
+
- Gemfile
|
133
|
+
- LICENSE.txt
|
134
|
+
- README.rdoc
|
135
|
+
- Rakefile
|
136
|
+
- doc/TODO.md
|
137
|
+
- lib/niffler.rb
|
138
|
+
- lib/niffler/maven.rb
|
139
|
+
- lib/niffler/version.rb
|
140
|
+
- niffler-0.0.1.gem
|
141
|
+
- niffler.gemspec
|
142
|
+
- spec/lib/niffler/maven_spec.rb
|
143
|
+
- spec/lib/niffler_spec.rb
|
144
|
+
- spec/spec_helper.rb
|
145
|
+
homepage: https://github.com/Prandium/niffler
|
146
|
+
licenses: []
|
147
|
+
metadata: {}
|
148
|
+
post_install_message:
|
149
|
+
rdoc_options: []
|
150
|
+
require_paths:
|
151
|
+
- lib
|
152
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
153
|
+
requirements:
|
154
|
+
- - ! '>='
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: 1.9.2
|
157
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
159
|
+
- - ! '>='
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: '0'
|
162
|
+
requirements: []
|
163
|
+
rubyforge_project:
|
164
|
+
rubygems_version: 2.0.3
|
165
|
+
signing_key:
|
166
|
+
specification_version: 4
|
167
|
+
summary: This gem will fetch information about software based on the SHA1 hash of
|
168
|
+
the jar.
|
169
|
+
test_files:
|
170
|
+
- spec/lib/niffler/maven_spec.rb
|
171
|
+
- spec/lib/niffler_spec.rb
|
172
|
+
- spec/spec_helper.rb
|