metric 0.0.7 → 0.0.8

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.rb CHANGED
@@ -18,16 +18,18 @@ module Metric
18
18
 
19
19
  # Tracks metrics
20
20
  #
21
- # @param [String, Hash]
22
- # @return [nil]
21
+ # @param [String] metric Metric identifier
22
+ # @param [Hash] options Options
23
+ # @return [Hash] API Response
23
24
  def track(metric, options = {})
24
25
  Metric::Track.track(metric, options)
25
26
  end
26
27
 
27
28
  # Fetches data from the API
28
29
  #
29
- # @param [String, String]
30
- # @return [Hash]
30
+ # @param [String] metric Metric identifier
31
+ # @param [String] range Range identifier, either total, today, week or month
32
+ # @return [Hash] API Response
31
33
  def receive(metric, range)
32
34
  Metric::Receive.receive(metric, range)
33
35
  end
@@ -16,7 +16,7 @@ module Metric
16
16
 
17
17
  # Sets defaults
18
18
  def initialize
19
- @metric_host = "http://api.metric.io"
19
+ @metric_host = "https://api.metric.io"
20
20
  end
21
21
  end
22
22
  end
data/lib/metric/track.rb CHANGED
@@ -8,17 +8,23 @@ module Metric
8
8
  # @param [String] metric Metric identifier
9
9
  # @param [Hash] options Options
10
10
  # @option options [Symbol] :amount Amount to track
11
+ # @option options [Symbol] :date Override the default date (today)
12
+ # @option options [Symbol] :meta Pass in custom meta data about the metric
11
13
  # @option options [Symbol] :trigger Flag for email notification
12
14
  # @return [String]
13
15
  def self.compose(metric, options = {})
14
16
  amount = options[:amount]
15
17
  trigger = options[:trigger]
18
+ date = options[:date]
19
+ meta = options[:meta]
16
20
 
17
21
  key = "?api_key=" + Metric.configuration.api_key
18
22
  url = Metric.configuration.metric_host + '/track'
19
23
  url << key
20
- url << parse_metric(metric)
24
+ url << "&metric=#{CGI.escape(metric)}"
21
25
  url << "&amount=#{amount}" if amount
26
+ url << "&date=#{date}" if date
27
+ url << "&meta=#{CGI.escape(meta)}" if meta
22
28
  url << "&trigger=1" if trigger
23
29
  url
24
30
  end
@@ -36,6 +42,8 @@ module Metric
36
42
  end
37
43
  end
38
44
 
45
+ private
46
+
39
47
  # Check if Rails or Rack env is production, or amount is 0
40
48
  def self.quit_early?(options)
41
49
  return true if defined?(Rails) && !Rails.env.production?
@@ -43,13 +51,5 @@ module Metric
43
51
  return true if options[:amount] && options[:amount] == 0
44
52
  false
45
53
  end
46
-
47
- # CGI escape the metric name so spaces and characters are allowed
48
- #
49
- # @param [String]
50
- # @return [String]
51
- def self.parse_metric(metric)
52
- "&metric=#{CGI.escape(metric)}"
53
- end
54
54
  end
55
55
  end
@@ -1,3 +1,3 @@
1
1
  module Metric
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -9,14 +9,14 @@ describe Metric::Configuration do
9
9
  Metric.configure do |config|
10
10
  config.api_key = "test"
11
11
  end
12
- Metric.configuration.metric_host.should == "http://api.metric.io"
12
+ Metric.configuration.metric_host.should == "https://api.metric.io"
13
13
  end
14
14
 
15
15
  it "configures metric host" do
16
16
  Metric.configure do |config|
17
- config.metric_host = "http://localhost:5000"
17
+ config.metric_host = "https://localhost:5000"
18
18
  end
19
- Metric.configuration.metric_host.should == "http://localhost:5000"
19
+ Metric.configuration.metric_host.should == "https://localhost:5000"
20
20
  end
21
21
 
22
22
  it "configures api_key" do
@@ -5,30 +5,32 @@ describe Metric::Receive do
5
5
  Metric::Receive.generate_token("hits").should == "c6daa87bcf8bf7cb4d1c74d872793e5e"
6
6
  end
7
7
 
8
- it "gets total" do
9
- request = "http://api.metric.io/receive?api_key=spec&token=c6daa87bcf8bf7cb4d1c74d872793e5e&metric=hits&range=total"
10
- Metric::Receive.compose("hits", "total").should == request
11
- end
8
+ context "generating correct url" do
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
12
+ end
12
13
 
13
- it "gets today" do
14
- request = "http://api.metric.io/receive?api_key=spec&token=c6daa87bcf8bf7cb4d1c74d872793e5e&metric=hits&range=today"
15
- Metric::Receive.compose("hits", "today").should == request
16
- end
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
17
+ end
17
18
 
18
- it "gets week" do
19
- request = "http://api.metric.io/receive?api_key=spec&token=c6daa87bcf8bf7cb4d1c74d872793e5e&metric=hits&range=week"
20
- Metric::Receive.compose("hits", "week").should == request
21
- end
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
22
+ end
22
23
 
23
- it "gets month" do
24
- request = "http://api.metric.io/receive?api_key=spec&token=c6daa87bcf8bf7cb4d1c74d872793e5e&metric=hits&range=month"
25
- Metric::Receive.compose("hits", "month").should == request
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
27
+ end
26
28
  end
27
29
 
28
30
  it "grabs actual data" do
29
- stub_request(:get, "http://api.metric.io/receive?api_key=spec&metric=hits&range=today&token=c6daa87bcf8bf7cb4d1c74d872793e5e").
31
+ stub_request(:get, "https://api.metric.io/receive?api_key=spec&metric=hits&range=total&token=c6daa87bcf8bf7cb4d1c74d872793e5e").
30
32
  to_return(:status => 200, :body => "{\"total\":\"1\"}", :headers => {})
31
- Metric::Receive.receive("hits", "today").should == {"total" => "1"}
33
+ Metric::Receive.receive("hits", "total").should == {"total" => "1"}
32
34
  end
33
35
  end
34
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 == "http://api.metric.io/track?api_key=spec&metric=hits"
5
+ Metric::Track.compose("hits").should == "https://api.metric.io/track?api_key=spec&metric=hits"
6
6
  end
7
7
 
8
8
  it "gets correct url when tracking" do
@@ -11,23 +11,34 @@ describe Metric::Track do
11
11
  Metric::Track.track("hits")
12
12
  end
13
13
 
14
- it "encodes the request url" do
15
- Metric::Track.parse_metric("hits and spaces").should == "&metric=hits+and+spaces"
16
- end
17
-
18
- it "sends trigger param" do
19
- url = "http://api.metric.io/track?api_key=spec&metric=hits&trigger=1"
20
- Metric::Track.compose("hits", {:trigger => true}).should == url
14
+ it "encodes the input" do
15
+ url = "https://api.metric.io/track?api_key=spec&metric=hits+and+spaces"
16
+ Metric::Track.compose("hits and spaces").should == url
21
17
  end
22
18
 
23
19
  it "sends custom amount" do
24
- url = "http://api.metric.io/track?api_key=spec&metric=hits&amount=42"
25
- Metric::Track.compose("hits", {:amount => 42}).should == url
20
+ url = "https://api.metric.io/track?api_key=spec&metric=hits&amount=42"
21
+ Metric::Track.compose("hits", :amount => 42).should == url
26
22
  end
27
23
 
28
24
  it "does nothing if amount is 0" do
29
- Metric::Track.track("hits", {:amount => 0}).should == nil
25
+ Metric::Track.should_not_receive(:compose)
26
+ Metric::Track.track("hits", :amount => 0)
27
+ end
28
+
29
+ it "passes in custom date" do
30
+ url = "https://api.metric.io/track?api_key=spec&metric=hits&date=20120101"
31
+ Metric::Track.compose("hits", :date => "20120101").should == url
30
32
  end
31
- end
32
33
 
34
+ it "passes in meta information" do
35
+ url = "https://api.metric.io/track?api_key=spec&metric=payment&meta=userid%3A+1"
36
+ Metric::Track.compose("payment", :meta => "userid: 1").should == url
37
+ end
38
+
39
+ it "sends trigger param" do
40
+ url = "https://api.metric.io/track?api_key=spec&metric=hits&trigger=1"
41
+ Metric::Track.compose("hits", :trigger => true).should == url
42
+ end
43
+ end
33
44
 
metadata CHANGED
@@ -1,72 +1,93 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: metric
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.7
3
+ version: !ruby/object:Gem::Version
4
+ hash: 15
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 8
10
+ version: 0.0.8
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Mark Mulder
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2011-09-26 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2012-02-22 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
15
22
  name: faraday
16
- requirement: &2152308620 !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
17
25
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
22
33
  type: :runtime
23
- prerelease: false
24
- version_requirements: *2152308620
25
- - !ruby/object:Gem::Dependency
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
26
36
  name: multi_json
27
- requirement: &2161467860 !ruby/object:Gem::Requirement
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
28
39
  none: false
29
- requirements:
30
- - - ! '>='
31
- - !ruby/object:Gem::Version
32
- version: '0'
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
33
47
  type: :runtime
34
- prerelease: false
35
- version_requirements: *2161467860
36
- - !ruby/object:Gem::Dependency
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
37
50
  name: rspec
38
- requirement: &2161467000 !ruby/object:Gem::Requirement
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
39
53
  none: false
40
- requirements:
41
- - - ! '>='
42
- - !ruby/object:Gem::Version
43
- version: '0'
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
44
61
  type: :development
45
- prerelease: false
46
- version_requirements: *2161467000
47
- - !ruby/object:Gem::Dependency
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
48
64
  name: webmock
49
- requirement: &2161465040 !ruby/object:Gem::Requirement
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
50
67
  none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ hash: 3
72
+ segments:
73
+ - 0
74
+ version: "0"
55
75
  type: :development
56
- prerelease: false
57
- version_requirements: *2161465040
76
+ version_requirements: *id004
58
77
  description: Track metrics via metric.io
59
- email:
78
+ email:
60
79
  - markmulder@gmail.com
61
80
  executables: []
81
+
62
82
  extensions: []
83
+
63
84
  extra_rdoc_files: []
64
- files:
85
+
86
+ files:
65
87
  - .gitignore
66
88
  - .rspec
67
89
  - .travis.yml
68
90
  - Gemfile
69
- - Gemfile.lock
70
91
  - README.markdown
71
92
  - Rakefile
72
93
  - lib/metric.rb
@@ -80,31 +101,41 @@ files:
80
101
  - spec/metric/track_spec.rb
81
102
  - spec/metric_spec.rb
82
103
  - spec/spec_helper.rb
104
+ has_rdoc: true
83
105
  homepage: http://github.com/bittersweet/metric
84
106
  licenses: []
107
+
85
108
  post_install_message:
86
109
  rdoc_options: []
87
- require_paths:
110
+
111
+ require_paths:
88
112
  - lib
89
- required_ruby_version: !ruby/object:Gem::Requirement
113
+ required_ruby_version: !ruby/object:Gem::Requirement
90
114
  none: false
91
- requirements:
92
- - - ! '>='
93
- - !ruby/object:Gem::Version
94
- version: '0'
95
- required_rubygems_version: !ruby/object:Gem::Requirement
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
96
123
  none: false
97
- requirements:
98
- - - ! '>='
99
- - !ruby/object:Gem::Version
100
- version: '0'
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ hash: 3
128
+ segments:
129
+ - 0
130
+ version: "0"
101
131
  requirements: []
132
+
102
133
  rubyforge_project:
103
- rubygems_version: 1.8.10
134
+ rubygems_version: 1.4.2
104
135
  signing_key:
105
136
  specification_version: 3
106
137
  summary: Companion gem to the metric.io site to track metrics
107
- test_files:
138
+ test_files:
108
139
  - spec/metric/configuration_spec.rb
109
140
  - spec/metric/receive_spec.rb
110
141
  - spec/metric/track_spec.rb