google_api 1.0.3 → 1.1.0.beta
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +8 -0
- data/README.md +8 -6
- data/google_api.gemspec +2 -2
- data/lib/google_api.rb +10 -9
- data/lib/google_api/configuration.rb +19 -5
- data/lib/google_api/ga/data.rb +154 -173
- data/lib/google_api/{ga.rb → ga/ga.rb} +0 -12
- data/lib/google_api/ga/session.rb +3 -143
- data/lib/google_api/session/session.rb +202 -0
- data/lib/google_api/session/session_methods.rb +41 -0
- data/lib/google_api/shorten/session.rb +16 -0
- data/lib/google_api/shorten/shorten.rb +28 -0
- data/lib/google_api/shorten/url/get.rb +32 -0
- data/lib/google_api/shorten/url/insert.rb +28 -0
- data/lib/google_api/shorten/url/list.rb +26 -0
- data/lib/google_api/shorten/url/url.rb +11 -0
- data/lib/google_api/version.rb +1 -1
- data/spec/lib/google_api_ga_data_spec.rb +0 -8
- metadata +16 -10
- data/lib/google_api/date.rb +0 -58
- data/lib/google_api/ga/helper.rb +0 -41
@@ -0,0 +1,28 @@
|
|
1
|
+
module GoogleApi
|
2
|
+
module Shorten
|
3
|
+
|
4
|
+
CONFIGURATION = {}
|
5
|
+
|
6
|
+
# Session
|
7
|
+
autoload :Session, 'google_api/shorten/session'
|
8
|
+
|
9
|
+
# Url
|
10
|
+
autoload :Url, 'google_api/shorten/url/url'
|
11
|
+
autoload :Insert, 'google_api/shorten/url/insert'
|
12
|
+
autoload :List, 'google_api/shorten/url/list'
|
13
|
+
autoload :Get, 'google_api/shorten/url/get'
|
14
|
+
|
15
|
+
def self.insert(url)
|
16
|
+
Insert.new(url)
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.list
|
20
|
+
List.new
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.get(url, projection = 'FULL')
|
24
|
+
Get.new(url, projection)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module GoogleApi
|
2
|
+
module Shorten
|
3
|
+
class Get < Url
|
4
|
+
|
5
|
+
attr_reader :short_url
|
6
|
+
attr_reader :projection
|
7
|
+
attr_reader :data
|
8
|
+
|
9
|
+
PROJECTION_LIST = ['FULL', 'ANALYTICS_CLICKS', 'ANALYTICS_TOP_STRINGS']
|
10
|
+
|
11
|
+
def initialize(short_url, projection)
|
12
|
+
@short_url = short_url
|
13
|
+
@projection = projection.upcase
|
14
|
+
|
15
|
+
unless PROJECTION_LIST.include?(projection)
|
16
|
+
raise GoogleApi::ShortenError, "Invalid projection. Must be #{PROJECTION_LIST.join(',')}."
|
17
|
+
end
|
18
|
+
|
19
|
+
get
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def get
|
25
|
+
@data = JSON.parse(_session.client.execute( api_method: _session.api.url.get,
|
26
|
+
parameters: { shortUrl: @short_url,
|
27
|
+
projection: @projection } ).response.env[:body])
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module GoogleApi
|
2
|
+
module Shorten
|
3
|
+
class Insert < Url
|
4
|
+
|
5
|
+
attr_reader :long_url
|
6
|
+
attr_reader :short_url
|
7
|
+
|
8
|
+
def initialize(long_url)
|
9
|
+
@long_url = long_url
|
10
|
+
|
11
|
+
get
|
12
|
+
end
|
13
|
+
|
14
|
+
def details(projection = 'FULL')
|
15
|
+
Shorten.get(@short_url, projection)
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def get
|
21
|
+
@short_url = _session.client.execute( api_method: _session.api.url.insert,
|
22
|
+
body: { longUrl: @long_url }.to_json,
|
23
|
+
headers: {'Content-Type' => 'application/json'} ).data.id
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module GoogleApi
|
2
|
+
module Shorten
|
3
|
+
class List < Url
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
get
|
7
|
+
end
|
8
|
+
|
9
|
+
def count
|
10
|
+
@data['totalItems']
|
11
|
+
end
|
12
|
+
|
13
|
+
def items
|
14
|
+
@data['items']
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def get
|
20
|
+
@data = JSON.parse(_session.client.execute( api_method: _session.api.url.list,
|
21
|
+
parameters: { projection: 'FULL' } ).response.env[:body])
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/google_api/version.rb
CHANGED
@@ -7,14 +7,6 @@ describe "GoogleApi::Ga::Data" do
|
|
7
7
|
|
8
8
|
|
9
9
|
|
10
|
-
# Rows
|
11
|
-
# -------------------------------------------------------------------------------------------------
|
12
|
-
it "rows" do
|
13
|
-
lambda { @data.new.rows }.should raise_error(GoogleApi::SessionError)
|
14
|
-
end
|
15
|
-
|
16
|
-
|
17
|
-
|
18
10
|
# Default values
|
19
11
|
# -------------------------------------------------------------------------------------------------
|
20
12
|
it "default values" do
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.0.beta
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Ondřej Moravčík
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-08-
|
12
|
+
date: 2012-08-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: google-api-client
|
@@ -59,7 +59,7 @@ dependencies:
|
|
59
59
|
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
|
-
description: Simple Google Api. Include google analytics.
|
62
|
+
description: Simple Google Api. Include google analytics, url shortener.
|
63
63
|
email:
|
64
64
|
- moravcik.ondrej@gmail.com
|
65
65
|
executables: []
|
@@ -80,13 +80,11 @@ files:
|
|
80
80
|
- lib/google_api/configuration.rb
|
81
81
|
- lib/google_api/core_ext/hash.rb
|
82
82
|
- lib/google_api/core_ext/string.rb
|
83
|
-
- lib/google_api/date.rb
|
84
|
-
- lib/google_api/ga.rb
|
85
83
|
- lib/google_api/ga/data.rb
|
86
84
|
- lib/google_api/ga/data/data_dsl.rb
|
87
85
|
- lib/google_api/ga/data/filters_dsl.rb
|
88
86
|
- lib/google_api/ga/data/segment_dsl.rb
|
89
|
-
- lib/google_api/ga/
|
87
|
+
- lib/google_api/ga/ga.rb
|
90
88
|
- lib/google_api/ga/management/account.rb
|
91
89
|
- lib/google_api/ga/management/goal.rb
|
92
90
|
- lib/google_api/ga/management/management.rb
|
@@ -94,6 +92,14 @@ files:
|
|
94
92
|
- lib/google_api/ga/management/segment.rb
|
95
93
|
- lib/google_api/ga/management/webproperty.rb
|
96
94
|
- lib/google_api/ga/session.rb
|
95
|
+
- lib/google_api/session/session.rb
|
96
|
+
- lib/google_api/session/session_methods.rb
|
97
|
+
- lib/google_api/shorten/session.rb
|
98
|
+
- lib/google_api/shorten/shorten.rb
|
99
|
+
- lib/google_api/shorten/url/get.rb
|
100
|
+
- lib/google_api/shorten/url/insert.rb
|
101
|
+
- lib/google_api/shorten/url/list.rb
|
102
|
+
- lib/google_api/shorten/url/url.rb
|
97
103
|
- lib/google_api/version.rb
|
98
104
|
- spec/lib/google_api_cache_spec.rb
|
99
105
|
- spec/lib/google_api_ga_data_spec.rb
|
@@ -115,15 +121,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
115
121
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
122
|
none: false
|
117
123
|
requirements:
|
118
|
-
- - ! '
|
124
|
+
- - ! '>'
|
119
125
|
- !ruby/object:Gem::Version
|
120
|
-
version:
|
126
|
+
version: 1.3.1
|
121
127
|
requirements: []
|
122
128
|
rubyforge_project:
|
123
129
|
rubygems_version: 1.8.23
|
124
130
|
signing_key:
|
125
131
|
specification_version: 3
|
126
|
-
summary: Simple Google Api. Include google analytics.
|
132
|
+
summary: Simple Google Api. Include google analytics, url shortener.
|
127
133
|
test_files:
|
128
134
|
- spec/lib/google_api_cache_spec.rb
|
129
135
|
- spec/lib/google_api_ga_data_spec.rb
|
data/lib/google_api/date.rb
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
require "date"
|
2
|
-
|
3
|
-
module GoogleApi
|
4
|
-
module Date
|
5
|
-
|
6
|
-
DATE_FORMAT = /\A[0-9]{4}-[0-9]{2}-[0-9]{2}\Z/
|
7
|
-
|
8
|
-
def to_date(date)
|
9
|
-
if date.is_a?(String)
|
10
|
-
unless date =~ DATE_FORMAT
|
11
|
-
raise GoogleApi::DateError, "Date: #{date} must match with #{DATE_FORMAT}."
|
12
|
-
end
|
13
|
-
|
14
|
-
date = Date.parse(date)
|
15
|
-
end
|
16
|
-
|
17
|
-
date.to_date
|
18
|
-
end
|
19
|
-
|
20
|
-
def now
|
21
|
-
Date.today
|
22
|
-
end
|
23
|
-
|
24
|
-
def prev_month
|
25
|
-
Date.today.prev_month
|
26
|
-
end
|
27
|
-
|
28
|
-
def more_months?(d1, d2)
|
29
|
-
|
30
|
-
d1 = Date.parse(d1) if d1.is_a?(String)
|
31
|
-
d2 = Date.parse(d2) if d2.is_a?(String)
|
32
|
-
|
33
|
-
d1.month != d2.month
|
34
|
-
end
|
35
|
-
|
36
|
-
def more_years?(d1, d2)
|
37
|
-
|
38
|
-
d1 = Date.parse(d1) if d1.is_a?(String)
|
39
|
-
d2 = Date.parse(d2) if d2.is_a?(String)
|
40
|
-
|
41
|
-
d1.year != d2.year
|
42
|
-
end
|
43
|
-
|
44
|
-
def day_older?(date)
|
45
|
-
|
46
|
-
if date.is_a?(String)
|
47
|
-
date = Date.parse(date)
|
48
|
-
end
|
49
|
-
|
50
|
-
if (Date.today <=> date.to_date) > 0
|
51
|
-
return true
|
52
|
-
end
|
53
|
-
|
54
|
-
return false
|
55
|
-
end
|
56
|
-
|
57
|
-
end
|
58
|
-
end
|
data/lib/google_api/ga/helper.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
module GoogleApi
|
2
|
-
module Ga
|
3
|
-
module Helper
|
4
|
-
|
5
|
-
# Same as get but automaticly add day, month and year to dimension
|
6
|
-
#
|
7
|
-
# Also check cache
|
8
|
-
#
|
9
|
-
def get_by_day(parameters, start_date = prev_month, end_date = now, expire = nil)
|
10
|
-
|
11
|
-
[:dimensions, :sort].each do |param|
|
12
|
-
parameters[param] = [] unless parameters[param]
|
13
|
-
|
14
|
-
if parameters[param].is_a?(String) || parameters[param].is_a?(Symbol)
|
15
|
-
parameters[param] = [parameters[param]]
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
parameters[:dimensions] << :day
|
20
|
-
|
21
|
-
if more_years?(start_date, end_date)
|
22
|
-
parameters[:dimensions] << :month
|
23
|
-
parameters[:dimensions] << :year
|
24
|
-
|
25
|
-
parameters[:sort] << :year
|
26
|
-
parameters[:sort] << :month
|
27
|
-
|
28
|
-
elsif more_months?(start_date, end_date)
|
29
|
-
parameters[:dimensions] << :month
|
30
|
-
|
31
|
-
parameters[:sort] << :month
|
32
|
-
end
|
33
|
-
|
34
|
-
parameters[:sort] << :day
|
35
|
-
|
36
|
-
get(parameters, start_date, end_date, expire)
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|