bitly-oauth 0.1.0
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/History.txt +154 -0
- data/LICENSE +20 -0
- data/README.md +87 -0
- data/README.rdoc +35 -0
- data/Rakefile +42 -0
- data/VERSION +1 -0
- data/lib/bitly_oauth.rb +28 -0
- data/lib/bitly_oauth/access_token.rb +37 -0
- data/lib/bitly_oauth/client.rb +149 -0
- data/lib/bitly_oauth/country.rb +10 -0
- data/lib/bitly_oauth/day.rb +12 -0
- data/lib/bitly_oauth/error.rb +15 -0
- data/lib/bitly_oauth/lib/core_ext/hash.rb +27 -0
- data/lib/bitly_oauth/lib/core_ext/string.rb +5 -0
- data/lib/bitly_oauth/missing_url.rb +12 -0
- data/lib/bitly_oauth/realtime_link.rb +16 -0
- data/lib/bitly_oauth/referrer.rb +12 -0
- data/lib/bitly_oauth/referring_domain.rb +11 -0
- data/lib/bitly_oauth/response.rb +39 -0
- data/lib/bitly_oauth/url.rb +118 -0
- data/lib/bitly_oauth/user.rb +104 -0
- data/test/fixtures/9uX1TE.json +1 -0
- data/test/fixtures/9uX1TEclicks.json +1 -0
- data/test/fixtures/9uX1TEclicks2.json +1 -0
- data/test/fixtures/9uX1TEinfo.json +1 -0
- data/test/fixtures/9uX1TEinfo2.json +1 -0
- data/test/fixtures/auth_fail.json +1 -0
- data/test/fixtures/auth_success.json +1 -0
- data/test/fixtures/betaworks.json +1 -0
- data/test/fixtures/betaworks2.json +1 -0
- data/test/fixtures/betaworks_jmp.json +1 -0
- data/test/fixtures/betaworks_other_user.json +1 -0
- data/test/fixtures/bitly9uX1TE.json +1 -0
- data/test/fixtures/bitly_pro_domain.json +1 -0
- data/test/fixtures/clicks_by_day.json +1 -0
- data/test/fixtures/clicks_by_day1.json +1 -0
- data/test/fixtures/clicks_by_day2.json +1 -0
- data/test/fixtures/clicks_by_minute1_url.json +1 -0
- data/test/fixtures/clicks_by_minute2_url.json +1 -0
- data/test/fixtures/clicks_by_minute_hash.json +1 -0
- data/test/fixtures/clicks_by_minute_hashes.json +1 -0
- data/test/fixtures/country_hash.json +1 -0
- data/test/fixtures/country_hash2.json +1 -0
- data/test/fixtures/country_url.json +1 -0
- data/test/fixtures/failure.json +1 -0
- data/test/fixtures/invalid_bitly_pro_domain.json +1 -0
- data/test/fixtures/invalid_credentials.json +1 -0
- data/test/fixtures/invalid_domain.json +1 -0
- data/test/fixtures/invalid_user.json +1 -0
- data/test/fixtures/invalid_x_api_key.json +1 -0
- data/test/fixtures/lookup_multiple_url.json +1 -0
- data/test/fixtures/lookup_not_real_url.json +1 -0
- data/test/fixtures/lookup_single_url.json +1 -0
- data/test/fixtures/missing_hash.json +1 -0
- data/test/fixtures/multiple_info.json +1 -0
- data/test/fixtures/multiple_url_click.json +1 -0
- data/test/fixtures/multiple_urls.json +1 -0
- data/test/fixtures/not_bitly_pro_domain.json +1 -0
- data/test/fixtures/not_found_info.json +1 -0
- data/test/fixtures/referrer_hash.json +1 -0
- data/test/fixtures/referrer_hash2.json +1 -0
- data/test/fixtures/referrer_url.json +1 -0
- data/test/fixtures/success.json +1 -0
- data/test/fixtures/url_info.json +1 -0
- data/test/fixtures/user_clicks.json +32 -0
- data/test/fixtures/user_countries.json +60 -0
- data/test/fixtures/user_realtime_links.json +15 -0
- data/test/fixtures/user_referrers.json +1 -0
- data/test/fixtures/valid_user.json +1 -0
- data/test/integration/strategy/old_test_api_key.rb +20 -0
- data/test/integration/test_client.rb +709 -0
- data/test/integration/test_user.rb +97 -0
- data/test/test_helper.rb +54 -0
- data/test/unit/core_ext/test_hash.rb +69 -0
- data/test/unit/core_ext/test_string.rb +14 -0
- data/test/unit/test_bitly_oauth.rb +19 -0
- data/test/unit/test_client.rb +87 -0
- data/test/unit/test_country.rb +19 -0
- data/test/unit/test_day.rb +22 -0
- data/test/unit/test_error.rb +11 -0
- data/test/unit/test_missing.rb +34 -0
- data/test/unit/test_realtime_link.rb +30 -0
- data/test/unit/test_referrer.rb +19 -0
- data/test/unit/test_referring_domain.rb +21 -0
- data/test/unit/test_response.rb +86 -0
- data/test/unit/test_url.rb +156 -0
- data/test/unit/test_user.rb +17 -0
- metadata +215 -0
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestReferrer < Test::Unit::TestCase
|
4
|
+
context "a referrer" do
|
5
|
+
setup do
|
6
|
+
@referrer = BitlyOAuth::Referrer.new
|
7
|
+
end
|
8
|
+
|
9
|
+
[:clicks, :referrer, :referrer_app, :url].each do |method|
|
10
|
+
should "respond to #{method}" do
|
11
|
+
assert_respond_to @referrer, method
|
12
|
+
end
|
13
|
+
should "set #{method} when initializing" do
|
14
|
+
referrer = BitlyOAuth::Referrer.new(method.to_s => 'test')
|
15
|
+
assert_equal 'test', referrer.send(method)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestReferringDomain < Test::Unit::TestCase
|
4
|
+
context "a referring domain" do
|
5
|
+
setup do
|
6
|
+
@referring_domain = BitlyOAuth::ReferringDomain.new
|
7
|
+
end
|
8
|
+
|
9
|
+
[:clicks, :domain].each do |method|
|
10
|
+
should "respond to #{method}" do
|
11
|
+
assert_respond_to @referring_domain, method
|
12
|
+
end
|
13
|
+
|
14
|
+
should "set #{method} when initializing" do
|
15
|
+
referrer = BitlyOAuth::ReferringDomain.new(method.to_s => 'test')
|
16
|
+
assert_equal 'test', referrer.send(method)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestResponse < Test::Unit::TestCase
|
4
|
+
context "with a unsupported response" do
|
5
|
+
should "raise an error" do
|
6
|
+
assert_raises RuntimeError, "Unsupported Response type: Object" do
|
7
|
+
BitlyOAuth::Response.new(Object.new).success?
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
context "with an oauth response" do
|
12
|
+
setup do
|
13
|
+
OAuth2::Response.stubs(:=== => true)
|
14
|
+
end
|
15
|
+
should "return true" do
|
16
|
+
response = BitlyOAuth::Response.new(stub('oauth', :parsed => {'status_code' => 200}))
|
17
|
+
assert_equal true, response.success?
|
18
|
+
end
|
19
|
+
should "return false" do
|
20
|
+
response = BitlyOAuth::Response.new(stub('oauth', :parsed => {'status_code' => 'not 200'}))
|
21
|
+
assert_equal false, response.success?
|
22
|
+
end
|
23
|
+
should "return the status code" do
|
24
|
+
response = BitlyOAuth::Response.new(stub('oauth', :parsed => {'status_code' => 'some status code'}))
|
25
|
+
assert_equal 'some status code', response.status,
|
26
|
+
end
|
27
|
+
should "return the response body" do
|
28
|
+
response = BitlyOAuth::Response.new(stub('oauth', :parsed => { 'data' => {} } ))
|
29
|
+
assert_equal Hash.new, response.body
|
30
|
+
end
|
31
|
+
should "return the response body" do
|
32
|
+
response = BitlyOAuth::Response.new(stub('oauth', :parsed => {'data' => nil}))
|
33
|
+
assert_equal nil, response.body
|
34
|
+
end
|
35
|
+
should "return the status text reason" do
|
36
|
+
response = BitlyOAuth::Response.new(stub('oauth', :parsed => {'status_txt' => "OK"}))
|
37
|
+
assert_equal "OK", response.reason
|
38
|
+
end
|
39
|
+
should "return the status text reason" do
|
40
|
+
response = BitlyOAuth::Response.new(stub('oauth', :parsed => {'status_txt' => "RATE_LIMIT_EXCEEDED"}))
|
41
|
+
assert_equal "Rate Limit Exceeded", response.reason
|
42
|
+
end
|
43
|
+
should "return the status text reason" do
|
44
|
+
response = BitlyOAuth::Response.new(stub('oauth', :parsed => {'status_txt' => "INVALID_ANYTHING"}))
|
45
|
+
assert_equal "Invalid Anything", response.reason
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context "with a HTTParty response" do
|
50
|
+
setup do
|
51
|
+
HTTParty::Response.stubs(:=== => true)
|
52
|
+
end
|
53
|
+
should "return true" do
|
54
|
+
response = BitlyOAuth::Response.new(stub(:parsed_response => { 'status_code' => 200 } ))
|
55
|
+
assert_equal true, response.success?
|
56
|
+
end
|
57
|
+
should "return false" do
|
58
|
+
response = BitlyOAuth::Response.new(stub(:parsed_response => { 'status_code' => 'not 200' }))
|
59
|
+
assert_equal false, response.success?
|
60
|
+
end
|
61
|
+
should "return the status code" do
|
62
|
+
response = BitlyOAuth::Response.new(stub(:parsed_response => { 'status_code' => 'some status code' }))
|
63
|
+
assert_equal 'some status code', response.status,
|
64
|
+
end
|
65
|
+
should "return the response body" do
|
66
|
+
response = BitlyOAuth::Response.new(stub(:parsed_response => { 'data' => {} } ))
|
67
|
+
assert_equal Hash.new, response.body
|
68
|
+
end
|
69
|
+
should "return the response body" do
|
70
|
+
response = BitlyOAuth::Response.new(stub(:parsed_response => { 'data' => nil }))
|
71
|
+
assert_equal nil, response.body
|
72
|
+
end
|
73
|
+
should "return the status text reason" do
|
74
|
+
response = BitlyOAuth::Response.new(stub(:parsed_response => { 'status_txt' => "OK" }))
|
75
|
+
assert_equal "OK", response.reason
|
76
|
+
end
|
77
|
+
should "return the status text reason" do
|
78
|
+
response = BitlyOAuth::Response.new(stub(:parsed_response => { 'status_txt' => "RATE_LIMIT_EXCEEDED" }))
|
79
|
+
assert_equal "Rate Limit Exceeded", response.reason
|
80
|
+
end
|
81
|
+
should "return the status text reason" do
|
82
|
+
response = BitlyOAuth::Response.new(stub(:parsed_response => { 'status_txt' => "INVALID_ANYTHING" }))
|
83
|
+
assert_equal "Invalid Anything", response.reason
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,156 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestUrl < Test::Unit::TestCase
|
4
|
+
context "with a client" do
|
5
|
+
setup do
|
6
|
+
@client = BitlyOAuth.new('client_id', 'client_secret')
|
7
|
+
@client.set_access_token_from_token('token')
|
8
|
+
end
|
9
|
+
context "and a url" do
|
10
|
+
setup do
|
11
|
+
@url = BitlyOAuth::Url.new(@client)
|
12
|
+
end
|
13
|
+
[:short_url,
|
14
|
+
:long_url,
|
15
|
+
:user_hash,
|
16
|
+
:global_hash,
|
17
|
+
:user_clicks,
|
18
|
+
:global_clicks,
|
19
|
+
:new_hash?,
|
20
|
+
:title,
|
21
|
+
:created_by,
|
22
|
+
:referrers,
|
23
|
+
:countries,
|
24
|
+
:clicks_by_minute,
|
25
|
+
:clicks_by_day].each do |method|
|
26
|
+
should "respond to #{method}" do
|
27
|
+
assert_respond_to @url, method
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context "and an expanded url" do
|
33
|
+
context "getting click data" do
|
34
|
+
setup do
|
35
|
+
stub_get("https://api-ssl.bit.ly/v3/clicks?access_token=token&hash=9uX1TE", ['9uX1TEclicks.json', '9uX1TEclicks2.json'])
|
36
|
+
@url = BitlyOAuth::Url.new(@client, 'hash' => '9uX1TE')
|
37
|
+
end
|
38
|
+
should "get clicks when global clicks is called" do
|
39
|
+
assert_equal 81, @url.global_clicks
|
40
|
+
end
|
41
|
+
should "get clicks when user clicks is called" do
|
42
|
+
assert_equal 0, @url.user_clicks
|
43
|
+
end
|
44
|
+
should "get global clicks the first time and only update when forced" do
|
45
|
+
assert_equal 81, @url.global_clicks
|
46
|
+
assert_equal 81, @url.global_clicks
|
47
|
+
assert_equal 82, @url.global_clicks(:force => true)
|
48
|
+
end
|
49
|
+
should "get user clicks the first time and only update when forced" do
|
50
|
+
assert_equal 0, @url.user_clicks
|
51
|
+
assert_equal 0, @url.user_clicks
|
52
|
+
assert_equal 1, @url.user_clicks(:force => true)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
context "getting info" do
|
56
|
+
setup do
|
57
|
+
stub_get("https://api-ssl.bit.ly/v3/info?hash=9uX1TE&access_token=token", ['9uX1TEinfo.json', '9uX1TEinfo2.json'])
|
58
|
+
@url = BitlyOAuth::Url.new(@client, 'hash' => '9uX1TE')
|
59
|
+
end
|
60
|
+
should "get info when title is called" do
|
61
|
+
assert_equal "A title", @url.title
|
62
|
+
end
|
63
|
+
should "get info when created_by is called" do
|
64
|
+
assert_equal 'philnash', @url.created_by
|
65
|
+
end
|
66
|
+
should "get title the first time and only update when forced" do
|
67
|
+
assert_equal "A title", @url.title
|
68
|
+
assert_equal "A title", @url.title
|
69
|
+
assert_equal "A New Title", @url.title(:force => true)
|
70
|
+
end
|
71
|
+
should "get the creator the first time and only update when forced" do
|
72
|
+
assert_equal 'philnash', @url.created_by
|
73
|
+
assert_equal 'philnash', @url.created_by
|
74
|
+
# updating just to prove it works, creator is unlikely to change
|
75
|
+
assert_equal 'philnash2', @url.created_by(:force => true)
|
76
|
+
end
|
77
|
+
context "steps to prevent an infinite loop" do
|
78
|
+
should "doesn't get info if the title is an empty string" do
|
79
|
+
@url = BitlyOAuth::Url.new(@client, 'hash' => '9uX1TE', 'title' => '')
|
80
|
+
assert_equal "", @url.title
|
81
|
+
end
|
82
|
+
should "doesn't get info if the title is explicitly set to nil" do
|
83
|
+
@url = BitlyOAuth::Url.new(@client, 'hash' => '9uX1TE', 'title' => nil)
|
84
|
+
assert_equal "", @url.title
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
context "getting referrers" do
|
89
|
+
setup do
|
90
|
+
stub_get("https://api-ssl.bit.ly/v3/referrers?access_token=token&hash=djZ9g4", ['referrer_hash.json', 'referrer_hash2.json'])
|
91
|
+
@url = BitlyOAuth::Url.new(@client, 'hash' => 'djZ9g4')
|
92
|
+
end
|
93
|
+
should 'get referrers when called' do
|
94
|
+
assert_instance_of Array, @url.referrers
|
95
|
+
assert_instance_of BitlyOAuth::Referrer, @url.referrers.first
|
96
|
+
assert_equal 'direct', @url.referrers.first.referrer
|
97
|
+
assert_equal 62, @url.referrers.first.clicks
|
98
|
+
end
|
99
|
+
should 'force update when told to' do
|
100
|
+
assert_equal 62, @url.referrers.first.clicks
|
101
|
+
assert_equal 62, @url.referrers.first.clicks
|
102
|
+
assert_equal 63, @url.referrers(:force => true).first.clicks
|
103
|
+
end
|
104
|
+
end
|
105
|
+
context "getting countries" do
|
106
|
+
setup do
|
107
|
+
stub_get("https://api-ssl.bit.ly/v3/countries?hash=djZ9g4&access_token=token", ['country_hash.json', 'country_hash2.json'])
|
108
|
+
@url = BitlyOAuth::Url.new(@client, 'hash' => 'djZ9g4')
|
109
|
+
end
|
110
|
+
should 'get countries when called' do
|
111
|
+
assert_instance_of Array, @url.countries
|
112
|
+
assert_instance_of BitlyOAuth::Country, @url.countries.first
|
113
|
+
assert_equal 'US', @url.countries.first.country
|
114
|
+
assert_equal 58, @url.countries.first.clicks
|
115
|
+
end
|
116
|
+
should 'force update when told to' do
|
117
|
+
assert_equal 58, @url.countries.first.clicks
|
118
|
+
assert_equal 58, @url.countries.first.clicks
|
119
|
+
assert_equal 59, @url.countries(:force => true).first.clicks
|
120
|
+
end
|
121
|
+
end
|
122
|
+
context "getting clicks by minute" do
|
123
|
+
setup do
|
124
|
+
@short_url = "http://j.mp/9DguyN"
|
125
|
+
stub_get("https://api-ssl.bit.ly/v3/clicks_by_minute?shortUrl=#{CGI.escape(@short_url)}&access_token=token", ['clicks_by_minute1_url.json', 'clicks_by_minute2_url.json'])
|
126
|
+
@url = BitlyOAuth::Url.new(@client, 'short_url' => @short_url)
|
127
|
+
end
|
128
|
+
should 'get clicks_by_minute when called' do
|
129
|
+
assert_instance_of Array, @url.clicks_by_minute
|
130
|
+
assert_equal 0, @url.clicks_by_minute[0]
|
131
|
+
end
|
132
|
+
should 'force update when told to' do
|
133
|
+
assert_equal 0, @url.clicks_by_minute[2]
|
134
|
+
assert_equal 0, @url.clicks_by_minute[2]
|
135
|
+
assert_equal 1, @url.clicks_by_minute(:force => true)[2]
|
136
|
+
end
|
137
|
+
end
|
138
|
+
context "getting clicks by day" do
|
139
|
+
setup do
|
140
|
+
@hash = "9DguyN"
|
141
|
+
stub_get("https://api-ssl.bit.ly/v3/clicks_by_day?hash=#{@hash}&access_token=token", ['clicks_by_day1.json', 'clicks_by_day2.json'])
|
142
|
+
@url = BitlyOAuth::Url.new(@client, 'hash' => @hash)
|
143
|
+
end
|
144
|
+
should 'get clicks_by_day when called' do
|
145
|
+
assert_instance_of Array, @url.clicks_by_day
|
146
|
+
assert_instance_of BitlyOAuth::Day, @url.clicks_by_day[0]
|
147
|
+
end
|
148
|
+
should 'force update when told to' do
|
149
|
+
assert_equal 1, @url.clicks_by_day[0].clicks
|
150
|
+
assert_equal 1, @url.clicks_by_day[0].clicks
|
151
|
+
assert_equal 2, @url.clicks_by_day(:force => true)[0].clicks
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestUser < Test::Unit::TestCase
|
4
|
+
context "with an access_token" do
|
5
|
+
setup do
|
6
|
+
client = BitlyOAuth::Client.new('client_id', 'client_secret')
|
7
|
+
access_token = client.get_access_token_from_token('token')
|
8
|
+
@user = BitlyOAuth::User.new(access_token)
|
9
|
+
end
|
10
|
+
|
11
|
+
context 'the user' do
|
12
|
+
should 'get a client' do
|
13
|
+
assert_kind_of BitlyOAuth::Client, @user.client
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
metadata
ADDED
@@ -0,0 +1,215 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bitly-oauth
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- jonstorer
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-01-21 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: httparty
|
16
|
+
requirement: &70324210549840 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.7.6
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70324210549840
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: oauth2
|
27
|
+
requirement: &70324210549300 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.1.1
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70324210549300
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: shoulda
|
38
|
+
requirement: &70324210548740 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70324210548740
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: jeweler
|
49
|
+
requirement: &70324210548180 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.4.0
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70324210548180
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: rcov
|
60
|
+
requirement: &70324210547460 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70324210547460
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: mocha
|
71
|
+
requirement: &70324210545740 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 0.10.0
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70324210545740
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: fakeweb
|
82
|
+
requirement: &70324210545260 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: 1.2.8
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *70324210545260
|
91
|
+
description: ! 'A ruby wrapper for version 3 of the bit.ly API
|
92
|
+
|
93
|
+
Supports OAuth authentication
|
94
|
+
|
95
|
+
'
|
96
|
+
email: jonathon.scott.storer@gmail.com
|
97
|
+
executables: []
|
98
|
+
extensions: []
|
99
|
+
extra_rdoc_files:
|
100
|
+
- LICENSE
|
101
|
+
- README.md
|
102
|
+
- README.rdoc
|
103
|
+
files:
|
104
|
+
- History.txt
|
105
|
+
- LICENSE
|
106
|
+
- README.md
|
107
|
+
- README.rdoc
|
108
|
+
- Rakefile
|
109
|
+
- VERSION
|
110
|
+
- lib/bitly_oauth.rb
|
111
|
+
- lib/bitly_oauth/access_token.rb
|
112
|
+
- lib/bitly_oauth/client.rb
|
113
|
+
- lib/bitly_oauth/country.rb
|
114
|
+
- lib/bitly_oauth/day.rb
|
115
|
+
- lib/bitly_oauth/error.rb
|
116
|
+
- lib/bitly_oauth/lib/core_ext/hash.rb
|
117
|
+
- lib/bitly_oauth/lib/core_ext/string.rb
|
118
|
+
- lib/bitly_oauth/missing_url.rb
|
119
|
+
- lib/bitly_oauth/realtime_link.rb
|
120
|
+
- lib/bitly_oauth/referrer.rb
|
121
|
+
- lib/bitly_oauth/referring_domain.rb
|
122
|
+
- lib/bitly_oauth/response.rb
|
123
|
+
- lib/bitly_oauth/url.rb
|
124
|
+
- lib/bitly_oauth/user.rb
|
125
|
+
- test/fixtures/9uX1TE.json
|
126
|
+
- test/fixtures/9uX1TEclicks.json
|
127
|
+
- test/fixtures/9uX1TEclicks2.json
|
128
|
+
- test/fixtures/9uX1TEinfo.json
|
129
|
+
- test/fixtures/9uX1TEinfo2.json
|
130
|
+
- test/fixtures/auth_fail.json
|
131
|
+
- test/fixtures/auth_success.json
|
132
|
+
- test/fixtures/betaworks.json
|
133
|
+
- test/fixtures/betaworks2.json
|
134
|
+
- test/fixtures/betaworks_jmp.json
|
135
|
+
- test/fixtures/betaworks_other_user.json
|
136
|
+
- test/fixtures/bitly9uX1TE.json
|
137
|
+
- test/fixtures/bitly_pro_domain.json
|
138
|
+
- test/fixtures/clicks_by_day.json
|
139
|
+
- test/fixtures/clicks_by_day1.json
|
140
|
+
- test/fixtures/clicks_by_day2.json
|
141
|
+
- test/fixtures/clicks_by_minute1_url.json
|
142
|
+
- test/fixtures/clicks_by_minute2_url.json
|
143
|
+
- test/fixtures/clicks_by_minute_hash.json
|
144
|
+
- test/fixtures/clicks_by_minute_hashes.json
|
145
|
+
- test/fixtures/country_hash.json
|
146
|
+
- test/fixtures/country_hash2.json
|
147
|
+
- test/fixtures/country_url.json
|
148
|
+
- test/fixtures/failure.json
|
149
|
+
- test/fixtures/invalid_bitly_pro_domain.json
|
150
|
+
- test/fixtures/invalid_credentials.json
|
151
|
+
- test/fixtures/invalid_domain.json
|
152
|
+
- test/fixtures/invalid_user.json
|
153
|
+
- test/fixtures/invalid_x_api_key.json
|
154
|
+
- test/fixtures/lookup_multiple_url.json
|
155
|
+
- test/fixtures/lookup_not_real_url.json
|
156
|
+
- test/fixtures/lookup_single_url.json
|
157
|
+
- test/fixtures/missing_hash.json
|
158
|
+
- test/fixtures/multiple_info.json
|
159
|
+
- test/fixtures/multiple_url_click.json
|
160
|
+
- test/fixtures/multiple_urls.json
|
161
|
+
- test/fixtures/not_bitly_pro_domain.json
|
162
|
+
- test/fixtures/not_found_info.json
|
163
|
+
- test/fixtures/referrer_hash.json
|
164
|
+
- test/fixtures/referrer_hash2.json
|
165
|
+
- test/fixtures/referrer_url.json
|
166
|
+
- test/fixtures/success.json
|
167
|
+
- test/fixtures/url_info.json
|
168
|
+
- test/fixtures/user_clicks.json
|
169
|
+
- test/fixtures/user_countries.json
|
170
|
+
- test/fixtures/user_realtime_links.json
|
171
|
+
- test/fixtures/user_referrers.json
|
172
|
+
- test/fixtures/valid_user.json
|
173
|
+
- test/integration/strategy/old_test_api_key.rb
|
174
|
+
- test/integration/test_client.rb
|
175
|
+
- test/integration/test_user.rb
|
176
|
+
- test/test_helper.rb
|
177
|
+
- test/unit/core_ext/test_hash.rb
|
178
|
+
- test/unit/core_ext/test_string.rb
|
179
|
+
- test/unit/test_bitly_oauth.rb
|
180
|
+
- test/unit/test_client.rb
|
181
|
+
- test/unit/test_country.rb
|
182
|
+
- test/unit/test_day.rb
|
183
|
+
- test/unit/test_error.rb
|
184
|
+
- test/unit/test_missing.rb
|
185
|
+
- test/unit/test_realtime_link.rb
|
186
|
+
- test/unit/test_referrer.rb
|
187
|
+
- test/unit/test_referring_domain.rb
|
188
|
+
- test/unit/test_response.rb
|
189
|
+
- test/unit/test_url.rb
|
190
|
+
- test/unit/test_user.rb
|
191
|
+
homepage: http://github.com/jonstorer/bitly-oauth
|
192
|
+
licenses: []
|
193
|
+
post_install_message:
|
194
|
+
rdoc_options: []
|
195
|
+
require_paths:
|
196
|
+
- lib
|
197
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
198
|
+
none: false
|
199
|
+
requirements:
|
200
|
+
- - ! '>='
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
version: '0'
|
203
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
204
|
+
none: false
|
205
|
+
requirements:
|
206
|
+
- - ! '>='
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
requirements: []
|
210
|
+
rubyforge_project:
|
211
|
+
rubygems_version: 1.8.10
|
212
|
+
signing_key:
|
213
|
+
specification_version: 3
|
214
|
+
summary: A ruby wrapper for the bit.ly API
|
215
|
+
test_files: []
|