pkgwat 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/pkgwat.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require "pkgwat/version"
2
2
  require 'net/https'
3
3
  require 'json'
4
+ require 'sanitize'
4
5
 
5
6
  module Pkgwat
6
7
  require 'pkgwat/railtie' if defined?(Rails)
@@ -13,6 +14,11 @@ module Pkgwat
13
14
  DEFAULT_DISTROS = [F17, F16, EPEL6]
14
15
  PACKAGE_NAME = "rubygem-:gem"
15
16
  PACKAGES_URL = "https://apps.fedoraproject.org/packages/fcomm_connector/bodhi/query/query_active_releases"
17
+ PACKAGES_URL_LIST = "https://apps.fedoraproject.org/packages/fcomm_connector/xapian/query/search_packages"
18
+ BUGS_URL = "https://apps.fedoraproject.org/packages/fcomm_connector/bugzilla/query/query_bugs"
19
+ BUILDS_URL = "https://apps.fedoraproject.org/packages/fcomm_connector/koji/query/query_builds"
20
+ KOJI_BUILD_STATES = ["all" => "", "f17" =>"17", "f16" => "16", "f15" => "15", "e16" => "16", "e15" => "15"]
21
+ BUGZILLA_RELEASEA = ["all" => "", "building" =>"0", "success" => "1", "failed" => "2", "cancelled" => "3", "deleted" => "4"]
16
22
 
17
23
  def self.check_gem(name, version, distros = DEFAULT_DISTROS, throw_ex = false)
18
24
  puts "Checking #{name} #{version}...\n"
@@ -41,6 +47,54 @@ module Pkgwat
41
47
  PACKAGE_NAME.gsub(":gem", gem)
42
48
  end
43
49
 
50
+ # this function queries and returns the specified number of packages starting
51
+ # at the specified row
52
+ def self.get_packages(pattern, start=0, num=nil)
53
+ num ||= total_rows(pattern, "packages", PACKAGES_URL_LIST)
54
+ query = {"filters"=>{"search"=>pattern}, "rows_per_page"=>num, "start_row"=>start}
55
+ url = PACKAGES_URL_LIST + "/" + query.to_json
56
+ uri = URI.parse(URI.escape(url))
57
+ response = submit_request(uri)
58
+ clean_response = Sanitize.clean(response.body)
59
+ parse_results(clean_response)
60
+ end
61
+
62
+ # this function just queries for and returns a single package
63
+ def self.get_package(pattern)
64
+ get_packages(pattern, 0, 1).first
65
+ end
66
+
67
+ #this function queries for and returns a list of then open BUGS
68
+ def self.get_bugs(pattern, version='all', num=nil, start =0)
69
+ if BUGZILLA_RELEASEA[0][version].nil?
70
+ version = BUGZILLA_RELEASEA[0]['all']
71
+ else
72
+ version = BUGZILLA_RELEASEA[0][version]
73
+ end
74
+ num ||= total_rows(pattern, "bugs", BUGS_URL)
75
+
76
+ query = {"filters"=> {"package"=> pattern, "version"=> version}, "rows_per_page"=> num, "start_row"=> start}
77
+ url = BUGS_URL + "/" + query.to_json
78
+ uri = URI.parse(URI.escape(url))
79
+ response = submit_request(uri)
80
+ parse_results(response.body)
81
+ end
82
+
83
+ #this function queries for and returns a list of the BUILDS
84
+ def self.get_builds(pattern, state='all', num=nil, start =0)
85
+ if KOJI_BUILD_STATES[0][state].nil?
86
+ state = KOJI_BUILD_STATES[0]['all']
87
+ else
88
+ state = KOJI_BUILD_STATES[0][state]
89
+ end
90
+ num ||= total_rows(pattern, "builds", BUILDS_URL)
91
+ query = {"rows_per_page"=> num, "start_row"=> start, "filters"=> {"state"=> state, "package"=> pattern}}
92
+ url = BUILDS_URL + "/" + query.to_json
93
+ uri = URI.parse(URI.escape(url))
94
+ response = submit_request(uri)
95
+ parse_results(response.body)
96
+ end
97
+
44
98
  def self.search_params(gem)
45
99
  filters = { :package => package_name(gem) }
46
100
  { :filters => filters }
@@ -65,4 +119,20 @@ module Pkgwat
65
119
  results["rows"]
66
120
  end
67
121
 
122
+ private
123
+
124
+ def self.total_rows(pattern, type, type_url)
125
+ if type == "packages"
126
+ query = {"filters"=>{"search"=>pattern}, "rows_per_page"=>10, "start_row"=>0}
127
+ elsif type == "builds"
128
+ query = {"rows_per_page"=> 10, "start_row"=> 0, "filters"=> {"state"=> "", "package"=> pattern}}
129
+ elsif type == "bugs"
130
+ query = {"filters"=> {"package"=> pattern, "version"=> ""}, "rows_per_page"=> 10, "start_row"=> 0}
131
+ end
132
+ url = type_url + "/" + query.to_json
133
+ uri = URI.parse(URI.escape(url))
134
+ response = submit_request(uri)
135
+ JSON.parse(response.body)["total_rows"]
136
+ end
137
+
68
138
  end
@@ -1,3 +1,3 @@
1
1
  module Pkgwat
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/pkgwat.gemspec CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.add_dependency("rake")
20
20
  s.add_dependency("thor")
21
21
  s.add_dependency("json", "1.6.5")
22
+ s.add_dependency("sanitize")
22
23
 
23
24
  if RUBY_VERSION >= "1.9"
24
25
  s.add_development_dependency("debugger")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pkgwat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-22 00:00:00.000000000 Z
12
+ date: 2013-01-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -75,6 +75,22 @@ dependencies:
75
75
  - - '='
76
76
  - !ruby/object:Gem::Version
77
77
  version: 1.6.5
78
+ - !ruby/object:Gem::Dependency
79
+ name: sanitize
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
78
94
  - !ruby/object:Gem::Dependency
79
95
  name: debugger
80
96
  requirement: !ruby/object:Gem::Requirement
@@ -123,7 +139,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
123
139
  version: '0'
124
140
  segments:
125
141
  - 0
126
- hash: -98816147268201223
142
+ hash: -806542677671798657
127
143
  required_rubygems_version: !ruby/object:Gem::Requirement
128
144
  none: false
129
145
  requirements:
@@ -132,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
148
  version: '0'
133
149
  segments:
134
150
  - 0
135
- hash: -98816147268201223
151
+ hash: -806542677671798657
136
152
  requirements: []
137
153
  rubyforge_project: pkgwat
138
154
  rubygems_version: 1.8.24