Class: Topsy::Client

Inherits:
Object
  • Object
show all
Includes:
HTTParty, Configurable
Defined in:
lib/topsy/client.rb

Constant Summary collapse

@@windows =
{:all => 'a', :week => 'w', :day => 'd', :month => 'm', :hour => 'h', :realtime => 'realtime'}

Instance Attribute Summary

Attributes included from Configurable

#api_key

Instance Method Summary collapse

Methods included from Configurable

#cache_key, #configure, keys, #reset!

Constructor Details

#initialize(options = {}) ⇒ Client

Returns a new instance of Client.



21
22
23
24
25
26
# File 'lib/topsy/client.rb', line 21

def initialize( options = {} )
  setup
  Topsy::Configurable.keys.each do |key|
    instance_variable_set(:"@#{key}", options[key] || instance_variable_get(:"@#{key}"))
  end
end

Instance Method Details

#author_info(url) ⇒ Topsy::Author

Returns Profile information for an author (a twitter profile indexed by Topsy). The response contains the name, description (biography) and the influence level of the author

Parameters:

  • url (String)

    URL string for the author.

Returns:



39
40
41
42
# File 'lib/topsy/client.rb', line 39

def author_info(url)
  authorinfo = handle_response(get("/authorinfo.json", :query => {:url => url}))
  Topsy::Author.new(authorinfo)
end

#creditTopsy::RateLimitInfo

Returns info about API rate limiting



31
32
33
# File 'lib/topsy/client.rb', line 31

def credit
  handle_response(get("/credit.json"))
end

#experts(q, options = {}) ⇒ Hashie::Mash

Returns list of authors that talk about the query. The list is sorted by frequency of posts and the influence of authors.

Parameters:

  • q (String)

    the search query string

  • options (Hash) (defaults to: {})

    method options

Options Hash (options):

  • :window (Symbol)

    Time window for results. (default: :all) Options: :dynamic most relevant, :hour last hour, :day last day, :week last week, :month last month, :all all time. You can also use the h6 (6 hours) d3 (3 days) syntax.

  • :page (Integer)

    page number of the result set. (default: 1, max: 10)

  • :perpage (Integer)

    limit number of results per page. (default: 10, max: 50)

Returns:

  • (Hashie::Mash)


52
53
54
55
56
# File 'lib/topsy/client.rb', line 52

def experts(q, options={})
  options = set_window_or_default(options)
  result = handle_response(get("/experts.json", :query => {:q => q}.merge(options)))
  Topsy::Page.new(result, Topsy::Author)
end

#get(path, opts = {}) ⇒ Object



12
13
14
15
16
17
18
19
# File 'lib/topsy/client.rb', line 12

def get( path , opts = {} )
  if @api_key.length > 0 
    # Handle appending the api key
    opts[:query] = {} unless opts.has_key?(:query)
    opts[:query].merge!( { :apikey => options[:api_key] } )
  end
  self.class.get( path , opts )
end

#link_post_count(url, options = {}) ⇒ Topsy::LinkpostCount

Returns count of links posted by an author. This is the efficient, count-only version of /linkposts

Parameters:

  • url (String)

    URL string for the author.

  • options (Hash) (defaults to: {})

    method options

Options Hash (options):

  • :contains (String)

    Query string to filter results

Returns:



77
78
79
80
# File 'lib/topsy/client.rb', line 77

def link_post_count(url, options={})
  count = handle_response(get("/linkpostcount.json", :query => {:url => url}.merge(options)))
  Topsy::LinkpostCount.new(count)
end

Returns list of URLs posted by an author

Parameters:

  • url (String)

    URL string for the author.

  • options (Hash) (defaults to: {})

    method options

Options Hash (options):

  • :contains (String)

    Query string to filter results

  • :page (Integer)

    page number of the result set. (default: 1, max: 10)

  • :perpage (Integer)

    limit number of results per page. (default: 10, max: 50)

Returns:



66
67
68
69
# File 'lib/topsy/client.rb', line 66

def link_posts(url, options={})
  linkposts = handle_response(get("/linkposts.json", :query => {:url => url}.merge(options)))
  Topsy::Page.new(linkposts,Topsy::Linkpost)
end

Returns list of URLs related to a given URL

Parameters:

  • url (String)

    URL string for the author.

  • options (Hash) (defaults to: {})

    method options

Options Hash (options):

  • :page (Integer)

    page number of the result set. (default: 1, max: 10)

  • :perpage (Integer)

    limit number of results per page. (default: 10, max: 50)

Returns:



89
90
91
92
# File 'lib/topsy/client.rb', line 89

def related(url, options={})
  response = handle_response(get("/related.json", :query => {:url => url}.merge(options)))
  Topsy::Page.new(response,Topsy::LinkSearchResult)
end

#search(q, options = {}) ⇒ Topsy::Page

Returns list of results for a query.

Parameters:

  • q (String)

    the search query string

  • options (Hash) (defaults to: {})

    method options

Options Hash (options):

  • :window (Symbol)

    Time window for results. (default: :all) Options: :dynamic most relevant, :hour last hour, :day last day, :week last week, :month last month, :all all time. You can also use the h6 (6 hours) d3 (3 days) syntax.

  • :page (Integer)

    page number of the result set. (default: 1, max: 10)

  • :perpage (Integer)

    limit number of results per page. (default: 10, max: 50)

  • :site (String)

    narrow results to a domain

Returns:



103
104
105
106
107
108
109
110
111
112
113
# File 'lib/topsy/client.rb', line 103

def search(q, options={})
  if q.is_a?(Hash)
    options = q
    q = "site:#{options.delete(:site)}" if options[:site]
  else
    q += " site:#{options.delete(:site)}" if options[:site]
  end
  options = set_window_or_default(options)
  results = handle_response(get("/search.json", :query => {:q => q}.merge(options)))
  Topsy::Page.new(results,Topsy::LinkSearchResult)
end

#search_count(q) ⇒ Topsy::SearchCounts

Returns count of results for a search query.

Parameters:

  • q (String)

    the search query string

Returns:



119
120
121
122
# File 'lib/topsy/client.rb', line 119

def search_count(q)
  counts = handle_response(get("/searchcount.json", :query => {:q => q}))
  Topsy::SearchCounts.new(counts)
end

#search_histogram(q, count_method = 'target', slice = 86400, period = 30) ⇒ Object

Returns mention count data for the given query

Parameters:

  • q (String)
    • The query. Use site:domain.com to get domain counts and @username to get mention counts.

  • count_method (String) (defaults to: 'target')
    • what is being counted - “target” (default) - the number of unique links , or “citation” - cthe number of unique tweets about links

  • slice (Integer) (defaults to: 86400)

    -

  • period (Integer) (defaults to: 30)

    -



131
132
133
134
# File 'lib/topsy/client.rb', line 131

def search_histogram( q , count_method = 'target' , slice = 86400 , period = 30  )
  response = handle_response(get("/searchhistogram.json" , :query => { :q => q , :slice => slice , :period => period , :count_method => count_method } ))
  Topsy::SearchHistogram.new(response)
end

#stats(url, options = {}) ⇒ Topsy::Stats

Returns counts of tweets for a URL

Parameters:

  • url (String)

    the url to look up

  • options (Hash) (defaults to: {})

    method options

Options Hash (options):

  • :contains (String)

    Query string to filter results

Returns:



142
143
144
145
146
147
# File 'lib/topsy/client.rb', line 142

def stats(url, options={})
  query = {:url => url}
  query.merge!(options)
  response = handle_response(get("/stats.json", :query => query))
  Topsy::Stats.new(response)
end

#tags(url, options = {}) ⇒ Topsy::Page

Returns list of tags for a URL.

Parameters:

  • url (String)

    the search query string

  • options (Hash) (defaults to: {})

    method options

Options Hash (options):

  • :page (Integer)

    page number of the result set. (default: 1, max: 10)

  • :perpage (Integer)

    limit number of results per page. (default: 10, max: 50)

Returns:



156
157
158
159
# File 'lib/topsy/client.rb', line 156

def tags(url, options={})
  response = handle_response(get("/tags.json", :query => {:url => url}.merge(options)))
  Topsy::Page.new(response,Topsy::Tag)
end

#trackbacks(url, options = {}) ⇒ Topsy::Page

Returns list of tweets (trackbacks) that mention the query URL, most recent first.

Parameters:

  • url (String)

    URL string for the author.

  • options (Hash) (defaults to: {})

    method options

Options Hash (options):

  • :contains (String)

    Query string to filter results

  • :infonly (Boolean)

    filters trackbacks to influential only (default 0)

  • :page (Integer)

    page number of the result set. (default: 1, max: 10)

  • :perpage (Integer)

    limit number of results per page. (default: 10, max: 50)

Returns:



170
171
172
173
174
175
176
# File 'lib/topsy/client.rb', line 170

def trackbacks(url, options={})
  results = handle_response(get("/trackbacks.json", :query => {:url => url}.merge(options)))
  results.list.each do |trackback|
    trackback.date = Time.at(trackback.date)
  end
  Topsy::Page.new(results,Topsy::Tweet)
end

Returns list of trending terms

Parameters:

  • options (Hash) (defaults to: {})

    method options

Options Hash (options):

  • :page (Integer)

    page number of the result set. (default: 1, max: 10)

  • :perpage (Integer)

    limit number of results per page. (default: 10, max: 50)

Returns:



184
185
186
187
# File 'lib/topsy/client.rb', line 184

def trending(options={})
  response = handle_response(get("/trending.json", :query => options))
  Topsy::Page.new(response,Topsy::Trend)
end

#url_info(url) ⇒ Topsy::UrlInfo

Returns info about a URL

Parameters:

  • url (String)

    the url to look up

Returns:



193
194
195
196
# File 'lib/topsy/client.rb', line 193

def url_info(url)
  response = handle_response(get("/urlinfo.json", :query => {:url => url}))
  Topsy::UrlInfo.new(response)
end