mixpanel_client 1.0.0 → 1.0.1
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/README.md +6 -1
- data/Rakefile +1 -14
- data/lib/mixpanel_client/{mixpanel_client_uri.rb → uri.rb} +0 -0
- data/lib/mixpanel_client/version.rb +1 -1
- data/lib/mixpanel_client.rb +1 -1
- data/mixpanel_client.gemspec +3 -3
- data/spec/{events_externalspec.rb → mixpanel_client/events_externalspec.rb} +3 -4
- data/spec/{mixpanel_client_spec.rb → mixpanel_client/mixpanel_client_spec.rb} +8 -38
- data/spec/mixpanel_client/uri_spec.rb +29 -0
- metadata +25 -17
data/README.md
CHANGED
@@ -28,8 +28,13 @@ Ruby access to the [Mixpanel](http://mixpanel.com/) web analytics tool.
|
|
28
28
|
|
29
29
|
## Changelog
|
30
30
|
|
31
|
+
### 1.0.1
|
32
|
+
* Minor housekeeping and organizing
|
33
|
+
* Refactored specs
|
34
|
+
|
31
35
|
### 1.0.0
|
32
|
-
* Changed "Mixpanel" class name to "MixpanelClient" to prevent naming collision in other
|
36
|
+
* Changed "Mixpanel" class name to "MixpanelClient" to prevent naming collision in other
|
37
|
+
libraries. [a710a84e8ba4b6f018b7](https://github.com/keolo/mixpanel_client/commit/a710a84e8ba4b6f018b7404ab9fabc8f08b4a4f3)
|
33
38
|
|
34
39
|
## Collaborators and Maintainers
|
35
40
|
[Keolo Keagy](http://github.com/keolo) (Author)
|
data/Rakefile
CHANGED
@@ -24,25 +24,12 @@ RSpec::Core::RakeTask.new(:rcov) do |spec|
|
|
24
24
|
spec.rcov = true
|
25
25
|
end
|
26
26
|
|
27
|
-
task :spec
|
28
|
-
|
29
|
-
begin
|
30
|
-
require 'cucumber/rake/task'
|
31
|
-
Cucumber::Rake::Task.new(:features)
|
32
|
-
|
33
|
-
task :features #=> :check_dependencies
|
34
|
-
rescue LoadError
|
35
|
-
task :features do
|
36
|
-
abort 'Cucumber is not available. In order to run features, you must: sudo gem install cucumber'
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
27
|
+
task :spec
|
40
28
|
task :default => :spec
|
41
29
|
|
42
30
|
require 'rake/rdoctask'
|
43
31
|
Rake::RDocTask.new do |rdoc|
|
44
32
|
version = File.exist?('VERSION') ? File.read('VERSION') : ''
|
45
|
-
|
46
33
|
rdoc.rdoc_dir = 'rdoc'
|
47
34
|
rdoc.title = "mixpanel_client #{version}"
|
48
35
|
rdoc.rdoc_files.include('README*')
|
File without changes
|
data/lib/mixpanel_client.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
require "#{File.dirname(__FILE__)}/mixpanel_client/mixpanel_client"
|
2
|
-
require "#{File.dirname(__FILE__)}/mixpanel_client/
|
2
|
+
require "#{File.dirname(__FILE__)}/mixpanel_client/uri"
|
data/mixpanel_client.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
20
|
s.require_paths = ['lib']
|
21
21
|
|
22
|
-
s.add_development_dependency('rspec')
|
23
|
-
s.add_development_dependency('webmock')
|
24
|
-
s.add_development_dependency('metric_fu')
|
22
|
+
s.add_development_dependency('rspec', '>=2.5.0')
|
23
|
+
s.add_development_dependency('webmock', '>=1.6.2')
|
24
|
+
s.add_development_dependency('metric_fu', '>=2.1.1')
|
25
25
|
end
|
@@ -1,16 +1,15 @@
|
|
1
|
-
require '
|
2
|
-
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
3
2
|
|
4
3
|
WebMock.allow_net_connect!
|
5
4
|
|
6
5
|
describe 'External calls to mixpanel' do
|
7
6
|
before :all do
|
8
|
-
config = YAML.load_file(File.dirname(__FILE__) + '
|
7
|
+
config = YAML.load_file(File.dirname(__FILE__) + '/../../config/mixpanel.yml')
|
9
8
|
config.should_not be_nil
|
10
9
|
@client = MixpanelClient.new(config)
|
11
10
|
end
|
12
11
|
|
13
|
-
|
12
|
+
context 'when requesting events' do
|
14
13
|
it 'should raise an error for bad requests' do
|
15
14
|
data = lambda {
|
16
15
|
@client.request do
|
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
require 'rubygems'
|
3
|
-
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
4
2
|
|
5
3
|
describe MixpanelClient do
|
6
4
|
before :all do
|
@@ -9,7 +7,7 @@ describe MixpanelClient do
|
|
9
7
|
@uri = Regexp.escape(MixpanelClient::BASE_URI)
|
10
8
|
end
|
11
9
|
|
12
|
-
|
10
|
+
context 'when making an invalid request' do
|
13
11
|
it 'should return an argument error "Wrong number of arguments" if using the deprecated usage' do
|
14
12
|
# Stub Mixpanel request
|
15
13
|
stub_request(:get, /^#{@uri}.*/).to_return(:body => '{"legend_size": 0, "data": {"series": [], "values": {}}}')
|
@@ -19,12 +17,11 @@ describe MixpanelClient do
|
|
19
17
|
:unit => 'hour',
|
20
18
|
:interval => 24
|
21
19
|
})}
|
22
|
-
|
23
20
|
data.should raise_error(ArgumentError)
|
24
21
|
end
|
25
22
|
end
|
26
23
|
|
27
|
-
|
24
|
+
context 'when making a valid request' do
|
28
25
|
it 'should work without an endpoint' do
|
29
26
|
# Stub Mixpanel request
|
30
27
|
stub_request(:get, /^#{@uri}.*/).to_return(:body => '{"legend_size": 0, "data": {"series": [], "values": {}}}')
|
@@ -67,20 +64,20 @@ describe MixpanelClient do
|
|
67
64
|
|
68
65
|
describe '#hash_args' do
|
69
66
|
it 'should return a hashed string alpha sorted by key names.' do
|
70
|
-
args = {:c => 'see', :a => '
|
71
|
-
args_alpha_sorted = {:a => '
|
67
|
+
args = {:c => 'see', :a => 'ey', :d => 'dee', :b => 'bee'}
|
68
|
+
args_alpha_sorted = {:a => 'ey', :b => 'bee', :c => 'see', :d => 'dee'}
|
72
69
|
@client.generate_signature(args).should == @client.generate_signature(args_alpha_sorted)
|
73
70
|
end
|
74
71
|
end
|
75
72
|
|
76
73
|
describe '#to_hash' do
|
77
74
|
it 'should return a ruby hash given json as a string' do
|
78
|
-
@client.to_hash('{"a" : "
|
75
|
+
@client.to_hash('{"a" : "ey", "b" : "bee"}').should == {'a' => 'ey', 'b' => 'bee'}
|
79
76
|
end
|
80
77
|
end
|
81
78
|
|
82
|
-
|
83
|
-
it '
|
79
|
+
context 'when resetting options for each request' do
|
80
|
+
it 'should reset options before each request' do
|
84
81
|
# Stub Mixpanel request
|
85
82
|
stub_request(:get, /^#{@uri}.*/).to_return(:body => '{"events": [], "type": "general"}')
|
86
83
|
|
@@ -111,30 +108,3 @@ describe MixpanelClient do
|
|
111
108
|
end
|
112
109
|
end
|
113
110
|
end
|
114
|
-
|
115
|
-
describe MixpanelClient::URI do
|
116
|
-
describe '.mixpanel' do
|
117
|
-
it 'should return a properly formatted mixpanel uri as a string (without an endpoint)' do
|
118
|
-
resource, params = ['events', {:c => 'see', :a => 'aye'}]
|
119
|
-
MixpanelClient::URI.mixpanel(resource, params).should == 'http://mixpanel.com/api/2.0/events?a=aye&c=see'
|
120
|
-
end
|
121
|
-
it 'should return a properly formatted mixpanel uri as a string (with an endpoint)' do
|
122
|
-
resource, params = ['events/top', {:c => 'see', :a => 'aye'}]
|
123
|
-
MixpanelClient::URI.mixpanel(resource, params).should == 'http://mixpanel.com/api/2.0/events/top?a=aye&c=see'
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
describe '.encode' do
|
128
|
-
it 'should return a string with url encoded values.' do
|
129
|
-
params = {:hey => '!@#$%^&*()\/"Ü', :soo => "hëllö?"}
|
130
|
-
MixpanelClient::URI.encode(params).should == 'hey=%21%40%23%24%25%5E%26%2A%28%29%5C%2F%22%C3%9C&soo=h%C3%ABll%C3%B6%3F'
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
describe '.get' do
|
135
|
-
it 'should return a string response' do
|
136
|
-
stub_request(:get, 'http://example.com').to_return(:body => 'something')
|
137
|
-
MixpanelClient::URI.get('http://example.com').should == 'something'
|
138
|
-
end
|
139
|
-
end
|
140
|
-
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
3
|
+
|
4
|
+
describe MixpanelClient::URI do
|
5
|
+
describe '.mixpanel' do
|
6
|
+
it 'should return a properly formatted mixpanel uri as a string (without an endpoint)' do
|
7
|
+
resource, params = ['events', {:c => 'see', :a => 'ey'}]
|
8
|
+
MixpanelClient::URI.mixpanel(resource, params).should == 'http://mixpanel.com/api/2.0/events?a=ey&c=see'
|
9
|
+
end
|
10
|
+
it 'should return a properly formatted mixpanel uri as a string (with an endpoint)' do
|
11
|
+
resource, params = ['events/top', {:c => 'see', :a => 'ey'}]
|
12
|
+
MixpanelClient::URI.mixpanel(resource, params).should == 'http://mixpanel.com/api/2.0/events/top?a=ey&c=see'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '.encode' do
|
17
|
+
it 'should return a string with url encoded values.' do
|
18
|
+
params = {:hey => '!@#$%^&*()\/"Ü', :soo => "hëllö?"}
|
19
|
+
MixpanelClient::URI.encode(params).should == 'hey=%21%40%23%24%25%5E%26%2A%28%29%5C%2F%22%C3%9C&soo=h%C3%ABll%C3%B6%3F'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '.get' do
|
24
|
+
it 'should return a string response' do
|
25
|
+
stub_request(:get, 'http://example.com').to_return(:body => 'something')
|
26
|
+
MixpanelClient::URI.get('http://example.com').should == 'something'
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mixpanel_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 1
|
10
|
+
version: 1.0.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Keolo Keagy
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-03-
|
18
|
+
date: 2011-03-14 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -26,10 +26,12 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
hash:
|
29
|
+
hash: 27
|
30
30
|
segments:
|
31
|
+
- 2
|
32
|
+
- 5
|
31
33
|
- 0
|
32
|
-
version:
|
34
|
+
version: 2.5.0
|
33
35
|
type: :development
|
34
36
|
version_requirements: *id001
|
35
37
|
- !ruby/object:Gem::Dependency
|
@@ -40,10 +42,12 @@ dependencies:
|
|
40
42
|
requirements:
|
41
43
|
- - ">="
|
42
44
|
- !ruby/object:Gem::Version
|
43
|
-
hash:
|
45
|
+
hash: 11
|
44
46
|
segments:
|
45
|
-
-
|
46
|
-
|
47
|
+
- 1
|
48
|
+
- 6
|
49
|
+
- 2
|
50
|
+
version: 1.6.2
|
47
51
|
type: :development
|
48
52
|
version_requirements: *id002
|
49
53
|
- !ruby/object:Gem::Dependency
|
@@ -54,10 +58,12 @@ dependencies:
|
|
54
58
|
requirements:
|
55
59
|
- - ">="
|
56
60
|
- !ruby/object:Gem::Version
|
57
|
-
hash:
|
61
|
+
hash: 9
|
58
62
|
segments:
|
59
|
-
-
|
60
|
-
|
63
|
+
- 2
|
64
|
+
- 1
|
65
|
+
- 1
|
66
|
+
version: 2.1.1
|
61
67
|
type: :development
|
62
68
|
version_requirements: *id003
|
63
69
|
description: Simple ruby client interface to the Mixpanel API.
|
@@ -80,11 +86,12 @@ files:
|
|
80
86
|
- config/mixpanel.template.yml
|
81
87
|
- lib/mixpanel_client.rb
|
82
88
|
- lib/mixpanel_client/mixpanel_client.rb
|
83
|
-
- lib/mixpanel_client/
|
89
|
+
- lib/mixpanel_client/uri.rb
|
84
90
|
- lib/mixpanel_client/version.rb
|
85
91
|
- mixpanel_client.gemspec
|
86
|
-
- spec/events_externalspec.rb
|
87
|
-
- spec/mixpanel_client_spec.rb
|
92
|
+
- spec/mixpanel_client/events_externalspec.rb
|
93
|
+
- spec/mixpanel_client/mixpanel_client_spec.rb
|
94
|
+
- spec/mixpanel_client/uri_spec.rb
|
88
95
|
- spec/spec_helper.rb
|
89
96
|
has_rdoc: true
|
90
97
|
homepage: http://github.com/keolo/mixpanel_client
|
@@ -121,6 +128,7 @@ signing_key:
|
|
121
128
|
specification_version: 3
|
122
129
|
summary: Ruby Mixpanel API Client Library
|
123
130
|
test_files:
|
124
|
-
- spec/events_externalspec.rb
|
125
|
-
- spec/mixpanel_client_spec.rb
|
131
|
+
- spec/mixpanel_client/events_externalspec.rb
|
132
|
+
- spec/mixpanel_client/mixpanel_client_spec.rb
|
133
|
+
- spec/mixpanel_client/uri_spec.rb
|
126
134
|
- spec/spec_helper.rb
|