class GnipApi::Search

Public Instance Methods

activities(options={}) click to toggle source
# File lib/gnip_api/search.rb, line 7
def activities options={}
  required_options?(options)
  payload = construct_activities_payload(options)
  request = GnipApi::Request.new_post(activities_endpoint, payload)
  data = fetch_data(request)
  return parse_activities_response(data)
end
counts(options={}) click to toggle source
# File lib/gnip_api/search.rb, line 15
def counts options={}
  required_options?(options)
  payload = construct_counts_payload(options)
  request = GnipApi::Request.new_post(count_endpoint, payload)
  data = fetch_data(request)
  return parse_counts_response(data)
end

Private Instance Methods

activities_endpoint() click to toggle source
# File lib/gnip_api/search.rb, line 32
def activities_endpoint
  GnipApi::Endpoints.search_activities
end
construct_activities_payload(options) click to toggle source
# File lib/gnip_api/search.rb, line 91
def construct_activities_payload options
  payload = {
    :query => options[:rule].value,
    :fromDate => parse_date(options[:from_date]),
    :toDate => parse_date(options[:to_date]),
    :tag => options[:rule].tag,
    :maxResults => options[:max_results],
    :next => options[:next_token]
  }
  payload.delete_if{|k,v| v.nil?}
  return payload.to_json
end
construct_counts_payload(options) click to toggle source
# File lib/gnip_api/search.rb, line 79
def construct_counts_payload options
  payload = {
    :query => options[:rule].value,
    :fromDate => parse_date(options[:from_date]),
    :toDate => parse_date(options[:to_date]),
    :bucket => options[:bucket],
    :next => options[:next_token]
  }
  payload.delete_if{|k,v| v.nil?}
  return payload.to_json
end
count_endpoint() click to toggle source
# File lib/gnip_api/search.rb, line 28
def count_endpoint
  GnipApi::Endpoints.search_counts
end
fetch_data(request) click to toggle source
# File lib/gnip_api/search.rb, line 24
def fetch_data(request)
  request.execute!
end
parse_activities_response(data) click to toggle source
# File lib/gnip_api/search.rb, line 64
def parse_activities_response data
  parsed_data = GnipApi::JsonParser.new.parse(data)
  result_set = parsed_data['results']
  params = parsed_data['requestParameters']
  result = {:results => [], :next => parsed_data['next'], :request_parameters => {}}
  result[:request_parameters][:bucket] = params['bucket'] if params['bucket']
  result[:request_parameters][:from_date] = Time.parse("#{params['fromDate']}-0000") if params['fromDate']
  result[:request_parameters][:to_date] = Time.parse("#{params['toDate']}-0000") if params['toDate']
  result[:request_parameters][:max_results] = params['maxResults'] if params['maxResult']
  result_set.each do |item|
    result[:results] << Gnip::Activity.new(item)
  end
  return result
end
parse_counts_response(data) click to toggle source
# File lib/gnip_api/search.rb, line 50
def parse_counts_response data
  parsed_data = GnipApi::JsonParser.new.parse(data)
  result_set = parsed_data['results']
  params = parsed_data['requestParameters']
  result = {:results => [], :total_count => parsed_data['totalCount'], :next => parsed_data['next'], :request_parameters => {}}
  result[:request_parameters][:bucket] = params['bucket'] if params['bucket']
  result[:request_parameters][:from_date] = Time.parse("#{params['fromDate']}-0000") if params['fromDate']
  result[:request_parameters][:to_date] = Time.parse("#{params['toDate']}-0000") if params['toDate']
  result_set.each do |item|
    result[:results] << {:time_period => Time.parse("#{item['timePeriod']}-0000"), :count => item['count']}
  end
  return result
end
parse_date(date) click to toggle source
# File lib/gnip_api/search.rb, line 45
def parse_date date
  return nil unless date
  date.strftime('%Y%m%d%H%M')
end
required_options() click to toggle source
# File lib/gnip_api/search.rb, line 36
def required_options
  [:rule]
end
required_options?(options) click to toggle source
# File lib/gnip_api/search.rb, line 40
def required_options? options
  provided_options = required_options - options.keys
  raise GnipApi::Errors::Search::MissingParameters.new(provided_options) if provided_options.any?
end