lazy_google_analytics 0.1.2 → 0.1.5

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.
File without changes
data/README.md CHANGED
@@ -1,10 +1,12 @@
1
1
  # LazyGoogleAnalytics
2
2
 
3
- Lazy google analytics for the lazy programmer. it´s an abstraction around google-analytics-client gem.
3
+ Lazy google analytics it´s an abstraction around google-analytics-client gem, to make server to server api calls.
4
4
 
5
5
  ## Motivation
6
6
 
7
- google-analytics-client gem is a very powerfull tool to access the api resources on google. but for me it was not very straightforward , so i come around with a simple way to implement it. thats all. Hope you like it.
7
+ google-analytics-client gem is a very powerfull tool to access the api resources on google. but for me it was not very straightforward, so I come around with a simple way to implement it. that's all.
8
+
9
+ Hope you like it.
8
10
 
9
11
  ## Installation
10
12
 
@@ -22,7 +24,7 @@ Or install it yourself as:
22
24
 
23
25
  ## Simple Usage
24
26
 
25
- setup options:
27
+ ### Configuration setup:
26
28
 
27
29
  LazyGoogleAnalytics::Config.setup do |config|
28
30
  config.pass_phrase = "notasecret"
@@ -33,13 +35,17 @@ Or install it yourself as:
33
35
  config.email = "XXXXXX@developer.gserviceaccount.com"
34
36
  end
35
37
 
36
- api calls:
38
+ ### Api calls:
37
39
 
38
40
  @client = LazyGoogleAnalytics::Client.new()
39
41
 
40
- By default LazyGoogleAnalytics::Client is going to make a call for visits within 1 month timeline sorted by month & day, using the profile in config block.
42
+ By default LazyGoogleAnalytics::Client is going to make a call for visits within 1 month timeline sorted by month & day, using the profile_id in config block.
43
+
44
+ But you can override specific parameters like this:
45
+
46
+ @client = LazyGoogleAnalytics::Client.new({:ids => "ga:123456"})
41
47
 
42
- But you can extend that behavior passing and entire options_hash with specific parameters:
48
+ Also you can extend the options after initialization, passing and entire options_hash overriding all default parameters:
43
49
 
44
50
  @client = LazyGoogleAnalytics::Client.new()
45
51
  @client.parameters({'ids' => "ga:XXXXX",
@@ -49,20 +55,40 @@ Or install it yourself as:
49
55
  'metrics' => "ga:visits",
50
56
  'sort' => "ga:month,ga:day" })
51
57
 
58
+ #### Results
59
+
60
+ To get the results of the initialized client you have to call .results method
61
+
62
+ @results = @client.results
63
+ @results.columns
64
+ @results.rows
65
+
66
+ Also this class have 2 convenience methods to output data:
67
+
68
+ To get the queried columns:
69
+
70
+ @results.formatted_columns
71
+
72
+ To get the rows:
73
+
74
+ @results.formatted_rows
75
+
76
+
52
77
  ## Rails 3
53
78
 
54
- installs configuration initializer
79
+ Installs configuration initializer
55
80
 
56
81
  rails g lazy_google_analytics:install
57
82
 
58
- ## GA How to:
83
+ ## Google Analytics How to:
59
84
 
60
85
  If you follow this simple steps , you can´t fail.
61
86
 
62
87
  + First, you have to register your api access in: [google api console](https://code.google.com/apis/console/) and create a server key.
63
88
  + Download the p12 key.
64
- + Add the created @developer.gserviceaccount.com to your users list in the analytics user panel.
65
- + Configure options based on server key and analytics profile id, not the (UA-something) account id!
89
+ + Add the created @developer.gserviceaccount.com to your users list in the analytics user panel of the profile you want to retrieve the data, otherwise it wont work.
90
+ + Note that the profile_id of the configuration object is not the UA-XXXXX number , is the Google Analytics profile number.
91
+ + To play with the api to tests different options (without write any code) you can use [Google Analytics Query Explorer 2](https://ga-dev-tools.appspot.com/explorer/)
66
92
 
67
93
  ## Contributing
68
94
 
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["miguel michelson"]
10
10
  spec.email = ["miguelmichelson@gmail.com"]
11
11
  spec.description = %q{google analytics api access for the lazy ones}
12
- spec.summary = %q{google analytics api access for the lazy ones}
12
+ spec.summary = %q{google analytics api access server 2 server for the lazy ones}
13
13
  spec.homepage = ""
14
14
  spec.license = "MIT"
15
15
 
@@ -19,22 +19,27 @@ module LazyGoogleAnalytics
19
19
 
20
20
  def defaults_options(opts)
21
21
 
22
+ api_method = opts[:api_method] ||= @auth.analytics.data.ga.get
22
23
  start_date = opts[:start_date] ||= DateTime.now.prev_month.strftime("%Y-%m-%d")
23
24
  end_date = opts[:end_date] ||= DateTime.now.strftime("%Y-%m-%d")
25
+ ids = opts[:ids] ||= "ga:#{LazyGoogleAnalytics::Config.profile_id}"
26
+ dimensions = opts[:dimensions] ||= "ga:day,ga:month"
27
+ metrics = opts[:metrics] ||= "ga:visits"
28
+ sort = opts[:sort] ||= "ga:month,ga:day"
24
29
 
25
- self.api_method(@auth.analytics.data.ga.get)
26
- self.parameters({'ids' => "ga:#{LazyGoogleAnalytics::Config.profile_id}",
30
+ self.api_method(api_method)
31
+ self.parameters({'ids' => ids,
27
32
  'start-date' => start_date,
28
33
  'end-date' => end_date,
29
- 'dimensions' => "ga:day,ga:month",
30
- 'metrics' => "ga:visits",
31
- 'sort' => "ga:month,ga:day" })
34
+ 'dimensions' => dimensions,
35
+ 'metrics' => metrics,
36
+ 'sort' => sort })
32
37
  end
33
38
 
34
39
 
35
40
  def results
36
41
  @results = @auth.client.execute(@options)
37
- raise_detected_errors
42
+ raise_detected_errors if @results.status > 200
38
43
  end
39
44
 
40
45
  def formatted_columns
@@ -61,11 +66,7 @@ module LazyGoogleAnalytics
61
66
 
62
67
  def raise_detected_errors
63
68
  body = JSON.parse(@results.body)
64
- if body.keys.include?("error")
65
- raise body["error"]["errors"].collect{|e| e["reason"] + e["message"] }.join(", ")
66
- else
67
- @results
68
- end
69
+ raise body["error"]["errors"].collect{|e| "#{e["reason"]}: #{e["message"]}" }.join(", ") if body.keys.include?("error")
69
70
  end
70
71
 
71
72
  end
@@ -1,3 +1,3 @@
1
1
  module LazyGoogleAnalytics
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.5"
3
3
  end
@@ -1,43 +1,87 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '../../spec_helper')
2
2
 
3
3
 
4
- describe "errors" do
4
+ describe "Client" do
5
5
  before :each do
6
6
  config_setup
7
- @error_report = LazyGoogleAnalytics::Client.new()
8
- @error_report.parameters({'ids' => "ga:#{LazyGoogleAnalytics::Config.profile_id}",
9
- 'start-date' => DateTime.now.prev_month.strftime("%Y-%m-%d"),
10
- 'end-date' => DateTime.now.strftime("%Y-%m-%d"),
11
- 'dimensions' => "ga:year,ga:month",
12
- 'metrics' => "ga:visits,ga:bounces,ga:entranceBounceRate",
13
- 'sort' => "ga:month,ga:day" })
14
-
15
7
  end
16
8
 
17
- it "should raise and error" do
18
- lambda { @error_report.results }.should raise_error
19
- end
20
- end
21
9
 
22
- describe "Client" do
23
- before(:all) do
24
- config_setup
25
- @client = LazyGoogleAnalytics::Client.new()
10
+ describe "errors" do
11
+ before :each do
12
+ @error_report = LazyGoogleAnalytics::Client.new()
13
+ @error_report.parameters({'ids' => "ga:#{LazyGoogleAnalytics::Config.profile_id}",
14
+ 'start-date' => DateTime.now.prev_month.strftime("%Y-%m-%d"),
15
+ 'end-date' => DateTime.now.strftime("%Y-%m-%d"),
16
+ 'dimensions' => "ga:year,ga:month",
17
+ 'metrics' => "ga:visits,ga:bounces,ga:entranceBounceRate",
18
+ 'sort' => "ga:month,ga:day" })
19
+
20
+ end
21
+
22
+ it "should raise and error" do
23
+ lambda { @error_report.results }.should raise_error
24
+ end
26
25
  end
27
26
 
28
- it "find objects object" do
29
- @client.results
27
+ describe "override entire options" do
28
+ before :each do
29
+ @report = LazyGoogleAnalytics::Client.new()
30
+ @report.parameters({'ids' => "ga:123456",
31
+ 'dimensions' => "ga:year,ga:month",
32
+ 'sort' => "ga:month,ga:day" })
33
+
34
+ end
35
+
36
+ it "options should have new options" do
37
+ @report.options[:parameters].keys.should == ["ids", "dimensions", "sort"]
38
+ @report.options[:parameters]["ids"].should == "ga:123456"
39
+ end
40
+
30
41
  end
31
42
 
32
- it "headers" do
33
- @client.formatted_columns.should == "ga:day\tga:month\tga:visits"
43
+ describe "initialize with specific options without overriding defaults" do
44
+ before :each do
45
+ @report = LazyGoogleAnalytics::Client.new({:ids => "ga:123"})
46
+ end
47
+
48
+ it "options should have new options" do
49
+ @report.options[:parameters].keys.should == ["ids", "start-date", "end-date", "dimensions", "metrics", "sort"]
50
+ @report.options[:parameters]["ids"].should == "ga:123"
51
+ end
52
+
34
53
  end
35
54
 
36
- it "rows" do
37
- @client.formatted_rows.class.should == Array
38
- @client.formatted_rows.should_not be_empty
55
+ describe "block initialization" do
56
+ before :each do
57
+ @report = LazyGoogleAnalytics::Client.new do |client|
58
+ client.parameters({ "ids" => "ga:123456"})
59
+ end
60
+ end
61
+ it "options should have new options" do
62
+ @report.options[:parameters].keys.should == ["ids"]
63
+ @report.options[:parameters]["ids"].should == "ga:123456"
64
+ end
39
65
  end
40
66
 
41
- end
67
+ describe "Client" do
68
+ before(:all) do
69
+ @client = LazyGoogleAnalytics::Client.new()
70
+ end
71
+
72
+ it "find objects object" do
73
+ @client.results
74
+ end
42
75
 
76
+ it "headers" do
77
+ @client.formatted_columns.should == "ga:day\tga:month\tga:visits"
78
+ end
43
79
 
80
+ it "rows" do
81
+ @client.formatted_rows.class.should == Array
82
+ @client.formatted_rows.should_not be_empty
83
+ end
84
+
85
+ end
86
+
87
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lazy_google_analytics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-23 00:00:00.000000000 Z
12
+ date: 2013-03-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: google-api-client
@@ -100,6 +100,7 @@ extra_rdoc_files: []
100
100
  files:
101
101
  - .DS_Store
102
102
  - .gitignore
103
+ - CHANGELOG.md
103
104
  - Gemfile
104
105
  - LICENSE.txt
105
106
  - README.md
@@ -140,7 +141,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
140
141
  version: '0'
141
142
  segments:
142
143
  - 0
143
- hash: -3670511021453100152
144
+ hash: 3806553411161090089
144
145
  required_rubygems_version: !ruby/object:Gem::Requirement
145
146
  none: false
146
147
  requirements:
@@ -149,13 +150,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
150
  version: '0'
150
151
  segments:
151
152
  - 0
152
- hash: -3670511021453100152
153
+ hash: 3806553411161090089
153
154
  requirements: []
154
155
  rubyforge_project:
155
156
  rubygems_version: 1.8.25
156
157
  signing_key:
157
158
  specification_version: 3
158
- summary: google analytics api access for the lazy ones
159
+ summary: google analytics api access server 2 server for the lazy ones
159
160
  test_files:
160
161
  - spec/.DS_Store
161
162
  - spec/fixtures/.DS_Store