meetupevents 0.1.21 → 0.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 914741e8bcdd0fed0f6b27b0c5d9241c554a4866
4
- data.tar.gz: b89ea644ca6c0f17dabfc34acf7330b1ece772a2
3
+ metadata.gz: ffa7ca6b2984146b1cf0fcfa7a02c32971c0ff99
4
+ data.tar.gz: f4db03beb765de6bc253af91ccb60e583bb0c2fe
5
5
  SHA512:
6
- metadata.gz: 7b79c339eb8009fdff40a420b70725ad911500bfbddb10dd9678653d1f8c23cfceb709ef795cc9451c1c89bbf614dd88d52a7da22c16aa88e3684fcb2d220399
7
- data.tar.gz: b2d923ef7bdf6fb2b33ff05044e4319a7c4b0532750054de16c5cfdbfc29e06b2a7f92b047efe578411218a117cde9934c72165ecc91dfe5e57fec4bb7c05843
6
+ metadata.gz: 6b132607df41d06c26f3afc0638dbf79b4d05e74f499eb609aff5a840224155774417764e2a7c13954c95c6579d1cfaba4df8fc6d7ec214e2b45e680d22c34dc
7
+ data.tar.gz: 0ca2c7c663779674976a46d646155cb11b00b754f27c2f7a6279307781c6c9319753f4f421a4850ef7ea80a529ed25c96207e725e885f4e8aa067f6d8a139bdf
@@ -11,11 +11,13 @@ module Meetup
11
11
  attr_reader :country
12
12
  attr_reader :events
13
13
  attr_reader :groups
14
+ attr_reader :topic
14
15
 
15
- def initialize(name:, location:, country:)
16
+ def initialize(name:, location:, country:, topic: 'none')
16
17
  @name = name
17
18
  @location = location
18
19
  @country = country
20
+ @topic = topic
19
21
  end
20
22
 
21
23
  def groups
@@ -27,7 +29,9 @@ module Meetup
27
29
 
28
30
  def events
29
31
  return @events if @events
30
- located_events = Meetup::LocatedEvents.new(location: @location)
32
+ located_events = Meetup::LocatedEvents.new(city: @name,
33
+ country: @country,
34
+ topic: @topic)
31
35
  @events = located_events.events
32
36
  end
33
37
 
@@ -5,30 +5,50 @@ require_relative 'location'
5
5
  module Meetup
6
6
  # Class to set up a Meetup Event
7
7
  class Event
8
- attr_reader :name, :status, :city, :venue, :time, :location
8
+ attr_reader :name, :status, :city, :venue,
9
+ :time, :location, :url, :topic
9
10
 
10
- def initialize(name:, status:, city:, venue:, time:, location:)
11
+ def initialize(name:, status:, city:, venue:, time:,
12
+ location:, url:, topic:)
11
13
  @name = name
12
14
  @status = status
13
15
  @city = city
14
16
  @time = time
15
17
  @venue = venue
16
18
  @location = location
19
+ @url = url
20
+ @topic = topic
17
21
  end
18
22
  end
19
23
 
20
24
  # Class to extract the located events from meetup
21
25
  class LocatedEvents
22
26
  attr_reader :events
27
+ def get_event_location(e)
28
+ if e['venue']
29
+ Meetup::Location.new(e['venue']['lat'],
30
+ e['venue']['lon'])
31
+ else
32
+ Meetup::Location.new(e['group']['group_lat'],
33
+ e['group']['group_lon'])
34
+ end
35
+ end
36
+ # TOO SLOW
37
+ # def get_event_category(g)
38
+ # print g['group']['urlname']
39
+ # groupurl = g['group']['urlname'] #.encode(Encoding.find('ASCII'))
40
+ # g = Meetup::MeetupApi.find_group_by_url(groupurl)
41
+ # g['category'] ? g['category']['short_name'] : 'None'
42
+ # end
23
43
 
24
- def initialize(location:)
25
- raw_events = MeetupApi.get_events(location.lat,
26
- location.lon)
44
+ def initialize(country:, city:, topic:)
45
+ raw_events = MeetupApi.get_events_city(country, city, topic)
27
46
  @events = raw_events.map do |g|
28
47
  Meetup::Event.new(name: g['name'], status: g['status'],
29
- city: g['venue'] ? g['venue']['city'] : '', # may nil
48
+ city: city,
30
49
  venue: g['venue'] ? g['venue']['name'] : '', # may nil
31
- time: g['time'], location: location)
50
+ time: g['time'], location: get_event_location(g),
51
+ url: g['event_url'], topic: topic)
32
52
  end
33
53
  end
34
54
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  require 'http'
3
+ require 'cgi'
3
4
  module Meetup
4
5
  # Meetup api
5
6
  class MeetupApi
@@ -51,8 +52,20 @@ module Meetup
51
52
  response['results']
52
53
  end
53
54
 
55
+ # Get all cities of a country
56
+ def self.get_cities_by_country(country)
57
+ api_url = URI.join(API_URL, "/#{API_VERSION}/", 'cities')
58
+ cities_response = HTTP.get(api_url,
59
+ params: { country: country,
60
+ signed: true,
61
+ key: access_key })
62
+ response = JSON.parse(cities_response.to_s)
63
+ # add_log(response, "events_at_#{place}")
64
+ response
65
+ end
66
+
54
67
  # Gets events based on the location. Place var just for fixtures
55
- def self.get_events(lat, lon)
68
+ def self.get_events_location(lat, lon)
56
69
  api_url = URI.join(API_URL, '/find/events/')
57
70
  events_response = HTTP.get(api_url,
58
71
  params: { lon: lon,
@@ -64,6 +77,21 @@ module Meetup
64
77
  response
65
78
  end
66
79
 
80
+ def self.get_events_city(country, city, topic)
81
+ params = { country: country,
82
+ city: city,
83
+ topic: topic,
84
+ signed: true,
85
+ key: access_key }
86
+ params.tap{ |h| h.delete(:topic) } unless topic != 'none'
87
+ api_url = URI.join(API_URL, "/#{API_VERSION}/", 'open_events')
88
+ events_response = HTTP.get(api_url,
89
+ params: params)
90
+ response = JSON.parse(events_response.to_s)
91
+ # add_log(response, "events_at_#{place}")
92
+ response['results']
93
+ end
94
+
67
95
  # Finds groups based on a location text query
68
96
  def self.get_groups(country_code, location_raw_text)
69
97
  api_url = URI.join(API_URL, '/find/groups')
@@ -79,6 +107,7 @@ module Meetup
79
107
 
80
108
  # Finds groups based on a location text query
81
109
  def self.find_group_by_url(urlname)
110
+ urlname = CGI.escape(urlname)
82
111
  api_url = URI.join(API_URL, "/#{urlname}")
83
112
  groups_response = HTTP.get(api_url,
84
113
  params: { signed: true,
@@ -1,3 +1,3 @@
1
1
  module Meetup
2
- VERSION = '0.1.21'
2
+ VERSION = '0.1.22'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meetupevents
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.21
4
+ version: 0.1.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Isaac Martinez, Fabio Daio, Roberto Yebra