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.

Constant Summary collapse

API_URL_SSL =
'https://api-ssl.bitly.com/v3/'

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Client

Requires a generic OAuth2 access token or -deprecated- login and api key. dev.bitly.com/authentication.html#apikey Generic OAuth2 access token: bitly.com/a/oauth_apps ApiKey: Get yours from your account page at bitly.com/a/your_api_key Visit your account at bit.ly/a/account



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/bitly/v3/client.rb', line 16

def initialize(*args)
  args.compact!
  self.timeout = args.last.is_a?(Fixnum) ? args.pop : nil
  if args.count == 1
    # Set generic OAuth2 access token and change base URI (use SSL)
    @default_query_opts = { :access_token => args.first }
    self.class.base_uri API_URL_SSL
  else
    # Deprecated ApiKey authentication
    @default_query_opts = {
      :login => args[0],
      :apiKey => args[1]
    }
  end
end

Instance Method Details

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

Checks whether a domain is a bitly.Pro domain



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

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



70
71
72
# File 'lib/bitly/v3/client.rb', line 70

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



124
125
126
127
# File 'lib/bitly/v3/client.rb', line 124

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



119
120
121
# File 'lib/bitly/v3/client.rb', line 119

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



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

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



63
64
65
# File 'lib/bitly/v3/client.rb', line 63

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

#info(input) ⇒ Object

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



75
76
77
# File 'lib/bitly/v3/client.rb', line 75

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



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/bitly/v3/client.rb', line 82

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



107
108
109
# File 'lib/bitly/v3/client.rb', line 107

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)



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

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



129
130
131
# File 'lib/bitly/v3/client.rb', line 129

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



33
34
35
36
# File 'lib/bitly/v3/client.rb', line 33

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