Class: Bitly::V3::Client

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/bitly/v3/client.rb

Overview

The client is the main part of this gem. You need to initialize the client with your username and API key and then you will be able to use the client to perform all the rest of the actions available through the API.

Instance Method Summary collapse

Constructor Details

#initialize(login, api_key, timeout = nil) ⇒ Client

Requires a login and api key. Get yours from your account page at bitly.com/a/your_api_key Visit your account at bit.ly/a/account



12
13
14
15
# File 'lib/bitly/v3/client.rb', line 12

def initialize(, api_key, timeout=nil)
  @default_query_opts = { :login => , :apiKey => api_key }
  self.timeout = timeout
end

Instance Method Details

#bitly_pro_domain(domain) ⇒ Object Also known as: pro?

Checks whether a domain is a bitly.Pro domain



25
26
27
28
# File 'lib/bitly/v3/client.rb', line 25

def bitly_pro_domain(domain)
  response = get('/bitly_pro_domain', :query => { :domain => domain })
  return response['data']['bitly_pro_domain']
end

#clicks(input) ⇒ Object

Expands either a hash, short url or array of either and gets click data too.

Returns the results in the order they were entered



55
56
57
# File 'lib/bitly/v3/client.rb', line 55

def clicks(input)
  get_method(:clicks, input)
end

#clicks_by_day(input, opts = {}) ⇒ Object

Takes a short url, hash or array of either and gets the clicks by day



109
110
111
112
# File 'lib/bitly/v3/client.rb', line 109

def clicks_by_day(input, opts={})
  opts.reject! { |k, v| k.to_s != 'days' }
  get_method(:clicks_by_day, input, opts)
end

#clicks_by_minute(input) ⇒ Object

Takes a short url, hash or array of either and gets the clicks by minute of each of the last hour



104
105
106
# File 'lib/bitly/v3/client.rb', line 104

def clicks_by_minute(input)
  get_method(:clicks_by_minute, input)
end

#countries(input) ⇒ Object

Expands either a short link or hash and gets the country data for that link

This method does not take an array as an input



99
100
101
# File 'lib/bitly/v3/client.rb', line 99

def countries(input)
  get_single_method('countries', input)
end

#expand(input) ⇒ Object

Expands either a hash, short url or array of either.

Returns the results in the order they were entered



48
49
50
# File 'lib/bitly/v3/client.rb', line 48

def expand(input)
  get_method(:expand, input)
end

#info(input) ⇒ Object

Like expand, but gets the title of the page and who created it



60
61
62
# File 'lib/bitly/v3/client.rb', line 60

def info(input)
  get_method(:info, input)
end

#lookup(input) ⇒ Object

Looks up the short url and global hash of a url or array of urls

Returns the results in the order they were entered



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/bitly/v3/client.rb', line 67

def lookup(input)
  input = arrayize(input)
  query = input.inject([]) { |query, i| query << "url=#{CGI.escape(i)}" }
  query = "/lookup?" + query.join('&')
  response = get(query)
  results = response['data']['lookup'].inject([]) do |results, url|
    url['long_url'] = url['url']
    url['url'] = nil
    if url['error'].nil?
      # builds the results array in the same order as the input
      results[input.index(url['long_url'])] = Bitly::V3::Url.new(self, url)
      # remove the key from the original array, in case the same hash/url was entered twice
      input[input.index(url['long_url'])] = nil
    else
      results[input.index(url['long_url'])] = Bitly::V3::MissingUrl.new(url)
      input[input.index(url['long_url'])] = nil
    end
    results
  end
  return results.length > 1 ? results : results[0]
end

#referrers(input) ⇒ Object

Expands either a short link or hash and gets the referrer data for that link

This method does not take an array as an input



92
93
94
# File 'lib/bitly/v3/client.rb', line 92

def referrers(input)
  get_single_method('referrers', input)
end

#shorten(long_url, opts = {}) ⇒ Object

Shortens a long url

Options can be:

domain

choose bit.ly or j.mp (bit.ly is default)

x_login and x_apiKey

add this link to another user’s history (both required)



39
40
41
42
43
# File 'lib/bitly/v3/client.rb', line 39

def shorten(long_url, opts={})
  query = { :longUrl => long_url }.merge(opts)
  response = get('/shorten', :query => query)
  return Bitly::V3::Url.new(self, response['data'])
end

#timeout=(timeout = nil) ⇒ Object



114
115
116
# File 'lib/bitly/v3/client.rb', line 114

def timeout=(timeout=nil)
  self.class.default_timeout(timeout) if timeout
end

#validate(x_login, x_api_key) ⇒ Object Also known as: valid?

Validates a login and api key



18
19
20
21
# File 'lib/bitly/v3/client.rb', line 18

def validate(, x_api_key)
  response = get('/validate', :query => { :x_login => , :x_apiKey => x_api_key })
  return response['data']['valid'] == 1
end