app/models/calagator/source/parser/meetup.rb in calagator-1.0.0.rc3 vs app/models/calagator/source/parser/meetup.rb in calagator-1.0.0
- old
+ new
@@ -1,23 +1,25 @@
module Calagator
class Source::Parser::Meetup < Source::Parser
self.label = :Meetup
- self.url_pattern = %r{^http://(?:www\.)?meetup\.com/[^/]+/events/([^/]+)/?}
+ self.url_pattern = %r{^https?://(?:www\.)?meetup\.com/[^/]+/events/([^/]+)/?}
def to_events
return fallback unless Calagator.meetup_api_key.present?
return unless data = get_data
+ start_time = Time.at(data['time']/1000).utc
event = Event.new({
source: source,
- title: data['name'],
+ title: "#{data['group']['name']} - #{data['name']}",
description: data['description'],
url: data['event_url'],
venue: to_venue(data['venue']),
- tag_list: "meetup:event=#{data['event_id']}, meetup:group=#{data['group']['urlname']}",
+ tag_list: "meetup:event=#{data['event_id']}, meetup:group=#{data['group']['urlname']}#{group_topics(data)}",
# Meetup sends us milliseconds since the epoch in UTC
- start_time: Time.at(data['time']/1000).utc,
+ start_time: start_time,
+ end_time: data['duration'] ? start_time + data['duration']/1000 : nil
})
[event_or_duplicate(event)]
end
@@ -35,13 +37,19 @@
to_events_api_helper(url, "problem") do |event_id|
[
"https://api.meetup.com/2/event/#{event_id}",
{
key: Calagator.meetup_api_key,
- sign: 'true'
+ sign: 'true',
+ fields: 'topics'
}
]
end
+ end
+
+ def group_topics(data)
+ topics = data['group']['topics']
+ topics.map{ |t| t['name'].downcase }.join(', ').insert(0, ', ') unless topics.empty?
end
def to_venue(value)
return if value.blank?
venue = Venue.new({