Module: Comfy::Admin::Meetalendar::MeetupsControllerLogic
- Defined in:
- app/models/comfy/admin/meetalendar/meetups_controller_logic.rb
Class Method Summary collapse
- .authorize_meetup(request, callback_path) ⇒ Object
- .callback(code, request, callback_path) ⇒ Object
- .search_result(parameters, time_now) ⇒ Object
Class Method Details
.authorize_meetup(request, callback_path) ⇒ Object
22 23 24 25 26 27 28 29 |
# File 'app/models/comfy/admin/meetalendar/meetups_controller_logic.rb', line 22 def self.(request, callback_path) meetup_credentials = ::MEETALENDAR_CREDENTIALS_MEETUP redirect_url = "https://secure.meetup.com/oauth2/authorize" + "?client_id=#{meetup_credentials["client_id"]}" + "&response_type=code" + "&redirect_uri=#{request.protocol}#{request.host_with_port}#{callback_path.to_s}" end |
.callback(code, request, callback_path) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'app/models/comfy/admin/meetalendar/meetups_controller_logic.rb', line 31 def self.callback(code, request, callback_path) meetup_credentials = ::MEETALENDAR_CREDENTIALS_MEETUP request_uri = "https://secure.meetup.com/oauth2/access" request_query_hash = {"client_id": meetup_credentials["client_id"], "client_secret": meetup_credentials["client_secret"], "grant_type": "authorization_code", "redirect_uri": "#{request.protocol}#{request.host_with_port}#{callback_path.to_s}", "code": "#{code}"} client = HTTPClient.new begin response = JSON.parse(client.post_content(request_uri, request_query_hash)) rescue => ex Rails.logger.error "Failed to authorize Meetup API. Exception in callback: #{ex.}" raise ::ActiveResource::ClientError, "Failed to authorize Meetup API." end if !response.nil? token_store = Google::Auth::Stores::DbTokenStore.new token_store.store("meetup", {"auth_id": "meetup", "client_id": meetup_credentials["client_id"], "access_token": response["access_token"], "refresh_token": response["refresh_token"], "scope": "", "expiration_time_millis": response["expires_in"] * 1000}.to_json.to_s) end end |
.search_result(parameters, time_now) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'app/models/comfy/admin/meetalendar/meetups_controller_logic.rb', line 51 def self.search_result(parameters, time_now) group_params = JSON.parse(parameters.nil? ? {} : parameters) request_result = Comfy::Admin::Meetalendar::MeetupsCalendarSyncer.("/find/groups", group_params.merge({"fields" => "last_event"})) groups = request_result.nil? ? {} : request_result groups_id_name = groups.map{|g| {id: g["id"].to_i, name: g["name"].to_s, link: g["link"].to_s} } group_ids = groups.map{|g| g["id"]} request_result = Comfy::Admin::Meetalendar::MeetupsCalendarSyncer.("/find/upcoming_events", {"page": 200}) upcoming_events = request_result.nil? ? [] : request_result["events"] upcoming_events_of_groups = upcoming_events.select{|e| !e["group"].nil? && group_ids.include?(e["group"]["id"])} grouped_upcoming_events = upcoming_events_of_groups.group_by{|e| e["group"]["id"]} limited_upcoming_events = Hash[grouped_upcoming_events.map{|k, v| [k, v.select{|e| Time.at(Rational(e["time"], 1000)) > time_now}.sort_by{|e| e["time"]}.take(2)]}].select{|k, v| v.any?} found_upcoming_grouped_events = limited_upcoming_events last_events = Hash[groups.group_by{|g| g["id"]}.map{|k, v| [k, v.map{|g| g["last_event"]}]}].select{|k, v| v.any?} found_last_grouped_events = last_events meetup_groups = groups.map{|g| Comfy::Admin::Meetalendar::MeetupGroup.new({"group_id": g["id"], "name": g["name"], "approved_cities": "", "group_link": g["link"]})} search_result = Comfy::Admin::Meetalendar::MeetupsControllerLogic::SearchResult.new(groups_id_name, found_upcoming_grouped_events, found_last_grouped_events, meetup_groups) end |