bitly 0.5.1 → 0.5.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.
@@ -1,3 +1,15 @@
1
+ === 0.5.2 / 2010-07-18
2
+
3
+ * 1 minor enhancement
4
+
5
+ * Added the lookup call to the version 3 API.
6
+
7
+ === 0.5.1 / 2010-05-26
8
+
9
+ * 1 bug fix
10
+
11
+ * When expanding a short url with the v3 module, user hash and short url weren't being set properly
12
+
1
13
  === 0.5.0 / 2010-05-12
2
14
 
3
15
  * Loads of major enhancements
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{bitly}
5
- s.version = "0.5.1"
5
+ s.version = "0.5.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{2010-05-26}
9
+ s.date = %q{2010-07-18}
10
10
  s.description = %q{Use the bit.ly API to shorten or expand URLs}
11
11
  s.email = %q{philnash@gmail.com}
12
12
  s.extra_rdoc_files = ["lib/bitly/client.rb", "lib/bitly/url.rb", "lib/bitly/utils.rb", "lib/bitly/v3/bitly.rb", "lib/bitly/v3/client.rb", "lib/bitly/v3/missing_url.rb", "lib/bitly/v3/url.rb", "lib/bitly/v3.rb", "lib/bitly/version.rb", "lib/bitly.rb", "README.txt"]
@@ -53,6 +53,31 @@ module Bitly
53
53
  def clicks(input)
54
54
  get_method(:clicks, input)
55
55
  end
56
+
57
+ # Looks up the short url and global hash of a url or array of urls
58
+ #
59
+ # Returns the results in the order they were entered
60
+ def lookup(input)
61
+ input = [input] if input.is_a?(String)
62
+ query = input.inject([]) { |query, i| query << "url=#{CGI.escape(i)}" }
63
+ query = "/lookup?" + query.join('&')
64
+ response = get(query)
65
+ results = response['data']['lookup'].inject([]) do |results, url|
66
+ url['long_url'] = url['url']
67
+ url['url'] = nil
68
+ if url['error'].nil?
69
+ # builds the results array in the same order as the input
70
+ results[input.index(url['long_url'])] = Bitly::V3::Url.new(self, url)
71
+ # remove the key from the original array, in case the same hash/url was entered twice
72
+ input[input.index(url['long_url'])] = nil
73
+ else
74
+ results[input.index(url['long_url'])] = Bitly::V3::MissingUrl.new(url)
75
+ input[input.index(url['long_url'])] = nil
76
+ end
77
+ results
78
+ end
79
+ return results.length > 1 ? results : results[0]
80
+ end
56
81
 
57
82
  private
58
83
 
@@ -73,8 +98,7 @@ module Bitly
73
98
 
74
99
  def get_method(method, input)
75
100
  input = [input] if input.is_a? String
76
- query = []
77
- input.each do |i|
101
+ query = input.inject([]) do |query,i|
78
102
  if is_a_short_url?(i)
79
103
  query << "shortUrl=#{CGI.escape(i)}"
80
104
  else
@@ -83,8 +107,7 @@ module Bitly
83
107
  end
84
108
  query = "/#{method}?" + query.join('&')
85
109
  response = get(query)
86
- results = []
87
- response['data'][method.to_s].each do |url|
110
+ results = response['data'][method.to_s].inject do |results, url|
88
111
  if url['error'].nil?
89
112
  # builds the results array in the same order as the input
90
113
  results[input.index(url['short_url'] || url['hash'])] = Bitly::V3::Url.new(self, url)
@@ -94,6 +117,7 @@ module Bitly
94
117
  results[input.index(url['short_url'] || url['hash'])] = Bitly::V3::MissingUrl.new(url)
95
118
  input[input.index(url['short_url'] || url['hash'])] = nil
96
119
  end
120
+ results
97
121
  end
98
122
  return results.length > 1 ? results : results[0]
99
123
  end
@@ -1,11 +1,12 @@
1
1
  module Bitly
2
2
  module V3
3
3
  class MissingUrl
4
- attr_accessor :short_url, :user_hash, :error
4
+ attr_accessor :short_url, :user_hash, :long_url, :error
5
5
  def initialize(opts={})
6
6
  if opts
7
7
  @short_url = opts['short_url']
8
8
  @user_hash = opts['hash']
9
+ @long_url = opts['long_url']
9
10
  @error = opts['error']
10
11
  end
11
12
  end
@@ -9,7 +9,7 @@ module Bitly
9
9
  def initialize(client, opts={})
10
10
  @client = client
11
11
  if opts
12
- @short_url = opts['url']
12
+ @short_url = opts['url'] || opts['short_url']
13
13
  @long_url = opts['long_url']
14
14
  @user_hash = opts['hash'] || opts['user_hash']
15
15
  @global_hash = opts['global_hash']
@@ -1,3 +1,3 @@
1
1
  module Bitly
2
- VERSION = '0.5.1'
2
+ VERSION = '0.5.2'
3
3
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 5
8
- - 1
9
- version: 0.5.1
8
+ - 2
9
+ version: 0.5.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Phil Nash
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-05-26 00:00:00 +01:00
17
+ date: 2010-07-18 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency