stathat 0.0.3 → 0.0.4

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.
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011 Patrick Crosby
1
+ Copyright (c) 2011-2012 Numerotron Inc
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.rdoc CHANGED
@@ -3,7 +3,7 @@
3
3
  Description goes here.
4
4
 
5
5
  == Contributing to stathat
6
-
6
+
7
7
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
8
8
  * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
9
9
  * Fork the project
@@ -14,6 +14,5 @@ Description goes here.
14
14
 
15
15
  == Copyright
16
16
 
17
- Copyright (c) 2011 Patrick Crosby. See LICENSE.txt for
18
- further details.
17
+ Copyright (c) 2011-2012 Numerotron Inc. See LICENSE.txt for further details.
19
18
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.0.4
data/lib/stathat.rb CHANGED
@@ -1,42 +1,73 @@
1
1
  require 'net/http'
2
2
  require 'uri'
3
+ require 'json'
3
4
 
4
5
  module StatHat
5
6
  class API
7
+ CLASSIC_VALUE_URL = "http://api.stathat.com/v"
8
+ CLASSIC_COUNT_URL = "http://api.stathat.com/c"
9
+ EZ_URL = "http://api.stathat.com/ez"
10
+
6
11
  def self.post_value(stat_key, user_key, value)
7
12
  args = { :key => stat_key,
8
13
  :ukey => user_key,
9
14
  :value => value }
10
- resp = Net::HTTP.post_form(URI.parse("http://api.stathat.com/v"), args)
11
- return self.response_valid?(resp)
15
+ return self.send_to_stathat(CLASSIC_VALUE_URL, args)
12
16
  end
13
17
 
14
18
  def self.post_count(stat_key, user_key, count)
15
19
  args = { :key => stat_key,
16
20
  :ukey => user_key,
17
- :value => value }
18
- resp = Net::HTTP.post_form(URI.parse("http://api.stathat.com/c"), args)
19
- return self.response_valid?(resp)
21
+ :value => count }
22
+ return self.send_to_stathat(CLASSIC_COUNT_URL, args)
20
23
  end
21
24
 
22
- def self.ez_post_value(stat_name, account_email, value)
23
- args = { :stat => stat_name,
24
- :email => account_email,
25
+ def self.ez_post_value(stat_name, ezkey, value)
26
+ args = { :stat => stat_name,
27
+ :ezkey => ezkey,
25
28
  :value => value }
26
- resp = Net::HTTP.post_form(URI.parse("http://api.stathat.com/ez"), args)
27
- return self.response_valid?(resp)
29
+ return self.send_to_stathat(EZ_URL, args)
28
30
  end
29
31
 
30
- def self.ez_post_count(stat_name, account_email, count)
31
- args = { :stat => stat_name,
32
- :email => account_email,
32
+ def self.ez_post_count(stat_name, ezkey, count)
33
+ args = { :stat => stat_name,
34
+ :ezkey => ezkey,
33
35
  :count => count }
34
- resp = Net::HTTP.post_form(URI.parse("http://api.stathat.com/ez"), args)
35
- return self.response_valid?(resp)
36
+ return self.send_to_stathat(EZ_URL, args)
37
+ end
38
+
39
+ def self.send_to_stathat(url, args)
40
+ uri = URI.parse(url)
41
+ uri.query = URI.encode_www_form(args)
42
+ resp = Net::HTTP.get(uri)
43
+ return Response.new(resp)
44
+ end
45
+ end
46
+
47
+ class Response
48
+ def initialize(body)
49
+ @body = body
50
+ @parsed = nil
51
+ end
52
+
53
+ def valid?
54
+ return status == 200
55
+ end
56
+
57
+ def status
58
+ parse
59
+ return @parsed['status']
60
+ end
61
+
62
+ def msg
63
+ parse
64
+ return @parsed['msg']
36
65
  end
37
66
 
38
- def self.response_valid?(response)
39
- return response.body == "ok"
67
+ private
68
+ def parse
69
+ return unless @parsed.nil?
70
+ @parsed = JSON.parse(@body)
40
71
  end
41
72
  end
42
73
  end
data/stathat.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{stathat}
8
- s.version = "0.0.3"
8
+ s.version = "0.0.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Patrick Crosby"]
12
- s.date = %q{2011-02-08}
12
+ s.date = %q{2012-05-17}
13
13
  s.description = %q{Easily post stats to your StatHat account using this gem. Encapsulates full API.}
14
14
  s.email = %q{patrick@xblabs.com}
15
15
  s.extra_rdoc_files = [
@@ -32,7 +32,7 @@ Gem::Specification.new do |s|
32
32
  s.homepage = %q{http://github.com/patrickxb/stathat}
33
33
  s.licenses = ["MIT"]
34
34
  s.require_paths = ["lib"]
35
- s.rubygems_version = %q{1.3.7}
35
+ s.rubygems_version = %q{1.5.0}
36
36
  s.summary = %q{gem to access StatHat api}
37
37
  s.test_files = [
38
38
  "test/helper.rb",
@@ -40,7 +40,6 @@ Gem::Specification.new do |s|
40
40
  ]
41
41
 
42
42
  if s.respond_to? :specification_version then
43
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
44
43
  s.specification_version = 3
45
44
 
46
45
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
data/test/test_stathat.rb CHANGED
@@ -1,7 +1,31 @@
1
1
  require 'helper'
2
2
 
3
3
  class TestStathat < MiniTest::Unit::TestCase
4
- def test_something_for_real
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
6
- end
4
+ def test_ez_value
5
+ r = StatHat::API.ez_post_value("test ez value stat", "patrick@stathat.com", 0.92)
6
+ assert(r.valid?, "response was invalid")
7
+ assert_equal(r.msg, "ok", "message should be 'ok'")
8
+ assert_equal(r.status, 200, "status should be 200")
9
+ end
10
+
11
+ def test_ez_count
12
+ r = StatHat::API.ez_post_value("test ez count stat", "patrick@stathat.com", 12)
13
+ assert(r.valid?, "response was invalid")
14
+ assert_equal(r.msg, "ok", "message should be 'ok'")
15
+ assert_equal(r.status, 200, "status should be 200")
16
+ end
17
+
18
+ def test_classic_count_bad_keys
19
+ r = StatHat::API.post_count("XXXXXXXX", "YYYYYYYY", 12)
20
+ assert_equal(r.valid?, false, "response was valid")
21
+ assert_equal(r.msg, "invalid keys", "incorrect error message")
22
+ assert_equal(r.status, 500, "incorrect status code")
23
+ end
24
+
25
+ def test_classic_value_bad_keys
26
+ r = StatHat::API.post_value("ZZZZZZZZ", "YYYYYYYYY", 0.92)
27
+ assert_equal(r.valid?, false, "response was valid")
28
+ assert_equal(r.msg, "invalid keys", "incorrect error message")
29
+ assert_equal(r.status, 500, "incorrect status code")
30
+ end
7
31
  end
metadata CHANGED
@@ -1,107 +1,81 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: stathat
3
- version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 0
9
- - 3
10
- version: 0.0.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
+ prerelease: !!null
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Patrick Crosby
14
- autorequire:
9
+ autorequire: !!null
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-02-08 00:00:00 -06:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- prerelease: false
23
- type: :development
12
+ date: 2012-05-17 00:00:00.000000000 -05:00
13
+ default_executable: !!null
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
24
16
  name: minitest
25
- version_requirements: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &2164726900 !ruby/object:Gem::Requirement
26
18
  none: false
27
- requirements:
28
- - - ">="
29
- - !ruby/object:Gem::Version
30
- hash: 3
31
- segments:
32
- - 0
33
- version: "0"
34
- requirement: *id001
35
- - !ruby/object:Gem::Dependency
36
- prerelease: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
37
23
  type: :development
24
+ prerelease: false
25
+ version_requirements: *2164726900
26
+ - !ruby/object:Gem::Dependency
38
27
  name: bundler
39
- version_requirements: &id002 !ruby/object:Gem::Requirement
28
+ requirement: &2164726240 !ruby/object:Gem::Requirement
40
29
  none: false
41
- requirements:
30
+ requirements:
42
31
  - - ~>
43
- - !ruby/object:Gem::Version
44
- hash: 23
45
- segments:
46
- - 1
47
- - 0
48
- - 0
32
+ - !ruby/object:Gem::Version
49
33
  version: 1.0.0
50
- requirement: *id002
51
- - !ruby/object:Gem::Dependency
52
- prerelease: false
53
34
  type: :development
35
+ prerelease: false
36
+ version_requirements: *2164726240
37
+ - !ruby/object:Gem::Dependency
54
38
  name: jeweler
55
- version_requirements: &id003 !ruby/object:Gem::Requirement
39
+ requirement: &2164725140 !ruby/object:Gem::Requirement
56
40
  none: false
57
- requirements:
41
+ requirements:
58
42
  - - ~>
59
- - !ruby/object:Gem::Version
60
- hash: 7
61
- segments:
62
- - 1
63
- - 5
64
- - 2
43
+ - !ruby/object:Gem::Version
65
44
  version: 1.5.2
66
- requirement: *id003
67
- - !ruby/object:Gem::Dependency
68
- prerelease: false
69
45
  type: :development
46
+ prerelease: false
47
+ version_requirements: *2164725140
48
+ - !ruby/object:Gem::Dependency
70
49
  name: rcov
71
- version_requirements: &id004 !ruby/object:Gem::Requirement
50
+ requirement: &2164724040 !ruby/object:Gem::Requirement
72
51
  none: false
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- hash: 3
77
- segments:
78
- - 0
79
- version: "0"
80
- requirement: *id004
81
- - !ruby/object:Gem::Dependency
82
- prerelease: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
83
56
  type: :development
57
+ prerelease: false
58
+ version_requirements: *2164724040
59
+ - !ruby/object:Gem::Dependency
84
60
  name: rocco
85
- version_requirements: &id005 !ruby/object:Gem::Requirement
61
+ requirement: &2164723120 !ruby/object:Gem::Requirement
86
62
  none: false
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- hash: 3
91
- segments:
92
- - 0
93
- version: "0"
94
- requirement: *id005
95
- description: Easily post stats to your StatHat account using this gem. Encapsulates full API.
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: *2164723120
70
+ description: Easily post stats to your StatHat account using this gem. Encapsulates
71
+ full API.
96
72
  email: patrick@xblabs.com
97
73
  executables: []
98
-
99
74
  extensions: []
100
-
101
- extra_rdoc_files:
75
+ extra_rdoc_files:
102
76
  - LICENSE.txt
103
77
  - README.rdoc
104
- files:
78
+ files:
105
79
  - .document
106
80
  - Gemfile
107
81
  - Gemfile.lock
@@ -115,38 +89,33 @@ files:
115
89
  - test/test_stathat.rb
116
90
  has_rdoc: true
117
91
  homepage: http://github.com/patrickxb/stathat
118
- licenses:
92
+ licenses:
119
93
  - MIT
120
- post_install_message:
94
+ post_install_message: !!null
121
95
  rdoc_options: []
122
-
123
- require_paths:
96
+ require_paths:
124
97
  - lib
125
- required_ruby_version: !ruby/object:Gem::Requirement
98
+ required_ruby_version: !ruby/object:Gem::Requirement
126
99
  none: false
127
- requirements:
128
- - - ">="
129
- - !ruby/object:Gem::Version
130
- hash: 3
131
- segments:
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ segments:
132
105
  - 0
133
- version: "0"
134
- required_rubygems_version: !ruby/object:Gem::Requirement
106
+ hash: 4543194583590350390
107
+ required_rubygems_version: !ruby/object:Gem::Requirement
135
108
  none: false
136
- requirements:
137
- - - ">="
138
- - !ruby/object:Gem::Version
139
- hash: 3
140
- segments:
141
- - 0
142
- version: "0"
109
+ requirements:
110
+ - - ! '>='
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
143
113
  requirements: []
144
-
145
- rubyforge_project:
146
- rubygems_version: 1.3.7
147
- signing_key:
114
+ rubyforge_project: !!null
115
+ rubygems_version: 1.5.0
116
+ signing_key: !!null
148
117
  specification_version: 3
149
118
  summary: gem to access StatHat api
150
- test_files:
119
+ test_files:
151
120
  - test/helper.rb
152
121
  - test/test_stathat.rb