apc-report-parser 0.0.1

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.
@@ -0,0 +1,2 @@
1
+ == 0.0.1
2
+ * Initial Release
data/LICENSE ADDED
@@ -0,0 +1,14 @@
1
+ Copyright (C) 2010 3Crowd Technologies, Inc.
2
+
3
+ This program is free software: you can redistribute it and/or modify
4
+ it under the terms of the GNU General Public License as published by
5
+ the Free Software Foundation, either version 3 of the License, or
6
+ (at your option) any later version.
7
+
8
+ This program is distributed in the hope that it will be useful,
9
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ GNU General Public License for more details.
12
+
13
+ You should have received a copy of the GNU General Public License
14
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
data/README ADDED
@@ -0,0 +1,9 @@
1
+ == README for APC Report Parser Library
2
+ The APC Report Parser Library scrapes basic APC (Advanced PHP Cache) information
3
+ from the apc.php information page provided by recent versions of APC.
4
+
5
+ === Requirements
6
+ * Nokogiri
7
+ * Net/HTTP
8
+ * URI
9
+ * Choice
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'choice'
4
+ require 'apc-report-parser'
5
+
6
+ Choice.options do
7
+ option :uri do
8
+ short '-u'
9
+ long '--uri=URI'
10
+ desc 'The uri from which to retrieve content to parse'
11
+ end
12
+ end
13
+
14
+ opts = Choice.choices
15
+
16
+ apc_stats_report = APCStatsReport.new(opts[:uri])
17
+
18
+ require 'pp'
19
+ pp apc_stats_report.report
20
+
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'uri'
4
+ require 'net/http'
5
+ require 'nokogiri'
6
+
7
+ class ReportNotInitializedError < StandardError
8
+ end
9
+
10
+ # The loader and parser should be factored out, but this is good enough for now
11
+ class APCStatsReport
12
+
13
+ def initialize(uri="http://localhost:80/apc.php", lazy_load=true)
14
+ @uri = URI.parse(uri)
15
+ @lazy_load = lazy_load
16
+ end
17
+
18
+ def retrieve_report!
19
+ resource = Net::HTTP.start(@uri.host, @uri.port) do |http|
20
+ http.get(@uri.path)
21
+ end
22
+ @report = parse_resource_into_report(resource)
23
+ end
24
+
25
+ def report
26
+ if @report.nil?
27
+ raise ReportNotInitializedError unless @lazy_load
28
+ retrieve_report!
29
+ end
30
+ @report
31
+ end
32
+
33
+ private
34
+
35
+ def parse_resource_into_report(resource)
36
+ document = Nokogiri::HTML(resource.body)
37
+ headers = extract_headers(document)
38
+ report = headers.inject(Hash.new) do |results, header|
39
+ results[header.text] = extract_substats(header)
40
+ results
41
+ end
42
+ return report
43
+ end
44
+
45
+ def extract_headers(document)
46
+ document.css('body div.content div.info h2')
47
+ end
48
+
49
+ def extract_substats(header)
50
+ header.parent.children.css('tr').inject(Hash.new) do |substats, row|
51
+ label = row.children[0]
52
+ data = row.children[1]
53
+ substats[label.text] = data.text
54
+ substats
55
+ end
56
+ end
57
+ end
metadata ADDED
@@ -0,0 +1,98 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: apc-report-parser
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - 3Crowd Technologies, Inc.
13
+ - Justin Lynn
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-09-28 00:00:00 -07:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: choice
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ - 1
31
+ - 4
32
+ version: 0.1.4
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: nokogiri
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ segments:
43
+ - 1
44
+ - 4
45
+ - 3
46
+ - 1
47
+ version: 1.4.3.1
48
+ type: :runtime
49
+ version_requirements: *id002
50
+ description: Parses APC (Advanced PHP Cache) HTML status output from apc.php, included in a recent versions of PHP, into a data structure that is usable by ruby.
51
+ email:
52
+ - eng@3crowd.com
53
+ executables:
54
+ - parse-apc-report
55
+ extensions: []
56
+
57
+ extra_rdoc_files: []
58
+
59
+ files:
60
+ - bin/parse-apc-report
61
+ - lib/apc-report-parser.rb
62
+ - LICENSE
63
+ - README
64
+ - CHANGELOG
65
+ has_rdoc: true
66
+ homepage: http://github.com/3Crowd/apc-report-parser
67
+ licenses: []
68
+
69
+ post_install_message:
70
+ rdoc_options: []
71
+
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ segments:
79
+ - 0
80
+ version: "0"
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ segments:
86
+ - 1
87
+ - 3
88
+ - 6
89
+ version: 1.3.6
90
+ requirements: []
91
+
92
+ rubyforge_project:
93
+ rubygems_version: 1.3.6
94
+ signing_key:
95
+ specification_version: 3
96
+ summary: Parses APC HTML status output from apc.php
97
+ test_files: []
98
+