meetupevents 0.1.21 → 0.1.22

Sign up to get free protection for your applications and to get access to all the features.
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