bitly 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,15 @@
1
+ === 0.6.2 / 2011-11-10
2
+
3
+ * 2 minor enhancements
4
+
5
+ * Adds days parameter to clicks_by_minute v3 API call
6
+ * Converts Readme to markdown
7
+
8
+ * 2 minor bug fixes
9
+
10
+ * Increases HTTParty version to avoid issues with Rubygems
11
+ * Stops mutating arguments on array methods
12
+
1
13
  === 0.6.1 / 2011-01-12
2
14
 
3
15
  * 1 minor enhancement
data/Manifest CHANGED
@@ -1,6 +1,6 @@
1
1
  History.txt
2
2
  Manifest
3
- README.txt
3
+ README.md
4
4
  Rakefile
5
5
  bitly.gemspec
6
6
  lib/bitly.rb
data/README.md ADDED
@@ -0,0 +1,87 @@
1
+ # bitly
2
+
3
+ ## DESCRIPTION:
4
+
5
+ A Ruby API for [http://bit.ly](http://bit.ly) (and now (http://j.mp)[http://j.mp])
6
+
7
+ [http://code.google.com/p/bitly-api/wiki/ApiDocumentation](http://code.google.com/p/bitly-api/wiki/ApiDocumentation)
8
+
9
+ ## NOTE:
10
+
11
+ Bitly recently released their version 3 API. From this 0.5.0 release, the gem will continue to work the same but also provide a V3 module, using the version 3 API. The standard module will become deprecated, as Bitly do not plan to keep the version 2 API around forever.
12
+
13
+ To move to using the version 3 API, call:
14
+
15
+ Bitly.use_api_version_3
16
+
17
+ Then, when you call ``Bitly.new(username, api_key)`` you will get a ``Bitly::V3::Client`` instead, which provides the version 3 api calls (``shorten``, ``expand``, ``clicks``, ``validate`` and ``bitly_pro_domain``). See [http://api.bit.ly](http://api.bit.ly) for details.
18
+
19
+ Eventually, this will become the default version used and finally, the V3 module will disappear, with the version 3 classes replacing the version 2 classes.
20
+
21
+ (Please excuse the lack of tests for the v3 classes, they are fully tested and ready to replace this whole codebase in the v3 branch of the GitHub repo, until I realized it would break everything.)
22
+
23
+ ## INSTALLATION:
24
+
25
+ gem install bitly
26
+
27
+ ## USAGE:
28
+
29
+ ### Version 2 API
30
+
31
+ Create a Bitly client using your username and api key as follows:
32
+
33
+ bitly = Bitly.new(username, api_key)
34
+
35
+ You can then use that client to shorten or expand urls or return more information or statistics as so:
36
+
37
+ bitly.shorten('http://www.google.com')
38
+ bitly.shorten('http://www.google.com', :history => 1) # adds the url to the api user's history
39
+ bitly.expand('wQaT')
40
+ bitly.info('http://bit.ly/wQaT')
41
+ bitly.stats('http://bit.ly/wQaT')
42
+
43
+ Each can be used in all the methods described in the API docs, the shorten function, for example, takes a url or an array of urls.
44
+
45
+ All four functions return a ``Bitly::Url`` object (or an array of ``Bitly::Url`` objects if you supplied an array as the input). You can then get all the information required from that object.
46
+
47
+ u = bitly.shorten('http://www.google.com') #=> Bitly::Url
48
+
49
+ u.long_url #=> "http://www.google.com"
50
+ u.short_url #=> "http://bit.ly/Ywd1"
51
+ u.bitly_url #=> "http://bit.ly/Ywd1"
52
+ u.jmp_url #=> "http://j.mp/Ywd1"
53
+ u.user_hash #=> "Ywd1"
54
+ u.hash #=> "2V6CFi"
55
+ u.info #=> a ruby hash of the JSON returned from the API
56
+ u.stats #=> a ruby hash of the JSON returned from the API
57
+
58
+ bitly.shorten('http://www.google.com', 'keyword')
59
+
60
+ ### Version 3 API
61
+
62
+ Please see the Bit.ly API documentation [http://api.bit.ly](http://api.bit.ly) for details on the V3 API.
63
+
64
+ ## LICENSE:
65
+
66
+ > (The MIT License)
67
+ >
68
+ > Copyright (c) 2009 Phil Nash
69
+ >
70
+ > Permission is hereby granted, free of charge, to any person obtaining
71
+ > a copy of this software and associated documentation files (the
72
+ > 'Software'), to deal in the Software without restriction, including
73
+ > without limitation the rights to use, copy, modify, merge, publish,
74
+ > distribute, sublicense, and/or sell copies of the Software, and to
75
+ > permit persons to whom the Software is furnished to do so, subject to
76
+ > the following conditions:
77
+ >
78
+ > The above copyright notice and this permission notice shall be
79
+ > included in all copies or substantial portions of the Software.
80
+ >
81
+ > THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
82
+ > EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
83
+ > MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
84
+ > IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
85
+ > CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
86
+ > TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
87
+ > SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile CHANGED
@@ -8,6 +8,6 @@ Echoe.new('bitly', Bitly::VERSION) do |p|
8
8
  p.url = "http://github.com/philnash/bitly"
9
9
  p.author = "Phil Nash"
10
10
  p.email = "philnash@gmail.com"
11
- p.extra_deps = [['crack', '>= 0.1.4'], ['httparty', '>= 0.5.2'], ['oauth2', '>= 0.1.1']]
11
+ p.extra_deps = [['crack', '>= 0.1.4'], ['httparty', '>= 0.7.6'], ['oauth2', '>= 0.1.1']]
12
12
  p.development_dependencies = []
13
13
  end
data/bitly.gemspec CHANGED
@@ -2,38 +2,39 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{bitly}
5
- s.version = "0.6.1"
5
+ s.version = "0.6.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Phil Nash"]
9
- s.date = %q{2011-01-12}
9
+ s.date = %q{2011-11-10}
10
10
  s.description = %q{Use the bit.ly API to shorten or expand URLs}
11
11
  s.email = %q{philnash@gmail.com}
12
- s.extra_rdoc_files = ["README.txt", "lib/bitly.rb", "lib/bitly/client.rb", "lib/bitly/url.rb", "lib/bitly/utils.rb", "lib/bitly/v3.rb", "lib/bitly/v3/bitly.rb", "lib/bitly/v3/client.rb", "lib/bitly/v3/country.rb", "lib/bitly/v3/day.rb", "lib/bitly/v3/missing_url.rb", "lib/bitly/v3/oauth.rb", "lib/bitly/v3/realtime_link.rb", "lib/bitly/v3/referrer.rb", "lib/bitly/v3/url.rb", "lib/bitly/v3/user.rb", "lib/bitly/version.rb"]
13
- s.files = ["History.txt", "Manifest", "README.txt", "Rakefile", "bitly.gemspec", "lib/bitly.rb", "lib/bitly/client.rb", "lib/bitly/url.rb", "lib/bitly/utils.rb", "lib/bitly/v3.rb", "lib/bitly/v3/bitly.rb", "lib/bitly/v3/client.rb", "lib/bitly/v3/country.rb", "lib/bitly/v3/day.rb", "lib/bitly/v3/missing_url.rb", "lib/bitly/v3/oauth.rb", "lib/bitly/v3/realtime_link.rb", "lib/bitly/v3/referrer.rb", "lib/bitly/v3/url.rb", "lib/bitly/v3/user.rb", "lib/bitly/version.rb", "test/bitly/test_client.rb", "test/bitly/test_url.rb", "test/bitly/test_utils.rb", "test/fixtures/cnn.json", "test/fixtures/cnn_and_google.json", "test/fixtures/expand_cnn.json", "test/fixtures/expand_cnn_and_google.json", "test/fixtures/google_and_cnn_info.json", "test/fixtures/google_info.json", "test/fixtures/google_stats.json", "test/fixtures/shorten_error.json", "test/test_helper.rb"]
12
+ s.extra_rdoc_files = ["README.md", "lib/bitly.rb", "lib/bitly/client.rb", "lib/bitly/url.rb", "lib/bitly/utils.rb", "lib/bitly/v3.rb", "lib/bitly/v3/bitly.rb", "lib/bitly/v3/client.rb", "lib/bitly/v3/country.rb", "lib/bitly/v3/day.rb", "lib/bitly/v3/missing_url.rb", "lib/bitly/v3/oauth.rb", "lib/bitly/v3/realtime_link.rb", "lib/bitly/v3/referrer.rb", "lib/bitly/v3/url.rb", "lib/bitly/v3/user.rb", "lib/bitly/version.rb"]
13
+ s.files = ["History.txt", "Manifest", "README.md", "Rakefile", "bitly.gemspec", "lib/bitly.rb", "lib/bitly/client.rb", "lib/bitly/url.rb", "lib/bitly/utils.rb", "lib/bitly/v3.rb", "lib/bitly/v3/bitly.rb", "lib/bitly/v3/client.rb", "lib/bitly/v3/country.rb", "lib/bitly/v3/day.rb", "lib/bitly/v3/missing_url.rb", "lib/bitly/v3/oauth.rb", "lib/bitly/v3/realtime_link.rb", "lib/bitly/v3/referrer.rb", "lib/bitly/v3/url.rb", "lib/bitly/v3/user.rb", "lib/bitly/version.rb", "test/bitly/test_client.rb", "test/bitly/test_url.rb", "test/bitly/test_utils.rb", "test/fixtures/cnn.json", "test/fixtures/cnn_and_google.json", "test/fixtures/expand_cnn.json", "test/fixtures/expand_cnn_and_google.json", "test/fixtures/google_and_cnn_info.json", "test/fixtures/google_info.json", "test/fixtures/google_stats.json", "test/fixtures/shorten_error.json", "test/test_helper.rb"]
14
14
  s.homepage = %q{http://github.com/philnash/bitly}
15
- s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Bitly", "--main", "README.txt"]
15
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Bitly", "--main", "README.md"]
16
16
  s.require_paths = ["lib"]
17
17
  s.rubyforge_project = %q{bitly}
18
- s.rubygems_version = %q{1.4.1}
18
+ s.rubygems_version = %q{1.3.7}
19
19
  s.summary = %q{Use the bit.ly API to shorten or expand URLs}
20
20
  s.test_files = ["test/bitly/test_client.rb", "test/bitly/test_url.rb", "test/bitly/test_utils.rb", "test/test_helper.rb"]
21
21
 
22
22
  if s.respond_to? :specification_version then
23
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
24
  s.specification_version = 3
24
25
 
25
26
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
26
27
  s.add_runtime_dependency(%q<crack>, [">= 0.1.4"])
27
- s.add_runtime_dependency(%q<httparty>, [">= 0.5.2"])
28
+ s.add_runtime_dependency(%q<httparty>, [">= 0.7.6"])
28
29
  s.add_runtime_dependency(%q<oauth2>, [">= 0.1.1"])
29
30
  else
30
31
  s.add_dependency(%q<crack>, [">= 0.1.4"])
31
- s.add_dependency(%q<httparty>, [">= 0.5.2"])
32
+ s.add_dependency(%q<httparty>, [">= 0.7.6"])
32
33
  s.add_dependency(%q<oauth2>, [">= 0.1.1"])
33
34
  end
34
35
  else
35
36
  s.add_dependency(%q<crack>, [">= 0.1.4"])
36
- s.add_dependency(%q<httparty>, [">= 0.5.2"])
37
+ s.add_dependency(%q<httparty>, [">= 0.7.6"])
37
38
  s.add_dependency(%q<oauth2>, [">= 0.1.1"])
38
39
  end
39
40
  end
@@ -63,7 +63,7 @@ module Bitly
63
63
  #
64
64
  # Returns the results in the order they were entered
65
65
  def lookup(input)
66
- input = [input] if input.is_a?(String)
66
+ input = arrayize(input)
67
67
  query = input.inject([]) { |query, i| query << "url=#{CGI.escape(i)}" }
68
68
  query = "/lookup?" + query.join('&')
69
69
  response = get(query)
@@ -104,11 +104,20 @@ module Bitly
104
104
  end
105
105
 
106
106
  # Takes a short url, hash or array of either and gets the clicks by day
107
- def clicks_by_day(input)
108
- get_method(:clicks_by_day, input)
107
+ def clicks_by_day(input, opts={})
108
+ opts.reject! { |k, v| k.to_s != 'days' }
109
+ get_method(:clicks_by_day, input, opts)
109
110
  end
110
111
 
111
112
  private
113
+
114
+ def arrayize(arg)
115
+ if arg.is_a?(String)
116
+ [arg]
117
+ else
118
+ arg.dup
119
+ end
120
+ end
112
121
 
113
122
  def get(method, opts={})
114
123
  opts[:query] ||= {}
@@ -137,8 +146,8 @@ module Bitly
137
146
  return Bitly::V3::Url.new(self,response['data'])
138
147
  end
139
148
 
140
- def get_method(method, input)
141
- input = [input] if input.is_a? String
149
+ def get_method(method, input, opts={})
150
+ input = arrayize(input)
142
151
  query = input.inject([]) do |query,i|
143
152
  if is_a_short_url?(i)
144
153
  query << "shortUrl=#{CGI.escape(i)}"
@@ -146,6 +155,9 @@ module Bitly
146
155
  query << "hash=#{CGI.escape(i)}"
147
156
  end
148
157
  end
158
+ query = opts.inject(query) do |query, (k,v)|
159
+ query << "#{k}=#{v}"
160
+ end
149
161
  query = "/#{method}?" + query.join('&')
150
162
  response = get(query)
151
163
  results = response['data'][method.to_s].inject([]) do |results, url|
@@ -165,4 +177,4 @@ module Bitly
165
177
  end
166
178
  end
167
179
  end
168
- end
180
+ end
data/lib/bitly/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Bitly
2
- VERSION = '0.6.1'
2
+ VERSION = '0.6.2'
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bitly
3
3
  version: !ruby/object:Gem::Version
4
- hash: 5
5
- prerelease:
4
+ hash: 3
5
+ prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 6
9
- - 1
10
- version: 0.6.1
9
+ - 2
10
+ version: 0.6.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Phil Nash
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-12 00:00:00 +00:00
18
+ date: 2011-11-10 00:00:00 +00:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -45,9 +45,9 @@ dependencies:
45
45
  hash: 15
46
46
  segments:
47
47
  - 0
48
- - 5
49
- - 2
50
- version: 0.5.2
48
+ - 7
49
+ - 6
50
+ version: 0.7.6
51
51
  type: :runtime
52
52
  version_requirements: *id002
53
53
  - !ruby/object:Gem::Dependency
@@ -73,7 +73,7 @@ executables: []
73
73
  extensions: []
74
74
 
75
75
  extra_rdoc_files:
76
- - README.txt
76
+ - README.md
77
77
  - lib/bitly.rb
78
78
  - lib/bitly/client.rb
79
79
  - lib/bitly/url.rb
@@ -93,7 +93,7 @@ extra_rdoc_files:
93
93
  files:
94
94
  - History.txt
95
95
  - Manifest
96
- - README.txt
96
+ - README.md
97
97
  - Rakefile
98
98
  - bitly.gemspec
99
99
  - lib/bitly.rb
@@ -135,7 +135,7 @@ rdoc_options:
135
135
  - --title
136
136
  - Bitly
137
137
  - --main
138
- - README.txt
138
+ - README.md
139
139
  require_paths:
140
140
  - lib
141
141
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -160,7 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
160
160
  requirements: []
161
161
 
162
162
  rubyforge_project: bitly
163
- rubygems_version: 1.4.1
163
+ rubygems_version: 1.3.7
164
164
  signing_key:
165
165
  specification_version: 3
166
166
  summary: Use the bit.ly API to shorten or expand URLs
data/README.txt DELETED
@@ -1,87 +0,0 @@
1
- = bitly
2
-
3
- == DESCRIPTION:
4
-
5
- A Ruby API for http://bit.ly (and now http://j.mp)
6
-
7
- http://code.google.com/p/bitly-api/wiki/ApiDocumentation
8
-
9
- == NOTE:
10
-
11
- Bitly recently released their version 3 API. From this 0.5.0 release, the gem will continue to work the same but also provide a V3 module, using the version 3 API. The standard module will become deprecated, as Bitly do not plan to keep the version 2 API around forever.
12
-
13
- To move to using the version 3 API, call:
14
-
15
- Bitly.use_api_version_3
16
-
17
- Then, when you call Bitly.new(username, api_key) you will get a Bitly::V3::Client instead, which provides the version 3 api calls (shorten, expand, clicks, validate and bitly_pro_domain). See http://api.bit.ly for details.
18
-
19
- Eventually, this will become the default version used and finally, the V3 module will disappear, with the version 3 classes replacing the version 2 classes.
20
-
21
- (Please excuse the lack of tests for the v3 classes, they are fully tested and ready to replace this whole codebase in the v3 branch of the github repo, until I realised it would break everything.)
22
-
23
- == INSTALLATION:
24
-
25
- gem install bitly
26
-
27
- == USAGE:
28
-
29
- === Version 2 API
30
-
31
- Create a Bitly client using your username and api key as follows:
32
-
33
- bitly = Bitly.new(username, api_key)
34
-
35
- You can then use that client to shorten or expand urls or return more information or statistics as so:
36
-
37
- bitly.shorten('http://www.google.com')
38
- bitly.shorten('http://www.google.com', :history => 1) # adds the url to the api user's history
39
- bitly.expand('wQaT')
40
- bitly.info('http://bit.ly/wQaT')
41
- bitly.stats('http://bit.ly/wQaT')
42
-
43
- Each can be used in all the methods described in the API docs, the shorten function, for example, takes a url or an array of urls.
44
-
45
- All four functions return a Bitly::Url object (or an array of Bitly::Url objects if you supplied an array as the input). You can then get all the information required from that object.
46
-
47
- u = bitly.shorten('http://www.google.com') #=> Bitly::Url
48
-
49
- u.long_url #=> "http://www.google.com"
50
- u.short_url #=> "http://bit.ly/Ywd1"
51
- u.bitly_url #=> "http://bit.ly/Ywd1"
52
- u.jmp_url #=> "http://j.mp/Ywd1"
53
- u.user_hash #=> "Ywd1"
54
- u.hash #=> "2V6CFi"
55
- u.info #=> a ruby hash of the JSON returned from the API
56
- u.stats #=> a ruby hash of the JSON returned from the API
57
-
58
- bitly.shorten('http://www.google.com', 'keyword')
59
-
60
- === Version 3 API
61
-
62
- Please see the Bit.ly API documentation http://api.bit.ly for details on the V3 API
63
-
64
- == LICENSE:
65
-
66
- (The MIT License)
67
-
68
- Copyright (c) 2009 Phil Nash
69
-
70
- Permission is hereby granted, free of charge, to any person obtaining
71
- a copy of this software and associated documentation files (the
72
- 'Software'), to deal in the Software without restriction, including
73
- without limitation the rights to use, copy, modify, merge, publish,
74
- distribute, sublicense, and/or sell copies of the Software, and to
75
- permit persons to whom the Software is furnished to do so, subject to
76
- the following conditions:
77
-
78
- The above copyright notice and this permission notice shall be
79
- included in all copies or substantial portions of the Software.
80
-
81
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
82
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
83
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
84
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
85
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
86
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
87
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.