rstack 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,10 @@
1
+ module RStack
2
+
3
+ require 'json'
4
+ require 'net/http'
5
+ require 'zlib'
6
+ require 'rstack/stack_exchange'
7
+
8
+ autoload :Badge, 'rstack/badge'
9
+
10
+ end
@@ -0,0 +1,19 @@
1
+ module RStack
2
+
3
+ class Badge
4
+
5
+ ATTRS = [:badge_id, :rank, :name, :description, :award_count, :tag_based, :badges_recipients_url]
6
+
7
+ attr_reader *ATTRS
8
+
9
+ def initialize(b)
10
+ b.each { |k, v| self.send("#{k}=", v) }
11
+ end
12
+
13
+ private
14
+
15
+ attr_writer *ATTRS
16
+
17
+ end
18
+
19
+ end
@@ -0,0 +1,32 @@
1
+ module RStack
2
+
3
+ class StackExchange
4
+
5
+ API_VERSION = '0.9'
6
+
7
+ # Create a new StackExchange object for interacting with the
8
+ # API for a given site
9
+ # +api_host+ The API host to use (ie: 'api.stackoverflow.com')
10
+ def initialize(api_host, api_port = 80)
11
+ @api_host = api_host
12
+ @api_port = api_port
13
+ end
14
+
15
+ # Get all badges for this StackExchange, in alphabetical order
16
+ def badges
17
+ response = Net::HTTP.get_response(@api_host, "/#{API_VERSION}/badges", @api_port)
18
+ body = inflate_string(response.body)
19
+ # TODO error handling
20
+ JSON.parse(body)['badges'].map { |b| Badge.new(b) }
21
+ end
22
+
23
+ private
24
+
25
+ def inflate_string(string)
26
+ gz = Zlib::GzipReader.new(StringIO.new(string))
27
+ gz.read
28
+ end
29
+
30
+ end
31
+
32
+ end
@@ -0,0 +1,5 @@
1
+ module RStack
2
+
3
+ VERSION = '0.0.1'
4
+
5
+ end
metadata ADDED
@@ -0,0 +1,88 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rstack
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
+ - John Crepezzi
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-07-07 00:00:00 -04:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rspec
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ version: "0"
30
+ type: :development
31
+ version_requirements: *id001
32
+ - !ruby/object:Gem::Dependency
33
+ name: json
34
+ prerelease: false
35
+ requirement: &id002 !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ segments:
40
+ - 0
41
+ version: "0"
42
+ type: :runtime
43
+ version_requirements: *id002
44
+ description: rstack is a Ruby wrapper for the Stack Exchange API
45
+ email: john@crepezzi.com
46
+ executables: []
47
+
48
+ extensions: []
49
+
50
+ extra_rdoc_files: []
51
+
52
+ files:
53
+ - lib/rstack/badge.rb
54
+ - lib/rstack/stack_exchange.rb
55
+ - lib/rstack/version.rb
56
+ - lib/rstack.rb
57
+ has_rdoc: true
58
+ homepage: http://seejohnrun.github.com/rstack/
59
+ licenses: []
60
+
61
+ post_install_message:
62
+ rdoc_options: []
63
+
64
+ require_paths:
65
+ - lib
66
+ required_ruby_version: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ segments:
71
+ - 0
72
+ version: "0"
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ segments:
78
+ - 0
79
+ version: "0"
80
+ requirements: []
81
+
82
+ rubyforge_project: rstack
83
+ rubygems_version: 1.3.6
84
+ signing_key:
85
+ specification_version: 3
86
+ summary: Ruby Stack Exchange API Wrapper
87
+ test_files: []
88
+