mixpanel_client 3.1.0 → 3.1.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 CHANGED
@@ -94,6 +94,9 @@ Create tag v2.0.2 and build and push mixpanel_client-2.0.2.gem to Rubygems
94
94
 
95
95
  ## Changelog
96
96
 
97
+ ### v3.1.1
98
+ * Avoid overriding the arg of client.request
99
+ * Allow retrieving the request_uri of a Mixpanel request
97
100
 
98
101
  ### v3.1.0
99
102
  * Parallel requests option.
@@ -149,6 +152,8 @@ Create tag v2.0.2 and build and push mixpanel_client-2.0.2.gem to Rubygems
149
152
  Feel free to add your name and link here.
150
153
 
151
154
  [Keolo Keagy](http://github.com/keolo) (Author)
155
+ [Hiroshige Umino](https://github.com/yaotti)
156
+ [Gabor Ratky](https://github.com/rgabo)
152
157
  [Bill DeRusha](https://github.com/bderusha)
153
158
  [Jason Logsdon](https://github.com/jasonlogsdon)
154
159
  [James R](https://github.com/Cev)
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'autospec' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('rspec-core', 'autospec')
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'htmldiff' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('diff-lcs', 'htmldiff')
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'ldiff' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('diff-lcs', 'ldiff')
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'rake' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('rake', 'rake')
data/bin/ri ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'ri' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('rdoc', 'ri')
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'rspec' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('rspec-core', 'rspec')
@@ -46,8 +46,7 @@ module Mixpanel
46
46
  # @options [Hash] options variables used to make a specific request for mixpanel data
47
47
  # @return [JSON, String] mixpanel response as a JSON object or CSV string
48
48
  def request(resource, options)
49
- @format = options[:format] || :json
50
- @uri = URI.mixpanel(resource, normalize_options(options))
49
+ @uri = request_uri(resource, options)
51
50
  if @parallel
52
51
  parallel_request = prepare_parallel_request
53
52
  hydra.queue parallel_request
@@ -59,6 +58,28 @@ module Mixpanel
59
58
  end
60
59
  end
61
60
 
61
+ # Return mixpanel URI to the data
62
+ #
63
+ # @example
64
+ # uri = client.request_uri('events/properties', {
65
+ # event: '["test-event"]',
66
+ # name: 'hello',
67
+ # values: '["uno", "dos"]',
68
+ # type: 'general',
69
+ # unit: 'hour',
70
+ # interval: 24,
71
+ # limit: 5,
72
+ # bucket: 'contents'
73
+ # })
74
+ #
75
+ # @resource [String] mixpanel api resource endpoint
76
+ # @options [Hash] options variables used to make a specific request for mixpanel data
77
+ # @return [JSON, String] mixpanel response as a JSON object or CSV string
78
+ def request_uri(resource, options)
79
+ @format = options[:format] || :json
80
+ URI.mixpanel(resource, normalize_options(options))
81
+ end
82
+
62
83
  def prepare_parallel_request
63
84
  request = ::Typhoeus::Request.new(@uri)
64
85
  request.on_complete do |response|
@@ -91,11 +112,12 @@ module Mixpanel
91
112
  #
92
113
  # @return [Hash] collection of options including defaults and generated signature
93
114
  def normalize_options(options)
94
- options.merge!(
115
+ normalized_options = options.dup
116
+ normalized_options.merge!(
95
117
  :format => @format,
96
118
  :api_key => @api_key,
97
119
  :expire => Time.now.to_i + 600 # Grant this request 10 minutes
98
- ).merge!(:sig => Utils.generate_signature(options, @api_secret))
120
+ ).merge!(:sig => Utils.generate_signature(normalized_options, @api_secret))
99
121
  end
100
122
 
101
123
  def self.base_uri_for_resource(resource)
@@ -10,6 +10,6 @@ module Mixpanel
10
10
  # Return metrics from Mixpanel Data API
11
11
  class Client
12
12
  # Mixpanel::Client library version
13
- VERSION = '3.1.0'
13
+ VERSION = '3.1.1'
14
14
  end
15
15
  end
@@ -59,6 +59,16 @@ describe Mixpanel::Client do
59
59
  data.should == {"events"=>[], "type"=>"general"}
60
60
  end
61
61
 
62
+ it 'does not modify the provided options' do
63
+ options = { foo: 'bar' }
64
+ # Stub Mixpanel request
65
+ stub_request(:get, /^#{@uri}.*/).to_return(:body => '{"events": [], "type": "general"}')
66
+ expect {
67
+ @client.request('events/top', options)
68
+ }.to_not change { options }
69
+ end
70
+
71
+
62
72
  context "with parallel option enabled" do
63
73
  before :all do
64
74
  @parallel_client = Mixpanel::Client.new(:api_key => 'test_key', :api_secret => 'test_secret', :parallel => true)
metadata CHANGED
@@ -1,142 +1,95 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: mixpanel_client
3
- version: !ruby/object:Gem::Version
4
- hash: 3
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.1.1
5
5
  prerelease:
6
- segments:
7
- - 3
8
- - 1
9
- - 0
10
- version: 3.1.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Keolo Keagy
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2013-02-05 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: json
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 1
31
- - 6
32
- version: "1.6"
33
- type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
12
+ date: 2013-08-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
36
15
  name: typhoeus
37
- prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
16
+ requirement: &70281989507260 !ruby/object:Gem::Requirement
39
17
  none: false
40
- requirements:
18
+ requirements:
41
19
  - - ~>
42
- - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 0
46
- - 5
47
- - 4
20
+ - !ruby/object:Gem::Version
48
21
  version: 0.5.4
49
22
  type: :runtime
50
- version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
52
- name: bundler
53
23
  prerelease: false
54
- requirement: &id003 !ruby/object:Gem::Requirement
24
+ version_requirements: *70281989507260
25
+ - !ruby/object:Gem::Dependency
26
+ name: bundler
27
+ requirement: &70281989506700 !ruby/object:Gem::Requirement
55
28
  none: false
56
- requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- hash: 11
60
- segments:
61
- - 1
62
- - 2
63
- version: "1.2"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '1.2'
64
33
  type: :development
65
- version_requirements: *id003
66
- - !ruby/object:Gem::Dependency
67
- name: rake
68
34
  prerelease: false
69
- requirement: &id004 !ruby/object:Gem::Requirement
35
+ version_requirements: *70281989506700
36
+ - !ruby/object:Gem::Dependency
37
+ name: rake
38
+ requirement: &70281989506160 !ruby/object:Gem::Requirement
70
39
  none: false
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- hash: 11
75
- segments:
76
- - 0
77
- - 9
78
- - 2
79
- - 2
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
80
43
  version: 0.9.2.2
81
44
  type: :development
82
- version_requirements: *id004
83
- - !ruby/object:Gem::Dependency
84
- name: rdoc
85
45
  prerelease: false
86
- requirement: &id005 !ruby/object:Gem::Requirement
46
+ version_requirements: *70281989506160
47
+ - !ruby/object:Gem::Dependency
48
+ name: rdoc
49
+ requirement: &70281989505660 !ruby/object:Gem::Requirement
87
50
  none: false
88
- requirements:
89
- - - ">="
90
- - !ruby/object:Gem::Version
91
- hash: 17
92
- segments:
93
- - 3
94
- - 11
95
- version: "3.11"
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '3.11'
96
55
  type: :development
97
- version_requirements: *id005
98
- - !ruby/object:Gem::Dependency
99
- name: rspec
100
56
  prerelease: false
101
- requirement: &id006 !ruby/object:Gem::Requirement
57
+ version_requirements: *70281989505660
58
+ - !ruby/object:Gem::Dependency
59
+ name: rspec
60
+ requirement: &70281989505140 !ruby/object:Gem::Requirement
102
61
  none: false
103
- requirements:
104
- - - ">="
105
- - !ruby/object:Gem::Version
106
- hash: 27
107
- segments:
108
- - 2
109
- - 5
110
- - 0
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
111
65
  version: 2.5.0
112
66
  type: :development
113
- version_requirements: *id006
114
- - !ruby/object:Gem::Dependency
115
- name: webmock
116
67
  prerelease: false
117
- requirement: &id007 !ruby/object:Gem::Requirement
68
+ version_requirements: *70281989505140
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: &70281989504660 !ruby/object:Gem::Requirement
118
72
  none: false
119
- requirements:
120
- - - ">="
121
- - !ruby/object:Gem::Version
122
- hash: 51
123
- segments:
124
- - 1
125
- - 9
126
- - 0
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
127
76
  version: 1.9.0
128
77
  type: :development
129
- version_requirements: *id007
78
+ prerelease: false
79
+ version_requirements: *70281989504660
130
80
  description: Simple ruby client interface to the Mixpanel API.
131
- email:
81
+ email:
132
82
  - keolo@dreampointmedia.com
133
- executables: []
134
-
83
+ executables:
84
+ - autospec
85
+ - htmldiff
86
+ - ldiff
87
+ - rake
88
+ - ri
89
+ - rspec
135
90
  extensions: []
136
-
137
91
  extra_rdoc_files: []
138
-
139
- files:
92
+ files:
140
93
  - .document
141
94
  - .gitignore
142
95
  - .rvmrc
@@ -144,6 +97,12 @@ files:
144
97
  - LICENSE
145
98
  - README.md
146
99
  - Rakefile
100
+ - bin/autospec
101
+ - bin/htmldiff
102
+ - bin/ldiff
103
+ - bin/rake
104
+ - bin/ri
105
+ - bin/rspec
147
106
  - config/mixpanel.template.yml
148
107
  - lib/mixpanel/client.rb
149
108
  - lib/mixpanel/exceptions.rb
@@ -161,38 +120,29 @@ files:
161
120
  - spec/spec_helper.rb
162
121
  homepage: http://github.com/keolo/mixpanel_client
163
122
  licenses: []
164
-
165
123
  post_install_message:
166
124
  rdoc_options: []
167
-
168
- require_paths:
125
+ require_paths:
169
126
  - lib
170
- required_ruby_version: !ruby/object:Gem::Requirement
127
+ required_ruby_version: !ruby/object:Gem::Requirement
171
128
  none: false
172
- requirements:
173
- - - ">="
174
- - !ruby/object:Gem::Version
175
- hash: 3
176
- segments:
177
- - 0
178
- version: "0"
179
- required_rubygems_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ! '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
180
134
  none: false
181
- requirements:
182
- - - ">="
183
- - !ruby/object:Gem::Version
184
- hash: 3
185
- segments:
186
- - 0
187
- version: "0"
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
188
139
  requirements: []
189
-
190
140
  rubyforge_project: mixpanel_client
191
141
  rubygems_version: 1.8.15
192
142
  signing_key:
193
143
  specification_version: 3
194
144
  summary: Ruby Mixpanel API Client Library
195
- test_files:
145
+ test_files:
196
146
  - spec/mixpanel_client/events_externalspec.rb
197
147
  - spec/mixpanel_client/mixpanel_client_spec.rb
198
148
  - spec/mixpanel_client/properties_externalspec.rb