festivals_lab 0.0.3 → 0.0.4

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