googl 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -1
- data/Gemfile.lock +1 -1
- data/README.rdoc +57 -0
- data/VERSION +1 -1
- data/googl.gemspec +14 -5
- data/lib/googl.rb +81 -3
- data/lib/googl/base.rb +1 -1
- data/lib/googl/client_login.rb +7 -1
- data/lib/googl/expand.rb +12 -5
- data/lib/googl/request.rb +1 -1
- data/lib/googl/ruby_extensions.rb +38 -0
- data/lib/googl/shorten.rb +14 -2
- data/spec/client_spec.rb +2 -4
- data/spec/expand_spec.rb +145 -6
- data/spec/fixtures/expand_404.json +24 -0
- data/spec/fixtures/expand_projection_clicks.json +40 -0
- data/spec/fixtures/expand_projection_full.json +282 -0
- data/spec/fixtures/expand_projection_strings.json +268 -0
- data/spec/fixtures/expand_removed.json +17 -0
- data/spec/fixtures/shorten_invalid_content_type.json +12 -0
- data/spec/shared_examples.rb +39 -0
- data/spec/shorten_spec.rb +28 -11
- data/spec/spec_helper.rb +29 -0
- metadata +14 -5
@@ -0,0 +1,17 @@
|
|
1
|
+
HTTP/1.1 200 OK
|
2
|
+
ETag: "EEZ1AD443JkEgW3KJFaymzTd26A/gwecVfJbUMJGMk3OPVUqhzMMyY8"
|
3
|
+
Expires: Mon, 17 Jan 2011 20:11:13 GMT
|
4
|
+
Date: Mon, 17 Jan 2011 20:11:13 GMT
|
5
|
+
Cache-Control: public, max-age=0, must-revalidate, no-transform
|
6
|
+
Content-Type: application/json; charset=UTF-8
|
7
|
+
X-Content-Type-Options: nosniff
|
8
|
+
X-Frame-Options: SAMEORIGIN
|
9
|
+
X-XSS-Protection: 1; mode=block
|
10
|
+
Server: GSE
|
11
|
+
Transfer-Encoding: chunked
|
12
|
+
|
13
|
+
{
|
14
|
+
"kind": "urlshortener#url",
|
15
|
+
"id": "http://goo.gl/R7f68",
|
16
|
+
"status": "REMOVED"
|
17
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
HTTP/1.1 400 Bad Request
|
2
|
+
Content-Type: text/html; charset=UTF-8
|
3
|
+
Date: Mon, 17 Jan 2011 20:35:55 GMT
|
4
|
+
Expires: Mon, 17 Jan 2011 20:35:55 GMT
|
5
|
+
Cache-Control: private, max-age=0
|
6
|
+
X-Content-Type-Options: nosniff
|
7
|
+
X-Frame-Options: SAMEORIGIN
|
8
|
+
X-XSS-Protection: 1; mode=block
|
9
|
+
Server: GSE
|
10
|
+
Transfer-Encoding: chunked
|
11
|
+
|
12
|
+
Unsupported content with type: application/x-www-form-urlencoded
|
@@ -0,0 +1,39 @@
|
|
1
|
+
shared_examples_for 'a period' do
|
2
|
+
|
3
|
+
describe "#referrers" do
|
4
|
+
it { element.should respond_to(:referrers) }
|
5
|
+
it { element.referrers.first.should respond_to(:count) }
|
6
|
+
it { element.referrers.first.should respond_to(:label) }
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "#countries" do
|
10
|
+
it { element.should respond_to(:countries) }
|
11
|
+
it { element.countries.first.should respond_to(:count) }
|
12
|
+
it { element.countries.first.should respond_to(:label) }
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "#browsers" do
|
16
|
+
it { element.should respond_to(:browsers) }
|
17
|
+
it { element.browsers.first.should respond_to(:count) }
|
18
|
+
it { element.browsers.first.should respond_to(:label) }
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "#platforms" do
|
22
|
+
it { element.should respond_to(:platforms) }
|
23
|
+
it { element.platforms.first.should respond_to(:count) }
|
24
|
+
it { element.platforms.first.should respond_to(:label) }
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
shared_examples_for 'a clicks' do
|
30
|
+
|
31
|
+
describe "#short_url_clicks" do
|
32
|
+
it { element.should respond_to(:short_url_clicks) }
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "#long_url_clicks" do
|
36
|
+
it { element.should respond_to(:long_url_clicks) }
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
data/spec/shorten_spec.rb
CHANGED
@@ -10,24 +10,41 @@ describe Googl::Shorten do
|
|
10
10
|
|
11
11
|
it { Googl.should respond_to(:shorten) }
|
12
12
|
|
13
|
-
|
13
|
+
context "with invalid url" do
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
subject.short_url.should == 'http://goo.gl/ump4S'
|
15
|
+
it "should return error for required url" do
|
16
|
+
lambda { Googl.shorten }.should raise_error(ArgumentError, "URL to shorten is required")
|
18
17
|
end
|
19
|
-
end
|
20
18
|
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
it "should return Unsupported content with type" do
|
20
|
+
Request.headers.delete('Content-Type')
|
21
|
+
lambda { Googl.shorten('http://www.uol.com') }.should raise_error(Exception, /Unsupported content with type: application\/x-www-form-urlencoded/)
|
24
22
|
end
|
23
|
+
|
25
24
|
end
|
26
25
|
|
27
|
-
|
28
|
-
|
29
|
-
|
26
|
+
context "with valid url" do
|
27
|
+
|
28
|
+
subject { Googl.shorten('http://www.zigotto.com') }
|
29
|
+
|
30
|
+
describe "#short_url" do
|
31
|
+
it "should return a short URL" do
|
32
|
+
subject.short_url.should == 'http://goo.gl/ump4S'
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "#long_url" do
|
37
|
+
it "should return a long url" do
|
38
|
+
subject.long_url.should == 'http://www.zigotto.com/'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "#qr_code" do
|
43
|
+
it "should return a url for generate a qr code" do
|
44
|
+
subject.qr_code.should == 'http://goo.gl/ump4S.qr'
|
45
|
+
end
|
30
46
|
end
|
47
|
+
|
31
48
|
end
|
32
49
|
|
33
50
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -6,6 +6,8 @@ require "rspec"
|
|
6
6
|
require 'webmock/rspec'
|
7
7
|
require 'googl'
|
8
8
|
|
9
|
+
require 'shared_examples'
|
10
|
+
|
9
11
|
def load_fixture(name)
|
10
12
|
File.new(File.join(File.expand_path(File.dirname(__FILE__)), '/fixtures', name))
|
11
13
|
end
|
@@ -20,9 +22,36 @@ def fake_urls
|
|
20
22
|
:headers => {'Content-Type'=>'application/json'}).
|
21
23
|
to_return(load_fixture('shorten.json'))
|
22
24
|
|
25
|
+
# Shorten Unsupported content with type
|
26
|
+
url_shorten = "https://www.googleapis.com/urlshortener/v1/url"
|
27
|
+
params = {"longUrl" => "http://www.uol.com"}.inspect
|
28
|
+
stub_request(:post, url_shorten).
|
29
|
+
with(:body => params).
|
30
|
+
to_return(load_fixture('shorten_invalid_content_type.json'))
|
31
|
+
|
23
32
|
# Expand
|
24
33
|
url_expand = "https://www.googleapis.com/urlshortener/v1/url?shortUrl=http://goo.gl/7lob"
|
25
34
|
stub_request(:get, url_expand).to_return(load_fixture('expand.json'))
|
35
|
+
|
36
|
+
# Expand with projection FULL
|
37
|
+
url_expand = "https://www.googleapis.com/urlshortener/v1/url?projection=full&shortUrl=http://goo.gl/DWDfi"
|
38
|
+
stub_request(:get, url_expand).to_return(load_fixture('expand_projection_full.json'))
|
39
|
+
|
40
|
+
# Expand with projection ANALYTICS_CLICKS
|
41
|
+
url_expand = "https://www.googleapis.com/urlshortener/v1/url?projection=analytics_clicks&shortUrl=http://goo.gl/DWDfi"
|
42
|
+
stub_request(:get, url_expand).to_return(load_fixture('expand_projection_clicks.json'))
|
43
|
+
|
44
|
+
# Expand with projection ANALYTICS_TOP_STRINGS
|
45
|
+
url_expand = "https://www.googleapis.com/urlshortener/v1/url?projection=analytics_top_strings&shortUrl=http://goo.gl/DWDfi"
|
46
|
+
stub_request(:get, url_expand).to_return(load_fixture('expand_projection_strings.json'))
|
47
|
+
|
48
|
+
# Expand error 404
|
49
|
+
url_expand = "https://www.googleapis.com/urlshortener/v1/url?shortUrl=http://goo.gl/blajjddkksijj"
|
50
|
+
stub_request(:get, url_expand).to_return(load_fixture('expand_404.json'))
|
51
|
+
|
52
|
+
# Expand REMOVED
|
53
|
+
url_expand = "https://www.googleapis.com/urlshortener/v1/url?shortUrl=http://goo.gl/R7f68"
|
54
|
+
stub_request(:get, url_expand).to_return(load_fixture('expand_removed.json'))
|
26
55
|
|
27
56
|
# Authentication
|
28
57
|
url_login = "https://www.google.com/accounts/ClientLogin"
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: googl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 3
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.3.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jesus Lopes
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-01-
|
18
|
+
date: 2011-01-17 00:00:00 -02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
26
26
|
none: false
|
27
27
|
requirements:
|
28
|
-
- - "
|
28
|
+
- - ">="
|
29
29
|
- !ruby/object:Gem::Version
|
30
30
|
hash: 5
|
31
31
|
segments:
|
@@ -149,14 +149,22 @@ files:
|
|
149
149
|
- lib/googl/client_login.rb
|
150
150
|
- lib/googl/expand.rb
|
151
151
|
- lib/googl/request.rb
|
152
|
+
- lib/googl/ruby_extensions.rb
|
152
153
|
- lib/googl/shorten.rb
|
153
154
|
- spec/client_spec.rb
|
154
155
|
- spec/expand_spec.rb
|
155
156
|
- spec/fixtures/client_login_invalid.json
|
156
157
|
- spec/fixtures/client_login_valid.json
|
157
158
|
- spec/fixtures/expand.json
|
159
|
+
- spec/fixtures/expand_404.json
|
160
|
+
- spec/fixtures/expand_projection_clicks.json
|
161
|
+
- spec/fixtures/expand_projection_full.json
|
162
|
+
- spec/fixtures/expand_projection_strings.json
|
163
|
+
- spec/fixtures/expand_removed.json
|
158
164
|
- spec/fixtures/shorten.json
|
159
165
|
- spec/fixtures/shorten_authenticated.json
|
166
|
+
- spec/fixtures/shorten_invalid_content_type.json
|
167
|
+
- spec/shared_examples.rb
|
160
168
|
- spec/shorten_spec.rb
|
161
169
|
- spec/spec_helper.rb
|
162
170
|
has_rdoc: true
|
@@ -196,5 +204,6 @@ summary: Wrapper for Google URL Shortener API
|
|
196
204
|
test_files:
|
197
205
|
- spec/client_spec.rb
|
198
206
|
- spec/expand_spec.rb
|
207
|
+
- spec/shared_examples.rb
|
199
208
|
- spec/shorten_spec.rb
|
200
209
|
- spec/spec_helper.rb
|