55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
# File 'lib/logstash/inputs/meetup.rb', line 55
def run(queue)
Stud.interval(@interval*60) do
start = Time.now
@logger.info? && @logger.info("Polling meetup", :url => @url)
response = Faraday.get @url
logger.error("Error call meetup API: " + response.body) unless response.status.eql?(200)
begin
result = LogStash::Json.load(response.body)
rescue LogStash::Json::ParserError => e
logger.debug("Error parsing Json", :message => e.message, :backtrace => e.backtrace)
end
result["results"].each do |rawevent|
event = LogStash::Event.new(rawevent)
event.set('created', LogStash::Timestamp.at(event.get('created') / 1000, (event.get('created') % 1000) * 1000))
event.set('time', LogStash::Timestamp.at(event.get('time') / 1000, (event.get('time') % 1000) * 1000))
event.set('[group][created]', LogStash::Timestamp.at(event.get('group][created]') / 1000, (event.get('group][created]') % 1000) * 1000))
event.set('updated', LogStash::Timestamp.at(event.get('updated') / 1000, (event.get('updated') % 1000) * 1000))
event.set('[venue][lonlat]', [event.get('[venue][lon]'), event.get('[venue][lat]')]) if rawevent.has_key?('venue')
event.set('[group][lonlat]', [event.get('[group][group_lon]'), event.get('[group][group_lat]')]) if rawevent.has_key?('group')
decorate(event)
queue << event
end
duration = Time.now - start
@logger.info? && @logger.info("poll completed", :command => @command,
:duration => duration)
end end
|