class Meetupinator::MeetupAPI
This class is responsible for communicating with the meetup.com API and returning the json responses only.
Attributes
api_key[R]
Public Class Methods
new(api_key = nil)
click to toggle source
# File lib/meetupinator/meetup_api.rb, line 10 def initialize(api_key = nil) @base_uri = 'api.meetup.com' @groups_endpoint = '/2/groups' @events_endpoint = '/2/events' @api_key = pick_which_api_key(api_key) end
Public Instance Methods
get_meetup_id(group_url_name)
click to toggle source
# File lib/meetupinator/meetup_api.rb, line 17 def get_meetup_id(group_url_name) query_string = 'key=' + @api_key + '&group_urlname=' + group_url_name uri = URI::HTTP.build(host: @base_uri, path: @groups_endpoint, query: query_string) extract_meetup_id get_meetup_response(uri) end
get_upcoming_events(group_ids, weeks)
click to toggle source
# File lib/meetupinator/meetup_api.rb, line 24 def get_upcoming_events(group_ids, weeks) query_string = 'sign=true&photo-host=public&status=upcoming&key=' + @api_key + '&group_id=' + group_ids.join(',') query_string << "&time=,#{weeks}w" if weeks uri = URI::HTTP.build(host: @base_uri, path: @events_endpoint, query: query_string) response = get_meetup_response uri get_results response end
Private Instance Methods
extract_meetup_id(response)
click to toggle source
# File lib/meetupinator/meetup_api.rb, line 51 def extract_meetup_id(response) get_results(response)[0]['id'] end
fail_if_not_ok(response)
click to toggle source
# File lib/meetupinator/meetup_api.rb, line 44 def fail_if_not_ok(response) return unless response.code != '200' msg = "Call to #{uri} failed: #{response.code} - #{response.message}" msg << '. ' + response.body if response.class.body_permitted? fail(msg) end
get_meetup_response(uri)
click to toggle source
# File lib/meetupinator/meetup_api.rb, line 38 def get_meetup_response(uri) response = Net::HTTP.get_response uri fail_if_not_ok(response) JSON.parse response.body end
get_results(response)
click to toggle source
# File lib/meetupinator/meetup_api.rb, line 55 def get_results(response) response['results'] end
key_found_in_env?()
click to toggle source
# File lib/meetupinator/meetup_api.rb, line 77 def key_found_in_env? (!ENV['MEETUP_API_KEY'].nil? && !ENV['MEETUP_API_KEY'].empty?) end
key_invalid?(api_key)
click to toggle source
# File lib/meetupinator/meetup_api.rb, line 69 def key_invalid?(api_key) !key_valid?(api_key) end
key_not_found_in_env?()
click to toggle source
# File lib/meetupinator/meetup_api.rb, line 73 def key_not_found_in_env? !key_found_in_env? end
key_valid?(api_key)
click to toggle source
# File lib/meetupinator/meetup_api.rb, line 65 def key_valid?(api_key) !(api_key.nil? || api_key.empty?) end
pick_which_api_key(api_key)
click to toggle source
# File lib/meetupinator/meetup_api.rb, line 59 def pick_which_api_key(api_key) key = api_key if key_valid?(api_key) key = ENV['MEETUP_API_KEY'] if key_found_in_env? && key_invalid?(key) key_invalid?(key) ? fail('no MEETUP_API_KEY provided') : key end