Class: Bitly::Client
  
  
  
  
  
    - Inherits:
- 
      Object
      
        
        show all
      
    
      - Includes:
- Utils
    - Defined in:
- lib/bitly/client.rb
 
  
    
      Instance Method Summary
      collapse
    
    
  
  
  
  
  
  
  
  
  
  Methods included from Utils
  #attr_define, #create_hash_from_url, #create_url, #get_result, #instance_variablise, #underscore
  Constructor Details
  
    
  
  
    #initialize(login, api_key)  ⇒ Client 
  
  
  
  
    
Returns a new instance of Client.
   
 
  
  
    | 
41
42
43
44
45 | # File 'lib/bitly/client.rb', line 41
def initialize(login,api_key)
  warn "[DEPRECATION] The bit.ly version 2 API has been superseded by version 3 and will be removed. See the README for details"
  @login = login
  @api_key = api_key
end | 
 
  
 
  
    Instance Method Details
    
      
  
  
    #expand(input)  ⇒ Object 
  
  
  
  
    | 
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 | # File 'lib/bitly/client.rb', line 66
def expand(input)
  if input.is_a? String
    if input.include?('bit.ly/') || input.include?('j.mp/')
      hash = create_hash_from_url(input)
      request = create_url "expand", :hash => hash
      result = get_result(request)
      result = { :short_url => input, :hash => hash }.merge result[hash]
    else
      request = create_url "expand", :hash => input
      result = get_result(request)
      result = { :hash => input, :short_url => "http://bit.ly/#{input}" }.merge result[input]
    end
    Bitly::Url.new(@login,@api_key,result)
  elsif input.is_a? Array
    request = create_url "expand", :hash => input.join(',')
    result = get_result(request)
    input.map do |hsh|
      new_url = {:hash => hsh, :short_url => "http://bit.ly/#{hsh}"}.merge result[hsh]
      hsh = Bitly::Url.new(@login,@api_key,new_url)
    end
  else
    raise ArgumentError('Expand requires either a short url, a hash or an array of hashes')
  end
end | 
 
    
      
  
  
    #info(input)  ⇒ Object 
  
  
  
  
    | 
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114 | # File 'lib/bitly/client.rb', line 91
def info(input)
  if input.is_a? String
    if input.include? "bit.ly/"
      hash = create_hash_from_url(input)
      request = create_url 'info', :hash => hash
      result = get_result(request)
      result = { :short_url => "http://bit.ly/#{hash}", :hash => hash }.merge result[hash]
    else
      request = create_url 'info', :hash => input
      result = get_result(request)
      result = { :short_url => "http://bit.ly/#{input}", :hash => input }.merge result[input]
    end
    Bitly::Url.new(@login,@api_key,result)
  elsif input.is_a? Array
    request = create_url "info", :hash => input.join(',')
    result = get_result(request)
    input.map do |hsh|
      new_url = {:hash => hsh, :short_url => "http://bit.ly/#{hsh}"}.merge result[hsh]
      hsh = Bitly::Url.new(@login,@api_key,:info => new_url)
    end
  else
    raise ArgumentError.new('Info requires either a short url, a hash or an array of hashes')
  end
end | 
 
    
      
  
  
    #shorten(input, opts = {})  ⇒ Object 
  
  
  
  
    | 
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 | # File 'lib/bitly/client.rb', line 47
def shorten(input, opts={})
  if input.is_a? String
    request = create_url("shorten", :longUrl => input, :history => (opts[:history] ? 1 : nil))
    result = get_result(request)
    result = {:long_url => input}.merge result[input]
    Bitly::Url.new(@login,@api_key,result)
  elsif input.is_a? Array
    request = create_url("shorten", :history => (opts[:history] ? 1 : nil))
    request.query << "&" + input.map { |long_url| "longUrl=#{CGI.escape(long_url)}" }.join("&") unless input.nil?
    result = get_result(request)
    input.map do |long_url|
      new_url = {:long_url => long_url}.merge result[long_url]
      long_url = Bitly::Url.new(@login,@api_key,new_url)
    end
  else
    raise ArgumentError.new("Shorten requires either a url or an array of urls")
  end
end | 
 
    
      
  
  
    #stats(input)  ⇒ Object 
  
  
  
  
    | 
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132 | # File 'lib/bitly/client.rb', line 116
def stats(input)
  if input.is_a? String
    if input.include? "bit.ly/"
      hash = create_hash_from_url(input)
      request = create_url 'stats', :hash => hash
      result = get_result(request)
      result = { :short_url => "http://bit.ly/#{hash}", :hash => hash }.merge result
    else
      request = create_url 'stats', :hash => input
      result = get_result(request)
      result = { :short_url => "http://bit.ly/#{input}", :hash => input }.merge result
    end
    Bitly::Url.new(@login,@api_key,:stats => result)
  else
    raise ArgumentError.new("Stats requires either a short url or a hash")
  end
end |