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.
@@ -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
- key = "?api_key=" + Metric.configuration.api_key
25
- url = Metric.configuration.protocol + "://" + Metric.configuration.host + '/receive'
26
- url << key
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
- "&metric=#{CGI.escape(metric)}"
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
- key = "?api_key=" + Metric.configuration.api_key
22
- url = Metric.configuration.protocol + "://" + Metric.configuration.host + '/track'
23
- url << key
24
- url << "&metric=#{CGI.escape(metric)}"
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
@@ -1,3 +1,3 @@
1
1
  module Metric
2
- VERSION = "0.0.9"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -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 == "c6daa87bcf8bf7cb4d1c74d872793e5e"
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
- request = "https://api.metric.io/receive?api_key=spec&token=c6daa87bcf8bf7cb4d1c74d872793e5e&metric=hits&range=total"
11
- Metric::Receive.compose("hits", "total").should == request
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
- request = "https://api.metric.io/receive?api_key=spec&token=c6daa87bcf8bf7cb4d1c74d872793e5e&metric=hits&range=today"
16
- Metric::Receive.compose("hits", "today").should == request
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
- request = "https://api.metric.io/receive?api_key=spec&token=c6daa87bcf8bf7cb4d1c74d872793e5e&metric=hits&range=week"
21
- Metric::Receive.compose("hits", "week").should == request
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
- request = "https://api.metric.io/receive?api_key=spec&token=c6daa87bcf8bf7cb4d1c74d872793e5e&metric=hits&range=month"
26
- Metric::Receive.compose("hits", "month").should == request
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/receive?api_key=spec&metric=hits&range=total&token=c6daa87bcf8bf7cb4d1c74d872793e5e").
32
- to_return(:status => 200, :body => "{\"total\":\"1\"}", :headers => {})
33
- Metric::Receive.receive("hits", "total").should == {"total" => "1"}
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
 
@@ -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?api_key=spec&metric=hits"
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?api_key=spec&metric=hits"
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
- url = "https://api.metric.io/track?api_key=spec&metric=hits+and+spaces"
23
- Metric::Track.compose("hits and spaces").should == url
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
- url = "https://api.metric.io/track?api_key=spec&metric=hits&amount=42"
28
- Metric::Track.compose("hits", :amount => 42).should == url
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
- url = "https://api.metric.io/track?api_key=spec&metric=hits&date=20120101"
38
- Metric::Track.compose("hits", :date => "20120101").should == url
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
- url = "https://api.metric.io/track?api_key=spec&metric=payment&meta=userid%3A+1"
43
- Metric::Track.compose("payment", :meta => "userid: 1").should == url
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
- url = "https://api.metric.io/track?api_key=spec&metric=hits&trigger=1"
48
- Metric::Track.compose("hits", :trigger => true).should == url
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
- hash: 13
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
- date: 2012-02-22 00:00:00 +01:00
19
- default_executable:
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
- prerelease: false
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
- hash: 3
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
- requirement: &id002 !ruby/object:Gem::Requirement
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
- hash: 3
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
- requirement: &id003 !ruby/object:Gem::Requirement
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
- hash: 3
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
- requirement: &id004 !ruby/object:Gem::Requirement
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
- hash: 3
72
- segments:
73
- - 0
74
- version: "0"
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
75
70
  type: :development
76
- version_requirements: *id004
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
- hash: 3
119
- segments:
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
- hash: 3
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.4.2
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