simple_analytics 0.0.1 → 0.0.2
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/.gitignore +1 -1
- data/.travis.yml +4 -0
- data/Gemfile +1 -2
- data/LICENSE +1 -1
- data/README.md +98 -0
- data/lib/simple_analytics/version.rb +1 -1
- data/lib/simple_analytics.rb +13 -12
- data/simple_analytics.gemspec +4 -4
- data/spec/simple_analytics_spec.rb +35 -19
- metadata +89 -61
- data/Gemfile.lock +0 -43
- data/README.rdoc +0 -75
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/LICENSE
CHANGED
data/README.md
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
# SimpleAnalytics
|
2
|
+
[](http://travis-ci.org/Djo/simple_analytics)
|
3
|
+
|
4
|
+
*SimpleAnalytics* gem provides accessing Google Analytics Export Api. It uses Version 3.0 of the Google Core Reporting API with JSON. You can find the google documentation [here](http://code.google.com/apis/analytics/docs/gdata/v3/gdataGettingStarted.html).
|
5
|
+
|
6
|
+
## Getting Started
|
7
|
+
|
8
|
+
You can add it to your Gemfile with:
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
gem 'simple_analytics'
|
12
|
+
```
|
13
|
+
|
14
|
+
Authentication using the *ClientLogin*:
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
analytics = SimpleAnalytics::Api.authenticate('user@gmail.com', 'password')
|
18
|
+
```
|
19
|
+
|
20
|
+
The `authenticate` method sets an `auth_token` in the analytics service object. Then you can fetch the report data:
|
21
|
+
|
22
|
+
```ruby
|
23
|
+
analytics.fetch(
|
24
|
+
'ids' => 'ga:id',
|
25
|
+
'metrics' => 'ga:visitors',
|
26
|
+
'dimensions' => 'ga:country',
|
27
|
+
'start-date' => '2012-01-01',
|
28
|
+
'end-date' => '2012-01-10'
|
29
|
+
)
|
30
|
+
# => [["United States","24451"], ["Brazil","15616"], ["Spain","3966"]]
|
31
|
+
```
|
32
|
+
|
33
|
+
The `fetch` method sets and returns rows. Required query parameters are used to configure which data to return from the Google Analytics:
|
34
|
+
|
35
|
+
* **ids** — The profile IDs from which to access data.
|
36
|
+
* **start-date** — The beginning of the date range.
|
37
|
+
* **end-date** — The end of the date range.
|
38
|
+
* **metrics** — The numeric values to return.
|
39
|
+
|
40
|
+
For more detailed information about the parameters see [google REST docs](http://code.google.com/apis/analytics/docs/gdata/v3/exportRest.html).
|
41
|
+
|
42
|
+
## Authentication
|
43
|
+
|
44
|
+
For the authentication it uses gem [google_client_login](https://github.com/fortuity/google_client_login) based on the *ClientLogin*. You can also pass extra parameters which allows the gem (see the gem's [README](https://github.com/fortuity/google_client_login)):
|
45
|
+
|
46
|
+
```ruby
|
47
|
+
options = { :accountType => 'GOOGLE', :source => 'company-app-version' }
|
48
|
+
analytics = SimpleAnalytics::Api.authenticate('user@gmail.com', 'password', options)
|
49
|
+
```
|
50
|
+
|
51
|
+
### Authentication Token
|
52
|
+
|
53
|
+
You can set yourself the `auth_token` to use it in the fetching:
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
analytics.auth_token = 'your-token-from-oauth'
|
57
|
+
```
|
58
|
+
|
59
|
+
## Example
|
60
|
+
|
61
|
+
All parameters are escaped before a request. For date format you can use the next tip: `Date.today.strftime("%Y-%m-%d")`.
|
62
|
+
|
63
|
+
```ruby
|
64
|
+
analytics = SimpleAnalytics::Api.authenticate('user@gmail.com', 'password')
|
65
|
+
|
66
|
+
analytics.fetch(
|
67
|
+
'ids' => 'ga:id',
|
68
|
+
'metrics' => 'ga:visitors',
|
69
|
+
'dimensions' => 'ga:country',
|
70
|
+
'start-date' => '2012-01-01',
|
71
|
+
'end-date' => '2012-01-10'
|
72
|
+
)
|
73
|
+
# => [["United States","24451"], ["Brazil","15616"], ["Spain","3966"]]
|
74
|
+
|
75
|
+
analytics.rows
|
76
|
+
# => [["United States","24451"], ["Brazil","15616"], ["Spain","3966"]]
|
77
|
+
|
78
|
+
analytics.body
|
79
|
+
# => returns the parsed response body (hash), where you can get other info, see google docs.
|
80
|
+
|
81
|
+
analytics.fetch(
|
82
|
+
'ids' => 'ga:another-id',
|
83
|
+
'metrics' => 'ga:visitors,ga:newVisits',
|
84
|
+
'dimensions' => 'ga:pagePath',
|
85
|
+
'filters' => 'ga:pagepath=~/articles/[\w-]+\z'
|
86
|
+
'start-date' => '2012-01-01',
|
87
|
+
'end-date' => '2012-01-10'
|
88
|
+
)
|
89
|
+
# => [["/articles/first-post","12", "2"], ["/articles/second-post","2", "1"]]
|
90
|
+
|
91
|
+
analytics.rows
|
92
|
+
# => [["/articles/first-post","12", "2"], ["/articles/second-post","2", "1"]]
|
93
|
+
```
|
94
|
+
|
95
|
+
|
96
|
+
## Dependencies
|
97
|
+
|
98
|
+
* Ruby 1.8.7 or later
|
data/lib/simple_analytics.rb
CHANGED
@@ -5,22 +5,21 @@ require 'google_client_login'
|
|
5
5
|
module SimpleAnalytics
|
6
6
|
# Required query parameters are used to configure which data to return from Google Analytics.
|
7
7
|
REQUIRED_PROPERTIES = ['ids', 'start-date', 'end-date', 'metrics']
|
8
|
+
API_URL = 'https://www.googleapis.com/analytics/v3/data/ga'
|
8
9
|
|
9
10
|
class NotSuccessfulResponseError < RuntimeError; end
|
10
11
|
|
11
12
|
class Api
|
12
|
-
# An authentication token for the Google Analytics Api.
|
13
13
|
attr_accessor :auth_token
|
14
14
|
|
15
15
|
# +rows+ is a 2-dimensional array of strings, each string represents a value in the table.
|
16
16
|
# +body+ is the data in response body.
|
17
17
|
attr_reader :rows, :body
|
18
18
|
|
19
|
-
# Authentication using ClientLogin, returns an analytics service object.
|
20
19
|
def self.authenticate(username, password, options = {})
|
21
|
-
new(username, password, options)
|
22
|
-
|
23
|
-
|
20
|
+
analytics = new(username, password, options)
|
21
|
+
analytics.authenticate
|
22
|
+
analytics
|
24
23
|
end
|
25
24
|
|
26
25
|
def initialize(username, password, options = {})
|
@@ -29,24 +28,24 @@ module SimpleAnalytics
|
|
29
28
|
@options = options
|
30
29
|
end
|
31
30
|
|
32
|
-
# Authenticates using ClientLogin.
|
33
31
|
def authenticate
|
34
32
|
login_service = ::GoogleClientLogin::GoogleAuth.new(client_options)
|
35
33
|
login_service.authenticate(@username, @password, @options[:captcha_response])
|
36
34
|
@auth_token = login_service.auth
|
37
35
|
end
|
38
36
|
|
39
|
-
# Fetches the report data, the following query parameters are required: 'ids', 'start-date', 'end-date', 'metrics'.
|
40
37
|
def fetch(properties)
|
41
38
|
check_properties(properties)
|
42
39
|
|
43
|
-
uri = URI.parse(
|
40
|
+
uri = URI.parse(API_URL)
|
44
41
|
http = Net::HTTP.new(uri.host, uri.port)
|
45
42
|
http.use_ssl = true
|
46
43
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
47
44
|
|
48
|
-
|
45
|
+
headers = { 'Authorization' => "GoogleLogin auth=#{@auth_token}", 'GData-Version' => '3' }
|
46
|
+
response = http.get("#{uri.path}?#{query_string(properties)}", headers)
|
49
47
|
raise NotSuccessfulResponseError.new, response.body if response.code_type != Net::HTTPOK
|
48
|
+
|
50
49
|
@body = JSON.parse(response.body)
|
51
50
|
@rows = @body['rows']
|
52
51
|
end
|
@@ -54,9 +53,11 @@ module SimpleAnalytics
|
|
54
53
|
private
|
55
54
|
|
56
55
|
def client_options
|
57
|
-
{
|
56
|
+
{
|
57
|
+
:service => 'analytics',
|
58
58
|
:accountType => (@options[:accountType] || 'GOOGLE'),
|
59
|
-
:source => (@options[:source] || 'djo-simple_analytics-001')
|
59
|
+
:source => (@options[:source] || 'djo-simple_analytics-001')
|
60
|
+
}
|
60
61
|
end
|
61
62
|
|
62
63
|
def check_properties(properties)
|
@@ -67,7 +68,7 @@ module SimpleAnalytics
|
|
67
68
|
end
|
68
69
|
|
69
70
|
def query_string(properties)
|
70
|
-
properties.map{ |k, v| "#{k}=#{escape v}" }.sort.join('&')
|
71
|
+
properties.map { |k, v| "#{k}=#{escape v}" }.sort.join('&')
|
71
72
|
end
|
72
73
|
|
73
74
|
def escape(property)
|
data/simple_analytics.gemspec
CHANGED
@@ -16,8 +16,8 @@ Gem::Specification.new do |gem|
|
|
16
16
|
gem.version = SimpleAnalytics::VERSION
|
17
17
|
|
18
18
|
gem.add_dependency "json"
|
19
|
-
gem.add_dependency "google_client_login", "~> 0.3
|
20
|
-
gem.add_development_dependency "rspec"
|
21
|
-
gem.add_development_dependency "fuubar"
|
22
|
-
gem.add_development_dependency "webmock"
|
19
|
+
gem.add_dependency "google_client_login", "~> 0.3"
|
20
|
+
gem.add_development_dependency "rspec"
|
21
|
+
gem.add_development_dependency "fuubar"
|
22
|
+
gem.add_development_dependency "webmock"
|
23
23
|
end
|
@@ -1,53 +1,67 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe SimpleAnalytics::Api do
|
4
|
+
STUB_URL = "https://www.googleapis.com/analytics/v3/data/ga?dimensions=ga:country&end-date=2012-01-10&ids=ga:id&metrics=ga:visitors&start-date=2012-01-01"
|
5
|
+
|
6
|
+
REQUEST_BODY = {
|
7
|
+
'accountType' => 'GOOGLE',
|
8
|
+
'source' => 'djo-simple_analytics-001',
|
9
|
+
'service' => 'analytics',
|
10
|
+
'Email' => 'user@gmail.com',
|
11
|
+
'Passwd' => 'password'
|
12
|
+
}
|
13
|
+
|
14
|
+
PROPERTIES = {
|
15
|
+
'ids' => 'ga:id',
|
16
|
+
'metrics' => 'ga:visitors',
|
17
|
+
'dimensions' => 'ga:country',
|
18
|
+
'start-date' => '2012-01-01',
|
19
|
+
'end-date' => '2012-01-10'
|
20
|
+
}
|
21
|
+
|
4
22
|
before do
|
5
|
-
@auth_request = stub_request(:post,
|
6
|
-
with(:body =>
|
23
|
+
@auth_request = stub_request(:post, 'https://www.google.com/accounts/ClientLogin').
|
24
|
+
with(:body => REQUEST_BODY).
|
7
25
|
to_return(:status => 200, :body => "AUTH=secret\n")
|
8
26
|
end
|
9
27
|
|
10
|
-
describe
|
28
|
+
describe '.authenticate' do
|
11
29
|
it "requests authentication" do
|
12
30
|
SimpleAnalytics::Api.authenticate('user@gmail.com', 'password')
|
13
31
|
@auth_request.should have_been_requested
|
14
32
|
end
|
15
33
|
|
16
|
-
it
|
34
|
+
it 'fetches an auth token' do
|
17
35
|
analytics = SimpleAnalytics::Api.authenticate('user@gmail.com', 'password')
|
18
36
|
analytics.auth_token.should eq('secret')
|
19
37
|
end
|
20
38
|
end
|
21
39
|
|
22
|
-
describe
|
40
|
+
describe '#fetch' do
|
23
41
|
before { stub_analytics_request }
|
24
42
|
|
25
43
|
let(:analytics) { SimpleAnalytics::Api.authenticate('user@gmail.com', 'password') }
|
26
|
-
let(:properties) {
|
27
|
-
'metrics' => 'ga:visitors',
|
28
|
-
'dimensions' => 'ga:country',
|
29
|
-
'start-date' => '2012-01-01',
|
30
|
-
'end-date' => '2012-01-10' } }
|
44
|
+
let(:properties) { PROPERTIES }
|
31
45
|
|
32
|
-
it
|
46
|
+
it 'raises an argument error without requried properties' do
|
33
47
|
expect {
|
34
48
|
analytics.fetch('ids' => 'ga:xxx')
|
35
49
|
}.to raise_error(ArgumentError)
|
36
50
|
end
|
37
51
|
|
38
|
-
it
|
52
|
+
it 'fetches rows' do
|
39
53
|
rows = analytics.fetch(properties)
|
40
54
|
rows.should eq([[ "United States", "73834"], ["Ukraine", "15726"]])
|
41
55
|
analytics.rows.should eq([[ "United States", "73834"], ["Ukraine", "15726"]])
|
42
56
|
end
|
43
57
|
|
44
|
-
it
|
58
|
+
it 'sets column headers' do
|
45
59
|
rows = analytics.fetch(properties)
|
46
60
|
rows.should eq([[ "United States", "73834"], ["Ukraine", "15726"]])
|
47
61
|
analytics.rows.should eq([[ "United States", "73834"], ["Ukraine", "15726"]])
|
48
62
|
end
|
49
63
|
|
50
|
-
it
|
64
|
+
it 'raises not successful response error' do
|
51
65
|
stub_analytics_request(:status => 403, :code_type => Net::HTTPForbidden)
|
52
66
|
|
53
67
|
expect {
|
@@ -56,13 +70,15 @@ describe SimpleAnalytics::Api do
|
|
56
70
|
end
|
57
71
|
|
58
72
|
def stub_analytics_request(response = {})
|
59
|
-
data = {
|
60
|
-
|
61
|
-
|
73
|
+
data = {
|
74
|
+
:body => { :rows => [[ "United States", "73834"], ["Ukraine", "15726"]] }.to_json,
|
75
|
+
:status => 200,
|
76
|
+
:code_type => Net::HTTPOK
|
77
|
+
}
|
62
78
|
|
63
|
-
stub_request(:get,
|
79
|
+
stub_request(:get, STUB_URL).
|
64
80
|
with(:headers => { 'Authorization'=>'GoogleLogin auth=secret', 'Gdata-Version'=>'3' }).
|
65
|
-
to_return(data)
|
81
|
+
to_return(data.merge(response))
|
66
82
|
end
|
67
83
|
end
|
68
84
|
end
|
metadata
CHANGED
@@ -1,83 +1,108 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_analytics
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Andrew Djoga
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
17
|
+
|
18
|
+
date: 2013-01-15 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
15
21
|
name: json
|
16
|
-
|
22
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
17
23
|
none: false
|
18
|
-
requirements:
|
19
|
-
- -
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
hash: 3
|
28
|
+
segments:
|
29
|
+
- 0
|
30
|
+
version: "0"
|
22
31
|
type: :runtime
|
32
|
+
requirement: *id001
|
23
33
|
prerelease: false
|
24
|
-
|
25
|
-
- !ruby/object:Gem::Dependency
|
34
|
+
- !ruby/object:Gem::Dependency
|
26
35
|
name: google_client_login
|
27
|
-
|
36
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
28
37
|
none: false
|
29
|
-
requirements:
|
38
|
+
requirements:
|
30
39
|
- - ~>
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
hash: 13
|
42
|
+
segments:
|
43
|
+
- 0
|
44
|
+
- 3
|
45
|
+
version: "0.3"
|
33
46
|
type: :runtime
|
47
|
+
requirement: *id002
|
34
48
|
prerelease: false
|
35
|
-
|
36
|
-
- !ruby/object:Gem::Dependency
|
49
|
+
- !ruby/object:Gem::Dependency
|
37
50
|
name: rspec
|
38
|
-
|
51
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
39
52
|
none: false
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
hash: 3
|
57
|
+
segments:
|
58
|
+
- 0
|
59
|
+
version: "0"
|
44
60
|
type: :development
|
61
|
+
requirement: *id003
|
45
62
|
prerelease: false
|
46
|
-
|
47
|
-
- !ruby/object:Gem::Dependency
|
63
|
+
- !ruby/object:Gem::Dependency
|
48
64
|
name: fuubar
|
49
|
-
|
65
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
50
66
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
hash: 3
|
71
|
+
segments:
|
72
|
+
- 0
|
73
|
+
version: "0"
|
55
74
|
type: :development
|
75
|
+
requirement: *id004
|
56
76
|
prerelease: false
|
57
|
-
|
58
|
-
- !ruby/object:Gem::Dependency
|
77
|
+
- !ruby/object:Gem::Dependency
|
59
78
|
name: webmock
|
60
|
-
|
79
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
61
80
|
none: false
|
62
|
-
requirements:
|
63
|
-
- -
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
hash: 3
|
85
|
+
segments:
|
86
|
+
- 0
|
87
|
+
version: "0"
|
66
88
|
type: :development
|
89
|
+
requirement: *id005
|
67
90
|
prerelease: false
|
68
|
-
version_requirements: *70098908990640
|
69
91
|
description: The Simple Analytics allows to access Google Analytics report data
|
70
|
-
email:
|
92
|
+
email:
|
71
93
|
- andrew.djoga@gmail.com
|
72
94
|
executables: []
|
95
|
+
|
73
96
|
extensions: []
|
97
|
+
|
74
98
|
extra_rdoc_files: []
|
75
|
-
|
99
|
+
|
100
|
+
files:
|
76
101
|
- .gitignore
|
102
|
+
- .travis.yml
|
77
103
|
- Gemfile
|
78
|
-
- Gemfile.lock
|
79
104
|
- LICENSE
|
80
|
-
- README.
|
105
|
+
- README.md
|
81
106
|
- Rakefile
|
82
107
|
- lib/simple_analytics.rb
|
83
108
|
- lib/simple_analytics/version.rb
|
@@ -86,34 +111,37 @@ files:
|
|
86
111
|
- spec/spec_helper.rb
|
87
112
|
homepage: https://github.com/Djo/simple_analytics
|
88
113
|
licenses: []
|
114
|
+
|
89
115
|
post_install_message:
|
90
116
|
rdoc_options: []
|
91
|
-
|
117
|
+
|
118
|
+
require_paths:
|
92
119
|
- lib
|
93
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
120
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
94
121
|
none: false
|
95
|
-
requirements:
|
96
|
-
- -
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
|
99
|
-
segments:
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
hash: 3
|
126
|
+
segments:
|
100
127
|
- 0
|
101
|
-
|
102
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
|
+
version: "0"
|
129
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
103
130
|
none: false
|
104
|
-
requirements:
|
105
|
-
- -
|
106
|
-
- !ruby/object:Gem::Version
|
107
|
-
|
108
|
-
segments:
|
131
|
+
requirements:
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
hash: 3
|
135
|
+
segments:
|
109
136
|
- 0
|
110
|
-
|
137
|
+
version: "0"
|
111
138
|
requirements: []
|
139
|
+
|
112
140
|
rubyforge_project:
|
113
|
-
rubygems_version: 1.8.
|
141
|
+
rubygems_version: 1.8.24
|
114
142
|
signing_key:
|
115
143
|
specification_version: 3
|
116
144
|
summary: Google Analytics Export API Ruby Wrapper
|
117
|
-
test_files:
|
145
|
+
test_files:
|
118
146
|
- spec/simple_analytics_spec.rb
|
119
147
|
- spec/spec_helper.rb
|
data/Gemfile.lock
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
simple_analytics (0.0.1)
|
5
|
-
google_client_login (~> 0.3.1)
|
6
|
-
json
|
7
|
-
|
8
|
-
GEM
|
9
|
-
remote: http://rubygems.org/
|
10
|
-
specs:
|
11
|
-
addressable (2.2.6)
|
12
|
-
crack (0.3.1)
|
13
|
-
diff-lcs (1.1.3)
|
14
|
-
fuubar (0.0.6)
|
15
|
-
rspec (~> 2.0)
|
16
|
-
rspec-instafail (~> 0.1.8)
|
17
|
-
ruby-progressbar (~> 0.0.10)
|
18
|
-
google_client_login (0.3.1)
|
19
|
-
json (1.6.5)
|
20
|
-
rake (0.9.2.2)
|
21
|
-
rspec (2.8.0)
|
22
|
-
rspec-core (~> 2.8.0)
|
23
|
-
rspec-expectations (~> 2.8.0)
|
24
|
-
rspec-mocks (~> 2.8.0)
|
25
|
-
rspec-core (2.8.0)
|
26
|
-
rspec-expectations (2.8.0)
|
27
|
-
diff-lcs (~> 1.1.2)
|
28
|
-
rspec-instafail (0.1.9)
|
29
|
-
rspec-mocks (2.8.0)
|
30
|
-
ruby-progressbar (0.0.10)
|
31
|
-
webmock (1.7.10)
|
32
|
-
addressable (~> 2.2, > 2.2.5)
|
33
|
-
crack (>= 0.1.7)
|
34
|
-
|
35
|
-
PLATFORMS
|
36
|
-
ruby
|
37
|
-
|
38
|
-
DEPENDENCIES
|
39
|
-
fuubar (~> 0.0.6)
|
40
|
-
rake (~> 0.9.2.2)
|
41
|
-
rspec (~> 2.8)
|
42
|
-
simple_analytics!
|
43
|
-
webmock (~> 1.7.10)
|
data/README.rdoc
DELETED
@@ -1,75 +0,0 @@
|
|
1
|
-
= SimpleAnalytics
|
2
|
-
|
3
|
-
SimpleAnalytics gem provides accessing Google Analytics Export Api. It uses Version 3.0 of the Google Core Reporting API with JSON. You can find the google documentation {here}[http://code.google.com/apis/analytics/docs/gdata/v3/gdataGettingStarted.html].
|
4
|
-
|
5
|
-
== Installation
|
6
|
-
|
7
|
-
Install as a gem from rubygems:
|
8
|
-
|
9
|
-
gem install simple_analytics
|
10
|
-
|
11
|
-
== Getting Started
|
12
|
-
|
13
|
-
Authentication:
|
14
|
-
|
15
|
-
analytics = SimpleAnalytics::Api.authenticate('user@gmail.com', 'password')
|
16
|
-
|
17
|
-
The <tt>authenticate</tt> method sets an <tt>auth_token</tt> in the analytics service object. Then you can fetch data:
|
18
|
-
|
19
|
-
analytics.fetch('ids' => 'ga:id',
|
20
|
-
'metrics' => 'ga:visitors',
|
21
|
-
'dimensions' => 'ga:country',
|
22
|
-
'start-date' => '2012-01-01',
|
23
|
-
'end-date' => '2012-01-10')
|
24
|
-
# => [["United States","24451"], ["Brazil","15616"], ["Spain","3966"]
|
25
|
-
|
26
|
-
The <tt>fetch</tt> method sets and returns rows. Required query parameters are used to configure which data to return from Google Analytics:
|
27
|
-
* ids — The profile IDs from which to access data.
|
28
|
-
* start-date — The beginning of the date range.
|
29
|
-
* end-date — The end of the date range.
|
30
|
-
* metrics — The numeric values to return.
|
31
|
-
|
32
|
-
For more detailed information about the parameters see {google REST docs}[http://code.google.com/apis/analytics/docs/gdata/v3/exportRest.html].
|
33
|
-
|
34
|
-
== Authentication
|
35
|
-
|
36
|
-
For the authentication it uses gem {google_client_login}[https://github.com/fortuity/google_client_login] based on the ClientLogin. You can also pass extra parameters which allows the gem (see the gem's {README}[https://github.com/fortuity/google_client_login]):
|
37
|
-
|
38
|
-
analytics = SimpleAnalytics::Api.authenticate('user@gmail.com', 'password', { :accountType => 'GOOGLE',
|
39
|
-
:source => 'company-app-version' })
|
40
|
-
|
41
|
-
==== Authentication Token
|
42
|
-
|
43
|
-
You can set yourself the <tt>auth_token</tt> to use it in the fetching:
|
44
|
-
|
45
|
-
analytics.auth_token = 'your-token-from-oauth'
|
46
|
-
|
47
|
-
== An example
|
48
|
-
|
49
|
-
All parameters are escaped before a request. For date you can use the next tip: <tt>your_date.strftime("%Y-%m-%d")</tt>.
|
50
|
-
|
51
|
-
analytics = SimpleAnalytics::Api.authenticate('user@gmail.com', 'password')
|
52
|
-
|
53
|
-
analytics.fetch('ids' => 'ga:id',
|
54
|
-
'metrics' => 'ga:visitors',
|
55
|
-
'dimensions' => 'ga:country',
|
56
|
-
'start-date' => '2012-01-01',
|
57
|
-
'end-date' => '2012-01-10')
|
58
|
-
# => [["United States","24451"], ["Brazil","15616"], ["Spain","3966"]
|
59
|
-
|
60
|
-
analytics.rows
|
61
|
-
# => [["United States","24451"], ["Brazil","15616"], ["Spain","3966"]
|
62
|
-
|
63
|
-
analytics.body
|
64
|
-
# => returns the parsed response body (hash), where you can get other info, see google docs
|
65
|
-
|
66
|
-
analytics.fetch('ids' => 'ga:another-id',
|
67
|
-
'metrics' => 'ga:visitors,ga:newVisits',
|
68
|
-
'dimensions' => 'ga:pagePath',
|
69
|
-
'filters' => 'ga:pagepath=~/articles/[\w-]+\z'
|
70
|
-
'start-date' => '2012-01-01',
|
71
|
-
'end-date' => '2012-01-10')
|
72
|
-
# => [["/article/first-post","12", "2"], ["/article/second-post","2", "1"]]
|
73
|
-
|
74
|
-
analytics.rows
|
75
|
-
# => [["/article/first-post","12", "2"], ["/article/second-post","2", "1"]]
|