metric 0.0.9 → 0.1.0
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/lib/metric/receive.rb +8 -8
- data/lib/metric/track.rb +4 -4
- data/lib/metric/version.rb +1 -1
- data/spec/metric/receive_spec.rb +12 -12
- data/spec/metric/track_spec.rb +12 -12
- metadata +73 -85
data/lib/metric/receive.rb
CHANGED
@@ -11,8 +11,8 @@ module Metric
|
|
11
11
|
#
|
12
12
|
# @param [String] metric Metric identifier
|
13
13
|
# @return [String]
|
14
|
-
def self.generate_token(metric)
|
15
|
-
Digest::MD5.hexdigest(Metric.configuration.secret_key + metric)
|
14
|
+
def self.generate_token(metric, range)
|
15
|
+
Digest::MD5.hexdigest(Metric.configuration.secret_key + metric + range)
|
16
16
|
end
|
17
17
|
|
18
18
|
# Generate the url with query strings
|
@@ -21,12 +21,12 @@ module Metric
|
|
21
21
|
# @param [String] range Range identifier, either total, today, week or month
|
22
22
|
# @return [String]
|
23
23
|
def self.compose(metric, range)
|
24
|
-
|
25
|
-
url = Metric.configuration.protocol + "://" + Metric.configuration.host
|
26
|
-
url <<
|
27
|
-
url << "&token=" + generate_token(metric)
|
24
|
+
api_key = Metric.configuration.api_key
|
25
|
+
url = Metric.configuration.protocol + "://" + Metric.configuration.host
|
26
|
+
url << "/v1/sites/#{api_key}/statistics"
|
28
27
|
url << parse_metric(metric)
|
29
28
|
url << "&range=" + range
|
29
|
+
url << "&token=" + generate_token(metric, range)
|
30
30
|
end
|
31
31
|
|
32
32
|
# Returns and memoizes a Faraday connection
|
@@ -46,7 +46,7 @@ module Metric
|
|
46
46
|
def self.receive(metric, range)
|
47
47
|
url = compose(metric, range)
|
48
48
|
response = connection.get(url)
|
49
|
-
MultiJson.decode(response.body)
|
49
|
+
MultiJson.decode(response.body)[range]
|
50
50
|
end
|
51
51
|
|
52
52
|
# CGI escape the metric name so spaces and characters are allowed
|
@@ -54,7 +54,7 @@ module Metric
|
|
54
54
|
# @param [String] metric Metric identifier
|
55
55
|
# @return [String]
|
56
56
|
def self.parse_metric(metric)
|
57
|
-
"
|
57
|
+
"?metric=#{CGI.escape(metric)}"
|
58
58
|
end
|
59
59
|
end
|
60
60
|
end
|
data/lib/metric/track.rb
CHANGED
@@ -18,10 +18,10 @@ module Metric
|
|
18
18
|
date = options[:date]
|
19
19
|
meta = options[:meta]
|
20
20
|
|
21
|
-
|
22
|
-
url = Metric.configuration.protocol + "://" + Metric.configuration.host
|
23
|
-
url <<
|
24
|
-
url << "
|
21
|
+
api_key = Metric.configuration.api_key
|
22
|
+
url = Metric.configuration.protocol + "://" + Metric.configuration.host
|
23
|
+
url << "/v1/sites/#{api_key}/track"
|
24
|
+
url << "?metric=#{CGI.escape(metric)}"
|
25
25
|
url << "&amount=#{amount}" if amount
|
26
26
|
url << "&date=#{date}" if date
|
27
27
|
url << "&meta=#{CGI.escape(meta)}" if meta
|
data/lib/metric/version.rb
CHANGED
data/spec/metric/receive_spec.rb
CHANGED
@@ -2,35 +2,35 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Metric::Receive do
|
4
4
|
it "generates correct hash via secret_token" do
|
5
|
-
Metric::Receive.generate_token("hits").should == "
|
5
|
+
Metric::Receive.generate_token("hits", "week").should == "47639a31c68c36a3406870dfff900679"
|
6
6
|
end
|
7
7
|
|
8
8
|
context "generating correct url" do
|
9
9
|
it "total" do
|
10
|
-
|
11
|
-
Metric::Receive.compose("hits", "total").should ==
|
10
|
+
result = "https://api.metric.io/v1/sites/spec/statistics?metric=hits&range=total&token=e66652e1c3e7fdda10d6fb97cb279622"
|
11
|
+
Metric::Receive.compose("hits", "total").should == result
|
12
12
|
end
|
13
13
|
|
14
14
|
it "today" do
|
15
|
-
|
16
|
-
Metric::Receive.compose("hits", "today").should ==
|
15
|
+
result = "https://api.metric.io/v1/sites/spec/statistics?metric=hits&range=today&token=1650709162cd5e699e079e14f8e1decc"
|
16
|
+
Metric::Receive.compose("hits", "today").should == result
|
17
17
|
end
|
18
18
|
|
19
19
|
it "week" do
|
20
|
-
|
21
|
-
Metric::Receive.compose("hits", "week").should ==
|
20
|
+
result = "https://api.metric.io/v1/sites/spec/statistics?metric=hits&range=week&token=47639a31c68c36a3406870dfff900679"
|
21
|
+
Metric::Receive.compose("hits", "week").should == result
|
22
22
|
end
|
23
23
|
|
24
24
|
it "month" do
|
25
|
-
|
26
|
-
Metric::Receive.compose("hits", "month").should ==
|
25
|
+
result = "https://api.metric.io/v1/sites/spec/statistics?metric=hits&range=month&token=f66049db427350067ed60fb6c986d687"
|
26
|
+
Metric::Receive.compose("hits", "month").should == result
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
30
|
it "grabs actual data" do
|
31
|
-
stub_request(:get, "https://api.metric.io/
|
32
|
-
to_return(:status => 200, :body => "{\"total\"
|
33
|
-
Metric::Receive.receive("hits", "total").should ==
|
31
|
+
stub_request(:get, "https://api.metric.io/v1/sites/spec/statistics?metric=hits&range=total&token=e66652e1c3e7fdda10d6fb97cb279622").
|
32
|
+
to_return(:status => 200, :body => "{\"total\":1}", :headers => {})
|
33
|
+
Metric::Receive.receive("hits", "total").should == 1
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
data/spec/metric/track_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Metric::Track do
|
4
4
|
it "composes the request url" do
|
5
|
-
Metric::Track.compose("hits").should == "https://api.metric.io/track?
|
5
|
+
Metric::Track.compose("hits").should == "https://api.metric.io/v1/sites/spec/track?metric=hits"
|
6
6
|
end
|
7
7
|
|
8
8
|
it "gets correct url when tracking" do
|
@@ -15,17 +15,17 @@ describe Metric::Track do
|
|
15
15
|
Metric.configure do |config|
|
16
16
|
config.ssl = false
|
17
17
|
end
|
18
|
-
Metric::Track.compose("hits").should == "http://api.metric.io/track?
|
18
|
+
Metric::Track.compose("hits").should == "http://api.metric.io/v1/sites/spec/track?metric=hits"
|
19
19
|
end
|
20
20
|
|
21
21
|
it "encodes the input" do
|
22
|
-
|
23
|
-
Metric::Track.compose("hits and spaces").should ==
|
22
|
+
result = "https://api.metric.io/v1/sites/spec/track?metric=hits+and+spaces"
|
23
|
+
Metric::Track.compose("hits and spaces").should == result
|
24
24
|
end
|
25
25
|
|
26
26
|
it "sends custom amount" do
|
27
|
-
|
28
|
-
Metric::Track.compose("hits", :amount => 42).should ==
|
27
|
+
result = "https://api.metric.io/v1/sites/spec/track?metric=hits&amount=42"
|
28
|
+
Metric::Track.compose("hits", :amount => 42).should == result
|
29
29
|
end
|
30
30
|
|
31
31
|
it "does nothing if amount is 0" do
|
@@ -34,18 +34,18 @@ describe Metric::Track do
|
|
34
34
|
end
|
35
35
|
|
36
36
|
it "passes in custom date" do
|
37
|
-
|
38
|
-
Metric::Track.compose("hits", :date => "20120101").should ==
|
37
|
+
result = "https://api.metric.io/v1/sites/spec/track?metric=hits&date=20120101"
|
38
|
+
Metric::Track.compose("hits", :date => "20120101").should == result
|
39
39
|
end
|
40
40
|
|
41
41
|
it "passes in meta information" do
|
42
|
-
|
43
|
-
Metric::Track.compose("payment", :meta => "userid: 1").should ==
|
42
|
+
result = "https://api.metric.io/v1/sites/spec/track?metric=payment&meta=userid%3A+1"
|
43
|
+
Metric::Track.compose("payment", :meta => "userid: 1").should == result
|
44
44
|
end
|
45
45
|
|
46
46
|
it "sends trigger param" do
|
47
|
-
|
48
|
-
Metric::Track.compose("hits", :trigger => true).should ==
|
47
|
+
result = "https://api.metric.io/v1/sites/spec/track?metric=hits&trigger=1"
|
48
|
+
Metric::Track.compose("hits", :trigger => true).should == result
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
metadata
CHANGED
@@ -1,89 +1,87 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: metric
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 9
|
10
|
-
version: 0.0.9
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Mark Mulder
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-11-03 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: faraday
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
25
17
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
33
22
|
type: :runtime
|
34
|
-
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: multi_json
|
37
23
|
prerelease: false
|
38
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: multi_json
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
39
33
|
none: false
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
44
|
-
segments:
|
45
|
-
- 0
|
46
|
-
version: "0"
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
47
38
|
type: :runtime
|
48
|
-
version_requirements: *id002
|
49
|
-
- !ruby/object:Gem::Dependency
|
50
|
-
name: rspec
|
51
39
|
prerelease: false
|
52
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rspec
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
53
49
|
none: false
|
54
|
-
requirements:
|
55
|
-
- -
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
|
58
|
-
segments:
|
59
|
-
- 0
|
60
|
-
version: "0"
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
61
54
|
type: :development
|
62
|
-
version_requirements: *id003
|
63
|
-
- !ruby/object:Gem::Dependency
|
64
|
-
name: webmock
|
65
55
|
prerelease: false
|
66
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: webmock
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
67
65
|
none: false
|
68
|
-
requirements:
|
69
|
-
- -
|
70
|
-
- !ruby/object:Gem::Version
|
71
|
-
|
72
|
-
segments:
|
73
|
-
- 0
|
74
|
-
version: "0"
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
75
70
|
type: :development
|
76
|
-
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
77
78
|
description: Track metrics via metric.io
|
78
|
-
email:
|
79
|
+
email:
|
79
80
|
- markmulder@gmail.com
|
80
81
|
executables: []
|
81
|
-
|
82
82
|
extensions: []
|
83
|
-
|
84
83
|
extra_rdoc_files: []
|
85
|
-
|
86
|
-
files:
|
84
|
+
files:
|
87
85
|
- .gitignore
|
88
86
|
- .rspec
|
89
87
|
- .travis.yml
|
@@ -101,41 +99,31 @@ files:
|
|
101
99
|
- spec/metric/track_spec.rb
|
102
100
|
- spec/metric_spec.rb
|
103
101
|
- spec/spec_helper.rb
|
104
|
-
has_rdoc: true
|
105
102
|
homepage: http://github.com/bittersweet/metric
|
106
103
|
licenses: []
|
107
|
-
|
108
104
|
post_install_message:
|
109
105
|
rdoc_options: []
|
110
|
-
|
111
|
-
require_paths:
|
106
|
+
require_paths:
|
112
107
|
- lib
|
113
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
108
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
114
109
|
none: false
|
115
|
-
requirements:
|
116
|
-
- -
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
|
119
|
-
|
120
|
-
- 0
|
121
|
-
version: "0"
|
122
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ! '>='
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '0'
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
115
|
none: false
|
124
|
-
requirements:
|
125
|
-
- -
|
126
|
-
- !ruby/object:Gem::Version
|
127
|
-
|
128
|
-
segments:
|
129
|
-
- 0
|
130
|
-
version: "0"
|
116
|
+
requirements:
|
117
|
+
- - ! '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
131
120
|
requirements: []
|
132
|
-
|
133
121
|
rubyforge_project:
|
134
|
-
rubygems_version: 1.
|
122
|
+
rubygems_version: 1.8.23
|
135
123
|
signing_key:
|
136
124
|
specification_version: 3
|
137
125
|
summary: Companion gem to the metric.io site to track metrics
|
138
|
-
test_files:
|
126
|
+
test_files:
|
139
127
|
- spec/metric/configuration_spec.rb
|
140
128
|
- spec/metric/receive_spec.rb
|
141
129
|
- spec/metric/track_spec.rb
|