slack-rtm-api 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b712bcb1116dcb56dfc87445c8d7e2b538d59c68
4
+ data.tar.gz: aa218a36ea07d1520442c6cf0d6de33dfc254783
5
+ SHA512:
6
+ metadata.gz: 345cfa08610b64a8c639e2723d7998d89102a62428b69836a7e08f09b3dcdfcc7c7819d0595de4db47cfce3f7c02788085a6349e992704d3917d751c76fb974a
7
+ data.tar.gz: b4e7915b35e1be890e0987a7bd2129e8c5498b41fe400b88a43d4f76f8aaa17ce963f7f0c17fd799d2a99e49f54d5c162ba70cbe0a7a258f23991682b2579bb6
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ .rvmrc
12
+ *.so
13
+ *.o
14
+ *.a
15
+ mkmf.log
16
+ *.gem
17
+ .ruby-gemset
18
+ .ruby-version
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --format documentation --color
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in getyourguide.gemspec
4
+ gemspec
5
+
6
+ group :development do
7
+ gem 'pry'
8
+ gem 'pry-byebug'
9
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 Rémi Delhaye
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1 @@
1
+ README coming soon
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,6 @@
1
+ require "slack-rtm-api/version"
2
+ require "slack-rtm-api/api_client"
3
+ require "slack-rtm-api/client_wrapper"
4
+
5
+ module SlackRTMApi
6
+ end
@@ -0,0 +1,121 @@
1
+ require 'json'
2
+ require 'socket'
3
+ require 'websocket/driver'
4
+ require 'logger'
5
+
6
+ module SlackRTMApi
7
+
8
+ class ApiClient
9
+ VALID_DRIVER_EVENTS = [:open, :message, :error]
10
+ BASE_URL = 'https://slack.com/api'
11
+ RTM_START_PATH = '/rtm.start'
12
+
13
+ def initialize(token, silent = true)
14
+ @logger = logger = Logger.new(STDOUT) unless silent
15
+ @token = token
16
+ @silent = silent
17
+ @ready = false
18
+ @connected = false
19
+
20
+ if token.nil?
21
+ raise ArgumentError.new "You should pass a valid RTM Websocket url"
22
+ else
23
+ @url = get_ws_url
24
+ end
25
+
26
+ @event_handlers = {}
27
+ @events_queue = []
28
+ end
29
+
30
+ def bind(type, &block)
31
+ unless VALID_DRIVER_EVENTS.include? type
32
+ raise ArgumentError.new "The event `#{type}` doesn't exist, available events are: #{VALID_DRIVER_EVENTS}"
33
+ end
34
+
35
+ @event_handlers[type] = block
36
+ end
37
+
38
+ def send(event)
39
+ event[:id] = random_id
40
+ @events_queue << event.to_json
41
+ end
42
+
43
+ def init
44
+ return if @ready
45
+
46
+ @socket = OpenSSL::SSL::SSLSocket.new TCPSocket.new(@url.host, 443)
47
+ @socket.connect
48
+
49
+ @driver = WebSocket::Driver.client SlackRTMApi::ClientWrapper.new(@url.to_s, @socket)
50
+
51
+ @driver.on :open do
52
+ @connected = true
53
+ send_log "WebSocket::Driver is now connected"
54
+ @event_handlers[:open].call unless @event_handlers[:open].nil?
55
+ end
56
+
57
+ @driver.on :error do |event|
58
+ @connected = false
59
+ send_log "WebSocket::Driver recieved an error"
60
+ @event_handlers[:error].call unless @event_handlers[:error].nil?
61
+ end
62
+
63
+ @driver.on :message do |event|
64
+ data = JSON.parse event.data
65
+ send_log "WebSocket::Driver recieved an event with data: #{data}"
66
+ @event_handlers[:message].call data unless @event_handlers[:message].nil?
67
+ end
68
+
69
+ @driver.start
70
+
71
+ @ready = true
72
+ end
73
+
74
+ def check_ws
75
+ data = @socket.readpartial 4096
76
+
77
+ return if data.nil? or data.empty?
78
+
79
+ @driver.parse data
80
+
81
+ handle_events_queue
82
+ end
83
+
84
+ def handle_events_queue
85
+ @events_queue.each do |event|
86
+ send_log "WebSocket::Driver send #{event}"
87
+ @driver.text event
88
+ end
89
+
90
+ @events_queue.clear
91
+ end
92
+
93
+ def start
94
+ t = Thread.new do
95
+ init
96
+ loop do
97
+ check_ws
98
+ end
99
+ end
100
+
101
+ t.abort_on_exception = true
102
+ end
103
+
104
+ private
105
+
106
+ def get_ws_url
107
+ req = Net::HTTP.post_form URI(BASE_URL + RTM_START_PATH), token: @token
108
+ body = JSON.parse req.body
109
+ URI body['url']
110
+ end
111
+
112
+ def send_log(log)
113
+ @logger.info(log) unless @silent
114
+ end
115
+
116
+ def random_id
117
+ SecureRandom.random_number 9999999
118
+ end
119
+ end
120
+
121
+ end
@@ -0,0 +1,14 @@
1
+ module SlackRTMApi
2
+ class ClientWrapper
3
+ attr_accessor :url, :socket
4
+
5
+ def initialize(url, socket)
6
+ @url = url
7
+ @socket = socket
8
+ end
9
+
10
+ def write(*args)
11
+ self.socket.write(*args)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,3 @@
1
+ module SlackRTMApi
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+ require File.expand_path('../lib/slack-rtm-api/version', __FILE__)
3
+
4
+ Gem::Specification.new do |spec|
5
+ spec.name = 'slack-rtm-api'
6
+ spec.version = SlackRTMApi::VERSION
7
+ spec.authors = ['Rémi Delhaye']
8
+ spec.email = ['contact@rdlh.io']
9
+ spec.summary = 'A simple Slack RTM API Client'
10
+ spec.description = 'A simple Slack RTM API Client'
11
+ spec.homepage = 'https://github.com/rdlh/slack-rtm-api'
12
+ spec.license = 'MIT'
13
+ spec.required_ruby_version = '~> 2.0'
14
+
15
+ spec.files = `git ls-files -z`.split("\x0")
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ['lib']
19
+
20
+ dev_dep = %w(
21
+ bundler
22
+ rake
23
+ colored
24
+ )
25
+
26
+ run_dep = %w(
27
+ websocket-driver
28
+ )
29
+
30
+ dev_dep.each { |d| spec.add_development_dependency d }
31
+ run_dep.each { |d| spec.add_runtime_dependency d }
32
+ end
@@ -0,0 +1,83 @@
1
+ require 'spec_helper'
2
+
3
+ describe GetYourGuide::Models::Activity do
4
+ subject(:category) {
5
+ GetYourGuide::Models::Category.new(
6
+ provider_id: 1,
7
+ name: 'Name'
8
+ )
9
+ }
10
+ subject(:location) {
11
+ GetYourGuide::Models::Location.new(
12
+ provider_id: 1,
13
+ name: 'Name',
14
+ country: 'Country',
15
+ start_location: false
16
+ )
17
+ }
18
+ subject(:image) {
19
+ GetYourGuide::Models::Image.new(
20
+ url: 'https://assets-cdn.github.com/images/modules/open_graph/github-mark.png',
21
+ ssl: true
22
+ )
23
+ }
24
+ subject(:activity) {
25
+ GetYourGuide::Models::Activity.new(
26
+ provider_id: 1,
27
+ title: 'Title',
28
+ abstract: 'Abstract description',
29
+ categories: [category],
30
+ locations: [location],
31
+ starting_point: true,
32
+ indivative_price: 100.50,
33
+ rating: 4.5,
34
+ pictures: [image]
35
+ )
36
+ }
37
+
38
+ it 'should be a GetYourGuide::Models::Activity object' do
39
+ expect(activity).to be_an_instance_of(GetYourGuide::Models::Activity)
40
+ end
41
+
42
+ it 'should have a provider_id' do
43
+ expect(activity.provider_id).to eq(1)
44
+ expect(activity.provider_id).to be_an_instance_of(Fixnum)
45
+ end
46
+
47
+ it 'should have a title' do
48
+ expect(activity.title).to eq('Title')
49
+ expect(activity.title).to be_an_instance_of(String)
50
+ end
51
+
52
+ it 'should have a abstract description' do
53
+ expect(activity.abstract).to eq('Abstract description')
54
+ expect(activity.abstract).to be_an_instance_of(String)
55
+ end
56
+
57
+ it 'should have a Boolean starting_point' do
58
+ expect(activity.starting_point).to eq(true).or eq(false)
59
+ end
60
+
61
+ it 'should have a Float indivative_price' do
62
+ expect(activity.indivative_price).to be_an_instance_of(Float)
63
+ end
64
+
65
+ it 'should have a Float rating' do
66
+ expect(activity.rating).to be_an_instance_of(Float)
67
+ end
68
+
69
+ it 'should have an Array[GetYourGuide::Models::Category] as categories' do
70
+ expect(activity.categories).to be_an_instance_of(Array)
71
+ expect(activity.categories.first).to be_an_instance_of(GetYourGuide::Models::Category)
72
+ end
73
+
74
+ it 'should have an Array[GetYourGuide::Models::Location] as locations' do
75
+ expect(activity.locations).to be_an_instance_of(Array)
76
+ expect(activity.locations.first).to be_an_instance_of(GetYourGuide::Models::Location)
77
+ end
78
+
79
+ it 'should have an Array[GetYourGuide::Models::Image] as pictures' do
80
+ expect(activity.pictures).to be_an_instance_of(Array)
81
+ expect(activity.pictures.first).to be_an_instance_of(GetYourGuide::Models::Image)
82
+ end
83
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe GetYourGuide::Models::Category do
4
+ subject(:category) {
5
+ GetYourGuide::Models::Category.new(
6
+ provider_id: 1,
7
+ name: 'Name'
8
+ )
9
+ }
10
+
11
+ it 'should be a GetYourGuide::Models::Category object' do
12
+ expect(category).to be_an_instance_of(GetYourGuide::Models::Category)
13
+ end
14
+
15
+ it 'should have a provider_id' do
16
+ expect(category.provider_id).to eq(1)
17
+ expect(category.provider_id).to be_an_instance_of(Fixnum)
18
+ end
19
+
20
+ it 'should have a name' do
21
+ expect(category.name).to eq('Name')
22
+ expect(category.name).to be_an_instance_of(String)
23
+ end
24
+ end
@@ -0,0 +1,70 @@
1
+ require 'spec_helper'
2
+
3
+ describe GetYourGuide::Models::Destination do
4
+ subject(:destination) {
5
+ GetYourGuide::Models::Destination.new(
6
+ provider_id: 1,
7
+ name: 'Name',
8
+ country: 'Country',
9
+ unlocode: 'FR',
10
+ iata: 'EUR',
11
+ destination_type: 'Destination Type'
12
+ )
13
+ }
14
+ subject(:destination_with_nil_attributes) {
15
+ GetYourGuide::Models::Destination.new(
16
+ provider_id: 1,
17
+ name: 'Name',
18
+ country: 'Country',
19
+ unlocode: nil,
20
+ iata: nil,
21
+ destination_type: 'Destination Type'
22
+ )
23
+ }
24
+
25
+ it 'should be a GetYourGuide::Models::Destination object' do
26
+ expect(destination).to be_an_instance_of(GetYourGuide::Models::Destination)
27
+ end
28
+
29
+ it 'should have a provider_id' do
30
+ expect(destination.provider_id).to eq(1)
31
+ expect(destination.provider_id).to be_an_instance_of(Fixnum)
32
+ end
33
+
34
+ it 'should have a name' do
35
+ expect(destination.name).to eq('Name')
36
+ expect(destination.name).to be_an_instance_of(String)
37
+ end
38
+
39
+ it 'should have a country' do
40
+ expect(destination.country).to eq('Country')
41
+ expect(destination.country).to be_an_instance_of(String)
42
+ end
43
+
44
+ context 'WITH iata and un/locode' do
45
+ it 'should have a not null iata' do
46
+ expect(destination.iata).to eq('EUR')
47
+ expect(destination.iata).to be_an_instance_of(String)
48
+ end
49
+
50
+ it 'should have a not null un/locode' do
51
+ expect(destination.unlocode).to eq('FR')
52
+ expect(destination.unlocode).to be_an_instance_of(String)
53
+ end
54
+ end
55
+
56
+ context 'WITHOUT iata and un/locode' do
57
+ it 'should have a null iata' do
58
+ expect(destination_with_nil_attributes.iata).to be_nil
59
+ end
60
+
61
+ it 'should have a null un/locode' do
62
+ expect(destination_with_nil_attributes.unlocode).to be_nil
63
+ end
64
+ end
65
+
66
+ it 'should have a destination_type' do
67
+ expect(destination.destination_type).to eq('Destination Type')
68
+ expect(destination.destination_type).to be_an_instance_of(String)
69
+ end
70
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe GetYourGuide::Models::ImageFormat do
4
+ subject(:image_format) {
5
+ GetYourGuide::Models::ImageFormat.new(
6
+ provider_id: 1,
7
+ width: 200,
8
+ height: 300,
9
+ comment: 'Comment'
10
+ )
11
+ }
12
+
13
+ it 'should be a GetYourGuide::Models::ImageFormat object' do
14
+ expect(image_format).to be_an_instance_of(GetYourGuide::Models::ImageFormat)
15
+ end
16
+
17
+ it 'should have a provider_id' do
18
+ expect(image_format.provider_id).to eq(1)
19
+ expect(image_format.provider_id).to be_an_instance_of(Fixnum)
20
+ end
21
+
22
+ it 'should have a width' do
23
+ expect(image_format.width).to eq(200)
24
+ expect(image_format.width).to be_an_instance_of(Fixnum)
25
+ end
26
+
27
+ it 'should have a height' do
28
+ expect(image_format.height).to eq(300)
29
+ expect(image_format.height).to be_an_instance_of(Fixnum)
30
+ end
31
+
32
+ it 'should have a comment' do
33
+ expect(image_format.comment).to eq('Comment')
34
+ expect(image_format.comment).to be_an_instance_of(String)
35
+ end
36
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe GetYourGuide::Models::Image do
4
+ subject(:image) {
5
+ GetYourGuide::Models::Image.new(
6
+ url: 'https://assets-cdn.github.com/images/modules/open_graph/github-mark.png',
7
+ ssl: true
8
+ )
9
+ }
10
+
11
+ it 'should be a GetYourGuide::Models::Image object' do
12
+ expect(image).to be_an_instance_of(GetYourGuide::Models::Image)
13
+ end
14
+
15
+ it 'should have a String url' do
16
+ expect(image.url).to eq('https://assets-cdn.github.com/images/modules/open_graph/github-mark.png')
17
+ expect(image.url).to be_an_instance_of(String)
18
+ end
19
+
20
+ it 'should have a Boolean ssl' do
21
+ expect(image.ssl).to eq(true).or eq(false)
22
+ end
23
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe GetYourGuide::Models::Location do
4
+ subject(:location) {
5
+ GetYourGuide::Models::Location.new(
6
+ provider_id: 1,
7
+ name: 'Name',
8
+ country: 'Country',
9
+ start_location: true
10
+ )
11
+ }
12
+
13
+ it 'should be a GetYourGuide::Models::Location object' do
14
+ expect(location).to be_an_instance_of(GetYourGuide::Models::Location)
15
+ end
16
+
17
+ it 'should have a provider_id' do
18
+ expect(location.provider_id).to eq(1)
19
+ expect(location.provider_id).to be_an_instance_of(Fixnum)
20
+ end
21
+
22
+ it 'should have a name' do
23
+ expect(location.name).to eq('Name')
24
+ expect(location.name).to be_an_instance_of(String)
25
+ end
26
+
27
+ it 'should have a country' do
28
+ expect(location.country).to eq('Country')
29
+ expect(location.country).to be_an_instance_of(String)
30
+ end
31
+
32
+ it 'should have a start_location' do
33
+ expect(location.start_location).to eq(true).or eq(false)
34
+ end
35
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ describe GetYourGuide::Models::TopCategory do
4
+ subject(:top_category) {
5
+ GetYourGuide::Models::TopCategory.new(
6
+ provider_id: 1,
7
+ name: 'Name',
8
+ link: 'Link',
9
+ picture: 'Picture',
10
+ rating: 'Rating'
11
+ )
12
+ }
13
+
14
+ it 'should be a GetYourGuide::Models::TopCategory object' do
15
+ expect(top_category).to be_an_instance_of(GetYourGuide::Models::TopCategory)
16
+ end
17
+
18
+ it 'should have a provider_id' do
19
+ expect(top_category.provider_id).to eq(1)
20
+ expect(top_category.provider_id).to be_an_instance_of(Fixnum)
21
+ end
22
+
23
+ it 'should have a name' do
24
+ expect(top_category.name).to eq('Name')
25
+ expect(top_category.name).to be_an_instance_of(String)
26
+ end
27
+
28
+ it 'should have a link' do
29
+ expect(top_category.link).to eq('Link')
30
+ expect(top_category.link).to be_an_instance_of(String)
31
+ end
32
+
33
+ it 'should have a picture' do
34
+ expect(top_category.picture).to eq('Picture')
35
+ expect(top_category.picture).to be_an_instance_of(String)
36
+ end
37
+
38
+ it 'should have a rating' do
39
+ expect(top_category.rating).to eq('Rating')
40
+ expect(top_category.rating).to be_an_instance_of(String)
41
+ end
42
+ end
@@ -0,0 +1,6 @@
1
+ require 'getyourguide'
2
+ require 'coveralls'
3
+ Coveralls.wear!
4
+
5
+ RSpec.configure do |config|
6
+ end
metadata ADDED
@@ -0,0 +1,127 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: slack-rtm-api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Rémi Delhaye
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-07-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: colored
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: websocket-driver
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: A simple Slack RTM API Client
70
+ email:
71
+ - contact@rdlh.io
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".gitignore"
77
+ - ".rspec"
78
+ - Gemfile
79
+ - LICENSE.txt
80
+ - README.md
81
+ - Rakefile
82
+ - lib/slack-rtm-api.rb
83
+ - lib/slack-rtm-api/api_client.rb
84
+ - lib/slack-rtm-api/client_wrapper.rb
85
+ - lib/slack-rtm-api/version.rb
86
+ - slack-rtm-api.gemspec
87
+ - spec/getyourguide/models/activity_spec.rb
88
+ - spec/getyourguide/models/category_spec.rb
89
+ - spec/getyourguide/models/destination_spec.rb
90
+ - spec/getyourguide/models/image_format_spec.rb
91
+ - spec/getyourguide/models/image_spec.rb
92
+ - spec/getyourguide/models/location_spec.rb
93
+ - spec/getyourguide/models/top_category_spec.rb
94
+ - spec/spec_helper.rb
95
+ homepage: https://github.com/rdlh/slack-rtm-api
96
+ licenses:
97
+ - MIT
98
+ metadata: {}
99
+ post_install_message:
100
+ rdoc_options: []
101
+ require_paths:
102
+ - lib
103
+ required_ruby_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - "~>"
106
+ - !ruby/object:Gem::Version
107
+ version: '2.0'
108
+ required_rubygems_version: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ requirements: []
114
+ rubyforge_project:
115
+ rubygems_version: 2.4.6
116
+ signing_key:
117
+ specification_version: 4
118
+ summary: A simple Slack RTM API Client
119
+ test_files:
120
+ - spec/getyourguide/models/activity_spec.rb
121
+ - spec/getyourguide/models/category_spec.rb
122
+ - spec/getyourguide/models/destination_spec.rb
123
+ - spec/getyourguide/models/image_format_spec.rb
124
+ - spec/getyourguide/models/image_spec.rb
125
+ - spec/getyourguide/models/location_spec.rb
126
+ - spec/getyourguide/models/top_category_spec.rb
127
+ - spec/spec_helper.rb