Class: Bitly::V3::Client
- Inherits:
-
Object
- Object
- Bitly::V3::Client
- 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
-
#bitly_pro_domain(domain) ⇒ Object
(also: #pro?)
Checks whether a domain is a bitly.Pro domain.
-
#clicks(input) ⇒ Object
Expands either a hash, short url or array of either and gets click data too.
-
#clicks_by_day(input, opts = {}) ⇒ Object
Takes a short url, hash or array of either and gets the clicks by day.
-
#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.
-
#countries(input) ⇒ Object
Expands either a short link or hash and gets the country data for that link.
-
#expand(input) ⇒ Object
Expands either a hash, short url or array of either.
-
#info(input) ⇒ Object
Like expand, but gets the title of the page and who created it.
-
#initialize(*args) ⇒ Client
constructor
Requires a generic OAuth2 access token or -deprecated- login and api key.
-
#lookup(input) ⇒ Object
Looks up the short url and global hash of a url or array of urls.
-
#referrers(input) ⇒ Object
Expands either a short link or hash and gets the referrer data for that link.
-
#shorten(long_url, opts = {}) ⇒ Object
Shortens a long url.
- #timeout=(timeout = nil) ⇒ Object
-
#validate(x_login, x_api_key) ⇒ Object
(also: #valid?)
Validates a login and api key.
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 (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_login, x_api_key) response = get('/validate', :query => { :x_login => x_login, :x_apiKey => x_api_key }) return response['data']['valid'] == 1 end |