festivals_lab 0.0.3 → 0.0.4

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 67ea9c76f6dc42686fa5a358c73c565139b8408a
4
+ data.tar.gz: 79bcb08ca6fbcc5c3573a492e87ffb796091d039
5
+ SHA512:
6
+ metadata.gz: 11f091bde049e598408cd1abaa5be80e48c8cba1547e0fbbd60330f5d56f87e2fa3952cafb42e95b63dae4b2733b447b1b6fff319ceaed18e0b36e38b92d73d9
7
+ data.tar.gz: 6b1154567e1ca0707ebf74cb6657c50ec24857b85e058ceefb659567c0fa7748b4f60fdab693889bea108bfa61dff80cb0267d282a16858340b4da269f377dd9
@@ -0,0 +1,49 @@
1
+ AllCops:
2
+ DisplayCopNames: true
3
+ DisplayStyleGuide: true
4
+
5
+ # Relates to the indentation of if/when/(etc.) blocks when the initial keyword
6
+ # is indented as part of a variable assignment.
7
+ #
8
+ # Our preference is that the rubocop default conflicts with our 80-character
9
+ # line restriction, leaving less space for code inside nested blocks. We make
10
+ # this change at the cost of a little bit of readability.
11
+ #
12
+ # # bad (although the Rubocop default):
13
+ # thing = if x > 42
14
+ # thing!
15
+ # else
16
+ # other_thing!
17
+ # end
18
+ #
19
+ # # good (preferred):
20
+ # thing = if x > 42
21
+ # thing!
22
+ # else
23
+ # other_thing!
24
+ # end
25
+ #
26
+ # # also acceptable
27
+ # thing =
28
+ # if x > 42
29
+ # thing!
30
+ # else
31
+ # other_thing!
32
+ # end
33
+ Lint/EndAlignment:
34
+ EnforcedStyleAlignWith: variable
35
+
36
+ # Passing multiple hashes to a function is messy, and clarity is good
37
+ # This is an extension of https://github.com/bbatsov/ruby-style-guide#no-braces-opts-hash
38
+ Style/BracesAroundHashParameters:
39
+ EnforcedStyle: context_dependent
40
+ StyleGuide: https://github.com/bbatsov/rubocop/issues/801
41
+
42
+ # This is one part of the style guide that doesn't express a preference, it just
43
+ # suggests you make a choice
44
+ Style/DotPosition:
45
+ EnforcedStyle: trailing
46
+
47
+ Style/StringLiterals:
48
+ EnforcedStyle: double_quotes
49
+ StyleGuide: https://www.viget.com/articles/just-use-double-quoted-ruby-strings
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
- source 'http://rubygems.org'
1
+ source "http://rubygems.org"
2
2
 
3
- gemspec
3
+ gemspec
@@ -1,31 +1,32 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- festivals_lab (0.0.3)
4
+ festivals_lab (0.0.4)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
8
8
  specs:
9
- addressable (2.3.5)
10
- ansi (1.4.3)
11
- builder (3.2.2)
12
- crack (0.4.1)
13
- safe_yaml (~> 0.9.0)
14
- hashie (2.0.5)
15
- minitest (4.7.5)
16
- minitest-reporters (0.14.20)
9
+ addressable (2.5.1)
10
+ public_suffix (~> 2.0, >= 2.0.2)
11
+ ansi (1.5.0)
12
+ builder (3.2.3)
13
+ crack (0.4.3)
14
+ safe_yaml (~> 1.0.0)
15
+ hashdiff (0.3.2)
16
+ minitest (5.10.1)
17
+ minitest-reporters (1.1.14)
17
18
  ansi
18
19
  builder
19
- minitest (>= 2.12, < 5.0)
20
- powerbar
21
- powerbar (1.0.11)
22
- ansi (~> 1.4.0)
23
- hashie (>= 1.1.0)
24
- rake (10.0.2)
25
- safe_yaml (0.9.5)
26
- webmock (1.13.0)
27
- addressable (>= 2.2.7)
20
+ minitest (>= 5.0)
21
+ ruby-progressbar
22
+ public_suffix (2.0.5)
23
+ rake (12.0.0)
24
+ ruby-progressbar (1.8.1)
25
+ safe_yaml (1.0.4)
26
+ webmock (3.0.1)
27
+ addressable (>= 2.3.6)
28
28
  crack (>= 0.3.2)
29
+ hashdiff
29
30
 
30
31
  PLATFORMS
31
32
  ruby
@@ -35,3 +36,6 @@ DEPENDENCIES
35
36
  minitest-reporters
36
37
  rake
37
38
  webmock
39
+
40
+ BUNDLED WITH
41
+ 1.14.6
data/Rakefile CHANGED
@@ -1,11 +1,11 @@
1
- require 'rake/testtask'
1
+ require "rake/testtask"
2
2
 
3
3
  Bundler::GemHelper.install_tasks
4
4
 
5
5
  Rake::TestTask.new do |t|
6
6
  t.libs << "test"
7
- t.test_files = FileList['test/**/test*.rb']
7
+ t.test_files = FileList["test/**/test*.rb"]
8
8
  t.verbose = true
9
9
  end
10
10
 
11
- task :default => [:test]
11
+ task default: [:test]
@@ -1,21 +1,22 @@
1
1
  # -*- encoding: utf-8 -*-
2
- require File.expand_path('../lib/festivals_lab/version', __FILE__)
2
+
3
+ require File.expand_path("../lib/festivals_lab/version", __FILE__)
3
4
 
4
5
  Gem::Specification.new do |gem|
5
6
  gem.authors = ["Gareth Adams"]
6
7
  gem.email = ["g@rethada.ms"]
7
- gem.description = %q{Accesses festival data from the Edinburgh Festivals Innovation Lab API}
8
- gem.summary = %q{The Edinburgh Festivals API is an ambitious project which aims to create open access to the event listings data of Edinburgh’s 12 major Festivals}
8
+ gem.description = "Accesses festival data from the Edinburgh Festivals Innovation Lab API"
9
+ gem.summary = "The Edinburgh Festivals API is an ambitious project which aims to create open access to the event listings data of Edinburgh’s 12 major Festivals"
9
10
  gem.homepage = "https://github.com/gareth/festivals_lab"
10
11
 
11
- gem.files = `git ls-files`.split($\)
12
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
12
+ gem.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
13
+ gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
13
14
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
15
  gem.name = "festivals_lab"
15
16
  gem.require_paths = ["lib"]
16
17
  gem.version = FestivalsLab::VERSION
17
18
 
18
- gem.add_development_dependency 'rake'
19
- gem.add_development_dependency 'webmock'
20
- gem.add_development_dependency 'minitest-reporters'
19
+ gem.add_development_dependency "rake"
20
+ gem.add_development_dependency "webmock"
21
+ gem.add_development_dependency "minitest-reporters"
21
22
  end
@@ -1,15 +1,14 @@
1
- require 'json'
2
- require 'net/http'
3
- require 'openssl' # Provides HMAC-SHA1
1
+ require "json"
2
+ require "net/http"
3
+ require "openssl" # Provides HMAC-SHA1
4
4
 
5
5
  class FestivalsLab
6
-
7
6
  attr_accessor :access_key, :secret_token
8
7
 
9
- SCHEME = "http"
10
- HOST = "api.festivalslab.com"
8
+ SCHEME = "http".freeze
9
+ HOST = "api.edinburghfestivalcity.com".freeze
11
10
 
12
- def initialize access_key, secret_token
11
+ def initialize(access_key, secret_token)
13
12
  @access_key = access_key
14
13
  @secret_token = secret_token
15
14
  end
@@ -19,36 +18,36 @@ class FestivalsLab
19
18
  # See the API documentation at
20
19
  # http://api.festivalslab.com/documentation#Querying%20the%20API for valid
21
20
  # parameters
22
- def events params = {}
21
+ def events(params = {})
23
22
  params = params.dup
24
23
 
25
24
  # Exact field options
26
- valid_options = [:festival, :genre, :country, :code, :year]
25
+ valid_options = %i[festival genre country code year]
27
26
  # Fulltext search options
28
- valid_options += [:title, :description, :artist]
27
+ valid_options += %i[title description artist]
29
28
  # Event date options
30
- valid_options += [:date_from, :date_to]
29
+ valid_options += %i[date_from date_to]
31
30
  # Venue options
32
- valid_options += [:venue_name, :venue_code, :post_code, :distance, :lat, :lng]
31
+ valid_options += %i[venue_name venue_code post_code distance lat lng]
33
32
  # Price options
34
- valid_options += [:price_from, :price_to]
33
+ valid_options += %i[price_from price_to]
35
34
  # Update options
36
35
  valid_options += [:modified_from]
37
36
  # Pagination options
38
- valid_options += [:size, :from]
37
+ valid_options += %i[size from]
39
38
 
40
- invalid_keys = params.reject { |k,v| valid_options.include? k }.keys
39
+ invalid_keys = params.reject { |k, _v| valid_options.include? k }.keys
41
40
 
42
- raise ArgumentError, "Unexpected events parameter: #{invalid_keys.join ", "}" if invalid_keys.any?
41
+ raise ArgumentError, "Unexpected events parameter: #{invalid_keys.join ', '}" if invalid_keys.any?
43
42
 
44
- FestivalsLab.request access_key, secret_token, '/events', params
43
+ FestivalsLab.request access_key, secret_token, "/events", params
45
44
  end
46
45
 
47
46
  # Returns the known data for an event based on the event's UUID
48
47
  #
49
48
  # The only way to obtain the UUID for an event is to extract it from the
50
49
  # `url` property returned by the `events` endpoint
51
- def event uuid
50
+ def event(uuid)
52
51
  FestivalsLab.request access_key, secret_token, "/event/#{uuid}"
53
52
  end
54
53
 
@@ -56,23 +55,23 @@ class FestivalsLab
56
55
  # Makes a signed API request to the given endpoint
57
56
  #
58
57
  # Requests the data in JSON format and parses the response as JSON
59
- def request access_key, secret_token, endpoint, params = {}
58
+ def request(access_key, secret_token, endpoint, params = {})
60
59
  uri = FestivalsLab.signed_uri access_key, secret_token, endpoint, params
61
60
  Net::HTTP.start(uri.host, uri.port) do |http|
62
61
  request = Net::HTTP::Get.new uri.request_uri
63
- request['Accept'] = 'application/json'
62
+ request["Accept"] = "application/json"
64
63
  response = http.request request
65
64
  if Net::HTTPSuccess === response
66
65
  JSON.parse(response.body)
67
66
  else
68
- raise ApiError.new(response)
67
+ raise ApiError, response
69
68
  end
70
69
  end
71
70
  end
72
71
 
73
72
  # Returns a URI containing the correct signature for the given endpoint and
74
73
  # query string parameters
75
- def signed_uri access_key, secret_token, endpoint, params = {}
74
+ def signed_uri(access_key, secret_token, endpoint, params = {})
76
75
  params = params.dup
77
76
  raise Error, "Missing API access key" unless access_key
78
77
  raise Error, "Missing API secret token" unless secret_token
@@ -93,8 +92,8 @@ class FestivalsLab
93
92
  end
94
93
 
95
94
  # Returns the correct API signature for the given URL and secret token
96
- def signature secret_token, url
97
- OpenSSL::HMAC.hexdigest 'sha1', secret_token, url
95
+ def signature(secret_token, url)
96
+ OpenSSL::HMAC.hexdigest "sha1", secret_token, url
98
97
  end
99
98
  end
100
99
 
@@ -103,7 +102,7 @@ class FestivalsLab
103
102
  ApiError = Class.new(StandardError) do
104
103
  attr_reader :response
105
104
 
106
- def initialize response
105
+ def initialize(response)
107
106
  @response = response
108
107
  end
109
108
  end
@@ -1,3 +1,3 @@
1
1
  class FestivalsLab
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4".freeze
3
3
  end
@@ -1,16 +1,15 @@
1
- require 'test_helper'
1
+ require "test_helper"
2
2
 
3
- require 'minitest/spec'
4
- require 'webmock/minitest'
3
+ require "minitest/spec"
4
+ require "webmock/minitest"
5
5
 
6
- require 'festivals_lab'
6
+ require "festivals_lab"
7
7
 
8
8
  describe FestivalsLab do
9
-
10
9
  before do
11
- @api = FestivalsLab.new '123', '456'
12
- @successful_response = { status: 200, body: "[{}]", headers: { 'Content-Type' => 'application/json' } }
13
- @failed_response = { status: 403, body: "", headers: { 'Content-Type' => 'application/json' } }
10
+ @api = FestivalsLab.new "123", "456"
11
+ @successful_response = { status: 200, body: "[{}]", headers: { "Content-Type" => "application/json" } }
12
+ @failed_response = { status: 403, body: "", headers: { "Content-Type" => "application/json" } }
14
13
  end
15
14
 
16
15
  it "has a VERSION" do
@@ -32,23 +31,23 @@ describe FestivalsLab do
32
31
  end
33
32
 
34
33
  describe "#events" do
35
- [:festival, :genre, :country, :code, :year, :title, :description, :artist, :venue_name, :post_code, :distance].each do |param|
34
+ %i[festival genre country code year title description artist venue_name post_code distance].each do |param|
36
35
  it "allows a string '#{param}' parameter" do
37
- stub = stub_http_request(:get, %r{//api\.festivalslab\.com/events})
38
- .with(query: hash_including(param => 'value'))
39
- .to_return(@successful_response)
36
+ stub = stub_http_request(:get, %r{//api\.edinburghfestivalcity\.com/events}).
37
+ with(query: hash_including(param => "value")).
38
+ to_return(@successful_response)
40
39
 
41
- @api.events param => 'value'
40
+ @api.events param => "value"
42
41
 
43
42
  assert_requested(stub)
44
43
  end
45
44
  end
46
45
 
47
- [:venue_code, :price_from, :price_to, :size, :from, :lat, :lng].each do |param|
46
+ %i[venue_code price_from price_to size from lat lng].each do |param|
48
47
  it "allows a numeric '#{param}' parameter" do
49
- stub = stub_http_request(:get, %r{//api\.festivalslab\.com/events})
50
- .with(query: hash_including(param => '42'))
51
- .to_return(@successful_response)
48
+ stub = stub_http_request(:get, %r{//api\.edinburghfestivalcity\.com/events}).
49
+ with(query: hash_including(param => "42")).
50
+ to_return(@successful_response)
52
51
 
53
52
  @api.events param => 42
54
53
 
@@ -56,11 +55,11 @@ describe FestivalsLab do
56
55
  end
57
56
  end
58
57
 
59
- [:date_from, :date_to, :modified_from].each do |param|
58
+ %i[date_from date_to modified_from].each do |param|
60
59
  it "allows a date '#{param}' parameter" do
61
- stub = stub_http_request(:get, %r{//api\.festivalslab\.com/events})
62
- .with(query: hash_including(param => '1970-01-01 01:00:00'))
63
- .to_return(@successful_response)
60
+ stub = stub_http_request(:get, %r{//api\.edinburghfestivalcity\.com/events}).
61
+ with(query: hash_including(param => "1970-01-01 01:00:00")).
62
+ to_return(@successful_response)
64
63
 
65
64
  @api.events param => Time.at(0).strftime("%F %T")
66
65
 
@@ -69,8 +68,8 @@ describe FestivalsLab do
69
68
  end
70
69
 
71
70
  it "returns parsed events" do
72
- stub = stub_http_request(:get, %r{//api\.festivalslab\.com/events})
73
- .to_return(@successful_response)
71
+ stub_http_request(:get, %r{//api\.edinburghfestivalcity\.com/events}).
72
+ to_return(@successful_response)
74
73
 
75
74
  response = @api.events
76
75
 
@@ -86,19 +85,19 @@ describe FestivalsLab do
86
85
 
87
86
  describe "#event" do
88
87
  it "requests the event from the API" do
89
- stub = stub_http_request(:get, %r{//api\.festivalslab\.com/event/00000000000000000000000000000000deadbeef})
90
- .to_return(@successful_response)
88
+ stub = stub_http_request(:get, %r{//api\.edinburghfestivalcity\.com/event/00000000000000000000000000000000deadbeef}).
89
+ to_return(@successful_response)
91
90
 
92
- response = @api.event '00000000000000000000000000000000deadbeef'
91
+ @api.event "00000000000000000000000000000000deadbeef"
93
92
 
94
93
  assert_requested(stub)
95
94
  end
96
95
 
97
96
  it "returns the parsed event" do
98
- stub = stub_http_request(:get, %r{//api\.festivalslab\.com/event/00000000000000000000000000000000deadbeef})
99
- .to_return(@successful_response)
97
+ stub_http_request(:get, %r{//api\.edinburghfestivalcity\.com/event/00000000000000000000000000000000deadbeef}).
98
+ to_return(@successful_response)
100
99
 
101
- response = @api.event '00000000000000000000000000000000deadbeef'
100
+ response = @api.event "00000000000000000000000000000000deadbeef"
102
101
 
103
102
  assert_equal [{}], response
104
103
  end
@@ -106,59 +105,56 @@ describe FestivalsLab do
106
105
 
107
106
  describe "request" do
108
107
  before do
109
- @uri = "http://api.festivalslab.com/events?key=123&signature=742969faae86a4ba4223c7d93d05ead4b1397c23"
108
+ @uri = "http://api.edinburghfestivalcity.com/events?key=123&signature=742969faae86a4ba4223c7d93d05ead4b1397c23"
110
109
  end
111
110
 
112
111
  it "makes a request to the signed endpoint URI" do
113
112
  stub_request(:get, @uri).to_return(@successful_response)
114
113
 
115
- FestivalsLab.request @api.access_key, @api.secret_token, '/events'
114
+ FestivalsLab.request @api.access_key, @api.secret_token, "/events"
116
115
 
117
116
  assert_requested(:get, @uri)
118
117
  end
119
118
 
120
119
  it "parses the response as JSON" do
121
- stub = stub_http_request(:get, @uri)
122
- .to_return(@successful_response)
120
+ stub_http_request(:get, @uri).
121
+ to_return(@successful_response)
123
122
 
124
- response = FestivalsLab.request @api.access_key, @api.secret_token, '/events'
123
+ response = FestivalsLab.request @api.access_key, @api.secret_token, "/events"
125
124
 
126
125
  assert_equal [{}], response
127
126
  end
128
127
 
129
128
  it "raises FestivalsLab::ApiError on unsuccessful HTTP request" do
130
- stub = stub_http_request(:get, @uri)
131
- .to_return(@failed_response)
129
+ stub_http_request(:get, @uri).
130
+ to_return(@failed_response)
132
131
 
133
- lambda { FestivalsLab.request @api.access_key, @api.secret_token, '/events' }.must_raise(FestivalsLab::ApiError)
132
+ -> { FestivalsLab.request @api.access_key, @api.secret_token, "/events" }.must_raise(FestivalsLab::ApiError)
134
133
  end
135
134
  end
136
135
 
137
136
  describe "signed_uri" do
138
137
  it "requires an access key to be set" do
139
138
  @api.secret_token = nil
140
- lambda { FestivalsLab.signed_uri(@api.access_key, @api.secret_token, '/events') }.must_raise(FestivalsLab::Error, "Missing API access key")
139
+ -> { FestivalsLab.signed_uri(@api.access_key, @api.secret_token, "/events") }.must_raise(FestivalsLab::Error, "Missing API access key")
141
140
  end
142
141
 
143
142
  it "requires an access token to be set" do
144
143
  @api.access_key = nil
145
- lambda { FestivalsLab.signed_uri(@api.access_key, @api.secret_token, '/events') }.must_raise(FestivalsLab::Error, "Missing API access token")
144
+ -> { FestivalsLab.signed_uri(@api.access_key, @api.secret_token, "/events") }.must_raise(FestivalsLab::Error, "Missing API access token")
146
145
  end
147
146
 
148
147
  it "appends the correct signature to the request URI" do
149
- uri = FestivalsLab.signed_uri(@api.access_key, @api.secret_token, '/events', {:key => 123})
148
+ uri = FestivalsLab.signed_uri(@api.access_key, @api.secret_token, "/events", key: 123)
150
149
  uri.must_be_kind_of(URI)
151
- uri.to_s.must_equal 'http://api.festivalslab.com/events?key=123&signature=742969faae86a4ba4223c7d93d05ead4b1397c23'
150
+ uri.to_s.must_equal "http://api.edinburghfestivalcity.com/events?key=123&signature=742969faae86a4ba4223c7d93d05ead4b1397c23"
152
151
  end
153
152
  end
154
153
 
155
154
  describe "signature" do
156
155
  it "calculates the HMAC-SHA1 signature based on the access key" do
157
156
  ## Because `OpenSSL#HMAC.hexdigest('sha1', '456', '/events?key=123')` # => '742969faae86a4ba4223c7d93d05ead4b1397c23'
158
- FestivalsLab.signature(@api.secret_token, '/events?key=123').must_equal '742969faae86a4ba4223c7d93d05ead4b1397c23'
157
+ FestivalsLab.signature(@api.secret_token, "/events?key=123").must_equal "742969faae86a4ba4223c7d93d05ead4b1397c23"
159
158
  end
160
159
  end
161
-
162
160
  end
163
-
164
-
@@ -1,4 +1,4 @@
1
- require 'minitest/autorun'
2
- require 'minitest/reporters'
1
+ require "minitest/autorun"
2
+ require "minitest/reporters"
3
3
 
4
4
  MiniTest::Reporters.use!
metadata CHANGED
@@ -1,62 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: festivals_lab
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
5
- prerelease:
4
+ version: 0.0.4
6
5
  platform: ruby
7
6
  authors:
8
7
  - Gareth Adams
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-08-15 00:00:00.000000000 Z
11
+ date: 2017-04-17 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: webmock
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: minitest-reporters
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - ">="
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  description: Accesses festival data from the Edinburgh Festivals Innovation Lab API
@@ -66,8 +59,9 @@ executables: []
66
59
  extensions: []
67
60
  extra_rdoc_files: []
68
61
  files:
69
- - .gitignore
70
- - .rvmrc
62
+ - ".gitignore"
63
+ - ".rubocop.yml"
64
+ - ".rvmrc"
71
65
  - CONTRIBUTING.md
72
66
  - Gemfile
73
67
  - Gemfile.lock
@@ -81,33 +75,26 @@ files:
81
75
  - test/test_helper.rb
82
76
  homepage: https://github.com/gareth/festivals_lab
83
77
  licenses: []
78
+ metadata: {}
84
79
  post_install_message:
85
80
  rdoc_options: []
86
81
  require_paths:
87
82
  - lib
88
83
  required_ruby_version: !ruby/object:Gem::Requirement
89
- none: false
90
84
  requirements:
91
- - - ! '>='
85
+ - - ">="
92
86
  - !ruby/object:Gem::Version
93
87
  version: '0'
94
- segments:
95
- - 0
96
- hash: -3698572132411797010
97
88
  required_rubygems_version: !ruby/object:Gem::Requirement
98
- none: false
99
89
  requirements:
100
- - - ! '>='
90
+ - - ">="
101
91
  - !ruby/object:Gem::Version
102
92
  version: '0'
103
- segments:
104
- - 0
105
- hash: -3698572132411797010
106
93
  requirements: []
107
94
  rubyforge_project:
108
- rubygems_version: 1.8.24
95
+ rubygems_version: 2.5.2
109
96
  signing_key:
110
- specification_version: 3
97
+ specification_version: 4
111
98
  summary: The Edinburgh Festivals API is an ambitious project which aims to create
112
99
  open access to the event listings data of Edinburgh’s 12 major Festivals
113
100
  test_files: