parliament-ruby 0.7.4 → 0.7.5.pre

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: 72c73709b14ab1591a287636e7735c9758de56da
4
- data.tar.gz: 14aaef8e1f7233189d8f99488ea4ecfe740341a2
3
+ metadata.gz: 0a79edd03b21e7446afd20f132813f37b09cfacc
4
+ data.tar.gz: dfbc9570cea9cc014855cb05ffd0aa763f47edde
5
5
  SHA512:
6
- metadata.gz: 13f59fb73e8b3078dc74b8899fd39ddf0c8d013cfb0ab8c4a005d216e275fe18ea266f10337ad46a1ff86a0be2bb17e49cb4e9f86661d9f6d028e91041e30689
7
- data.tar.gz: cc3d3831a3a52395f0bfb979f06fcfc56f47c36d589493ca79aa25597dcac4e3da5bb7463852d3696b810410398ac0ae3e50157d231434f26164b81c79d27de8
6
+ metadata.gz: d75ea0f2608a5ad2adf3f9860d7b22c640d631f1b8b3ef6e47f522433e9e6ee5c2025bbd74c773e23f333e1ee6c5378d526c5eabc5435fdba43278c132b345ce
7
+ data.tar.gz: 876e757ac2e8dfcdda1bbc8f336301f043b340549c670a7a62622d5d8fc11464b27de3d63f5f9e9ba2bf418e97f9cc681782b75aa87886ca3e73b79ceb731fea
@@ -1,11 +1,8 @@
1
1
  require 'net/http'
2
- require 'grom'
3
2
 
4
3
  require 'parliament/version'
5
4
  require 'parliament/request'
6
5
  require 'parliament/response'
7
- require 'parliament/utils'
8
- require 'parliament/decorator'
9
6
  require 'parliament/builder'
10
7
 
11
8
  require 'parliament/network_error'
@@ -3,6 +3,5 @@ module Parliament
3
3
  # @since 0.7.0
4
4
  module Builder
5
5
  require 'parliament/builder/base_response_builder'
6
- require 'parliament/builder/ntriple_response_builder'
7
6
  end
8
7
  end
@@ -1,12 +1,21 @@
1
1
  module Parliament
2
2
  module Builder
3
+ # Base response builder, allowing the user to return the body of an HTTPResponse.
4
+ # @since 0.7.5
3
5
  class BaseResponseBuilder
4
- def initialize(response)
6
+ # Creates a new BaseReponseBuilder.
7
+ # @param [HTTPResponse] response an HTTP response.
8
+ # @param [Module] decorators a namespace which contains modules used to decorate the objects we receive. It is not used directly by the BaseResponseBuilder, but is there for API completeness.
9
+ def initialize(response:, decorators: nil)
5
10
  @response = response
11
+ _ = decorators
6
12
  end
7
13
 
14
+ # Builds a Parliament::Response::BaseResponse.
15
+ #
16
+ # @return [Parliament::Response::Base::Response] a Parliament::Response::BaseResponse containing the HTTPResponse.
8
17
  def build
9
- @response
18
+ Parliament::Response::BaseResponse.new(@response)
10
19
  end
11
20
  end
12
21
  end
@@ -1,78 +1,89 @@
1
1
  module Parliament
2
2
  module Request
3
+ # Base request object, allowing the user to make a request to an API.
4
+ #
5
+ # @since 0.7.5
6
+ #
7
+ # @attr_reader [String] base_url the base url of our api. (expected: http://example.com - without the trailing slash).
8
+ # @attr_reader [Hash] headers the headers being sent in the request.
3
9
  class BaseRequest
4
10
  attr_reader :base_url, :headers
5
- # Creates a new instance of Parliament::Request.
11
+ # Creates a new instance of Parliament::Request::BaseRequest.
6
12
  #
7
13
  # An interesting note for #initialize is that setting base_url on the class, or using the environment variable
8
14
  # PARLIAMENT_BASE_URL means you don't need to pass in a base_url. You can pass one anyway to override the
9
15
  # environment variable or class parameter. Similarly, headers can be set by either settings the headers on the class, or passing headers in.
10
16
  #
11
17
  # @example Setting the base_url on the class
12
- # Parliament::Request.base_url = 'http://example.com'
18
+ # Parliament::Request::BaseRequest.base_url = 'http://example.com'
13
19
  #
14
- # Parliament::Request.new.base_url #=> 'http://example.com'
20
+ # Parliament::Request::BaseRequest.new.base_url #=> 'http://example.com'
15
21
  #
16
22
  # @example Setting the base_url via environment variable
17
23
  # ENV['PARLIAMENT_BASE_URL'] #=> 'http://test.com'
18
24
  #
19
- # Parliament::Request.new.base_url #=> 'http://test.com'
25
+ # Parliament::Request::BaseRequest.new.base_url #=> 'http://test.com'
20
26
  #
21
27
  # @example Setting the base_url via a parameter
22
- # Parliament::Request.base_url #=> nil
28
+ # Parliament::Request::BaseRequest.base_url #=> nil
23
29
  # ENV['PARLIAMENT_BASE_URL'] #=> nil
24
30
  #
25
- # Parliament::Request.new(base_url: 'http://example.com').base_url #=> 'http://example.com'
31
+ # Parliament::Request::BaseRequest.new(base_url: 'http://example.com').base_url #=> 'http://example.com'
26
32
  #
27
33
  # @example Overriding the base_url via a parameter
28
34
  # ENV['PARLIAMENT_BASE_URL'] #=> 'http://test.com'
29
35
  #
30
- # Parliament::Request.new(base_url: 'http://example.com').base_url #=> 'http://example.com'
36
+ # Parliament::Request::BaseRequest.new(base_url: 'http://example.com').base_url #=> 'http://example.com'
31
37
  #
32
38
  # @example Setting the headers on the class
33
- # Parliament::Request.headers = { 'Accept' => 'Test' }
39
+ # Parliament::Request::BaseRequest.headers = { 'Accept' => 'Test' }
34
40
  #
35
- # Parliament::Request.new.headers #=> '{ 'Accept' => 'Test' }
41
+ # Parliament::Request::BaseRequest.new.headers #=> '{ 'Accept' => 'Test' }
36
42
  #
37
43
  # @example Setting the headers via a parameter
38
- # Parliament::Request.headers #=> nil
44
+ # Parliament::Request::BaseRequest.headers #=> nil
39
45
  #
40
- # Parliament::Request.new(headers: '{ 'Accept' => 'Test' }).headers #=> { 'Accept' => 'Test' }
46
+ # Parliament::Request::BaseRequest.new(headers: '{ 'Accept' => 'Test' }).headers #=> { 'Accept' => 'Test' }
41
47
  #
42
48
  # @example Overriding the headers via a parameter
43
- # Parliament::Request.headers = { 'Accept' => 'Test' }
49
+ # Parliament::Request::BaseRequest.headers = { 'Accept' => 'Test' }
44
50
  #
45
- # Parliament::Request.new(headers: '{ 'Accept' => 'Test2' }).headers #=> { 'Accept' => 'Test2' }
51
+ # Parliament::Request::BaseRequest.new(headers: '{ 'Accept' => 'Test2' }).headers #=> { 'Accept' => 'Test2' }
46
52
  #
47
53
  # @param [String] base_url the base url of our api. (expected: http://example.com - without the trailing slash).
48
54
  # @param [Hash] headers the headers being sent in the request.
49
- def initialize(base_url: nil, headers: nil, builder: nil)
55
+ # @param [Parliament::Builder] builder the builder to use in order to build a response.
56
+ # @params [Module] decorators the decorator module to use in order to provide possible alias methods for any objects created by the builder.
57
+ def initialize(base_url: nil, headers: nil, builder: nil, decorators: nil)
50
58
  @base_url = base_url || self.class.base_url
51
59
  @headers = headers || self.class.headers || {}
52
60
  @builder = builder || Parliament::Builder::BaseResponseBuilder
61
+ @decorators = decorators
53
62
  end
54
63
 
55
- # Using our url built via #method_missing, make a HTTP GET request and process results into a response.
64
+ # Makes an HTTP GET request and process results into a response.
56
65
  #
57
66
  # @example HTTP GET request
58
- # request = Parliament::Request.new(base_url: 'http://example.com')
67
+ # request = Parliament::Request::BaseRequest.new(base_url: 'http://example.com/people/123'
59
68
  #
60
- # # url: http://example.com/people/123456
61
- # response = request.people('123456').get #=> #<Parliament::Response ...>
69
+ # # url: http://example.com/people/123
70
+ #
71
+ # response = request.get #=> #<Parliament::Response::BaseResponse ...>
62
72
  #
63
73
  # @example HTTP GET request with URI encoded form values
64
- # request = Parliament::Request.new(base_url: 'http://example.com')
74
+ # request = Parliament::Request.new(base_url: 'http://example.com/people/current')
65
75
  #
66
76
  # # url: http://example.com/people/current?limit=10&page=4&lang=en-gb
67
- # response = request.people.current.get({ limit: 10, page: 4, lang: 'en-gb' }) #=> #<Parliament::Response ...>
77
+ #
78
+ # response = request.get({ limit: 10, page: 4, lang: 'en-gb' }) #=> #<Parliament::Response::BaseResponse ...>
68
79
  #
69
80
  # @raise [Parliament::ServerError] when the server responds with a 5xx status code.
70
81
  # @raise [Parliament::ClientError] when the server responds with a 4xx status code.
71
- # @raise [Parliament::NoContentResponseError] when the server responds with a 204 status code.
82
+ # @raise [Parliament::NoContentResponseError] when the response body is empty.
72
83
  #
73
84
  # @param [Hash] params (optional) additional URI encoded form values to be added to the URI.
74
85
  #
75
- # @return [Parliament::Response] a Parliament::Response object containing all of the nodes returned from the URL.
86
+ # @return [Parliament::Response::BaseResponse] a Parliament::Response::BaseResponse object containing all of the data returned from the URL.
76
87
  def get(params: nil)
77
88
  endpoint_uri = URI.parse(query_url)
78
89
  endpoint_uri.query = URI.encode_www_form(params.to_a) unless params.nil?
@@ -101,7 +112,7 @@ module Parliament
101
112
  end
102
113
 
103
114
  def build_response(net_response)
104
- @builder.new(net_response).build
115
+ @builder.new(response: net_response, decorators: @decorators).build
105
116
  end
106
117
 
107
118
  def query_url
@@ -1,7 +1,25 @@
1
1
  module Parliament
2
2
  module Request
3
+ # URL request object, allowing the user to build a URL to make a request to an API.
4
+ #
5
+ # @since 0.7.5
6
+ #
7
+ # @attr_reader [String] base_url the endpoint for our API which we will build our requests on. (expected: http://example.com - without the trailing slash).
8
+ # @attr_reader [Hash] headers the headers being sent in the request.
3
9
  class UrlRequest < Parliament::Request::BaseRequest
4
- def initialize(base_url: nil, headers: nil, builder: nil)
10
+ # Creates a new instance of Parliament::Request::UrlRequest.
11
+ #
12
+ # @see Parliament::Request::BaseRequest#initialize.
13
+ #
14
+ # @param [String] base_url the base url of our api. (expected: http://example.com - without the trailing slash).
15
+ # @param [Hash] headers the headers being sent in the request.
16
+ # @param [Parliament::Builder] builder the builder to use in order to build a response.
17
+ # @param [Module] decorators the decorator module to use in order to provide possible alias methods for any objects created by the builder.
18
+ # @example Passing headers
19
+ #
20
+ # request = Parliament::Request::UrlRequest.new(base_url: 'http://example.com', headers: { 'Access-Token' => '12345678' })
21
+ # This will create a request with the Access-Token set to 12345678.
22
+ def initialize(base_url: nil, headers: nil, builder: nil, decorators: nil)
5
23
  @endpoint_parts = []
6
24
  base_url ||= ENV['PARLIAMENT_BASE_URL']
7
25
 
@@ -11,19 +29,19 @@ module Parliament
11
29
  # Overrides ruby's method_missing to allow creation of URLs through method calls.
12
30
  #
13
31
  # @example Adding a simple URL part
14
- # request = Parliament::Request.new(base_url: 'http://example.com')
32
+ # request = Parliament::Request::UrlRequest.new(base_url: 'http://example.com')
15
33
  #
16
34
  # # url: http://example.com/people
17
35
  # request.people
18
36
  #
19
37
  # @example Adding a simple URL part with parameters
20
- # request = Parliament::Request.new(base_url: 'http://example.com')
38
+ # request = Parliament::Request::UrlRequest.new(base_url: 'http://example.com')
21
39
  #
22
40
  # # url: http://example.com/people/123456
23
41
  # request.people('123456')
24
42
  #
25
43
  # @example Chaining URL parts and using hyphens
26
- # request = Parliament::Request.new(base_url: 'http://example.com')
44
+ # request = Parliament::Request::UrlRequest.new(base_url: 'http://example.com')
27
45
  #
28
46
  # # url: http://example.com/people/123456/foo/bar/hello-world/7890
29
47
  # request.people('123456').foo.bar('hello-world', '7890')
@@ -32,7 +50,7 @@ module Parliament
32
50
  # @param [Array<Object>] params parameters passed to the specified method (url part).
33
51
  # @param [Block] block additional block (kept for compatibility with method_missing API).
34
52
  #
35
- # @return [Parliament::Request] self.
53
+ # @return [Parliament::Request::UrlRequest] self (this is to allow method chaining).
36
54
  def method_missing(method, *params, &block)
37
55
  @endpoint_parts << method.to_s
38
56
  @endpoint_parts << params
@@ -1,131 +1,7 @@
1
- require 'forwardable'
2
-
3
1
  module Parliament
4
- # API response object that wraps an Array of Grom::Node objects with common helper methods.
5
- #
6
- # Delegates a number of common methods to the array of Grom::Nodes including, but not limited to, :size, :each, :map, :count etc.
7
- #
8
- # @since 0.1.0
9
- #
10
- # @attr_reader [Array<Grom::Node>] nodes Graph nodes.
11
- class Response
12
- include Enumerable
13
- extend Forwardable
14
- attr_reader :nodes
15
- def_delegators :@nodes, :size, :each, :select, :map, :select!, :map!, :count, :length, :[], :empty?
16
-
17
- # @param [Array<Grom::Node>] nodes An array of nodes the response should wrap
18
- def initialize(nodes)
19
- @nodes = nodes
20
- end
21
-
22
- # Given our array of Grom::Nodes, filter them into arrays of 'types' of nodes.
23
- #
24
- # Note: this method assumes all of your nodes include a #type attribute or are blank nodes.
25
- #
26
- # @since 0.2.0
27
- #
28
- # @example Filtering for a single type
29
- # node_1 = Grom::Node.new
30
- # node_1.instance_variable_set(:type, 'type_1')
31
- # node_2 = Grom::Node.new
32
- # node_2.instance_variable_set(:type, 'type_3')
33
- # node_3 = Grom::Node.new
34
- # node_3.instance_variable_set(:type, 'type_1')
35
- # node_4 = Grom::Node.new
36
- # node_4.instance_variable_set(:type, 'type_2')
37
- # nodes = [node_1, node_2, node_3, node_4]
38
- #
39
- # response = Parliament::Response.new(nodes)
40
- # response.filter('type_2') #=> [#<Grom::Node @type='type_2'>]
41
- #
42
- # @example Filtering for multiple types
43
- # node_1 = Grom::Node.new
44
- # node_1.instance_variable_set(:type, 'type_1')
45
- # node_2 = Grom::Node.new
46
- # node_2.instance_variable_set(:type, 'type_3')
47
- # node_3 = Grom::Node.new
48
- # node_3.instance_variable_set(:type, 'type_1')
49
- # node_4 = Grom::Node.new
50
- # node_4.instance_variable_set(:type, 'type_2')
51
- # nodes = [node_1, node_2, node_3, node_4]
52
- #
53
- # response = Parliament::Response.new(nodes)
54
- # response.filter('type_2', 'type_1') #=> [[#<Grom::Node @type='type_2'>], [#<Grom::Node @type='type_1'>, #<Grom::Node @type='type_1'>]]
55
- #
56
- # # Also consider
57
- # type_2, type_1 = response.filter('type_2', 'type_1')
58
- # type_2 #=> [#<Grom::Node @type='type_2'>]
59
- # type_1 #=> [#<Grom::Node @type='type_1'>, #<Grom::Node @type='type_1'>]
60
- #
61
- # @example Filtering blank nodes
62
- # node_1 = Grom::Node.new
63
- # node_1.instance_variable_set(:type, 'type_1')
64
- # node_2 = Grom::Node.new
65
- # node_3 = Grom::Node.new
66
- # node_3.instance_variable_set(:type, 'type_1')
67
- # nodes = [node_1, node_2, node_3]
68
- #
69
- # response = Parliament::Response.new(nodes)
70
- # response.filter(Grom::Node::BLANK) #=> [#<Grom::Node>]
71
- #
72
- # @param [Array<String>] types An array of type strings that you are looking for.
73
- # @return [Array<Grom::Node> || Array<*Array<Grom::Node>>] If you pass one type, this returns an Array of Grom::Node objects. If you pass multiple, it returns an array, of arrays of Grom::Node objects.
74
- def filter(*types)
75
- filtered_objects = Array.new(types.size) { [] }
76
-
77
- unless types.empty?
78
- @nodes.each do |node|
79
- type_index = node.blank? ? types.index(Grom::Node::BLANK) : types.index(node.type)
80
-
81
- filtered_objects[type_index] << node unless type_index.nil?
82
- end
83
- end
84
-
85
- result = build_responses(filtered_objects)
86
-
87
- types.size == 1 ? result.first : result
88
- end
89
-
90
- # Sort the Parliament::Response nodes in ascending order by a set of attributes on each node.
91
- #
92
- # @see Parliament::Utils.sort_by
93
- #
94
- # @since 0.5.0
95
- #
96
- # @param [Array<Symbol>] parameters Attributes to sort on - left to right.
97
- # @return [Array<Grom::Node>] A sorted array of nodes.
98
- def sort_by(*parameters)
99
- Parliament::Utils.sort_by({
100
- list: @nodes,
101
- parameters: parameters
102
- })
103
- end
104
-
105
- # Sort the Parliament::Response nodes in descending order by a set of attributes on each node.
106
- #
107
- # @see Parliament::Utils.reverse_sort_by
108
- #
109
- # @since 0.5.0
110
- #
111
- # @param [Array<Symbol>] parameters Attributes to sort on - left to right.
112
- # @return [Array<Grom::Node>] A sorted array of nodes.
113
- def reverse_sort_by(*parameters)
114
- Parliament::Utils.reverse_sort_by({
115
- list: @nodes,
116
- parameters: parameters
117
- })
118
- end
119
-
120
- private
121
-
122
- def build_responses(filtered_objects)
123
- result = []
124
-
125
- filtered_objects.each do |objects|
126
- result << Parliament::Response.new(objects)
127
- end
128
- result
129
- end
2
+ # Namespace for classes and modules that handle http responses.
3
+ # @since 0.7.5
4
+ module Response
5
+ require 'parliament/response/base_response'
130
6
  end
131
7
  end
@@ -0,0 +1,18 @@
1
+ module Parliament
2
+ module Response
3
+ # An API response built from API data.
4
+ #
5
+ # @since 0.7.5.
6
+ # @attr_reader [HTTPResponse] response the HTTPResponse from the API.
7
+ class BaseResponse
8
+ attr_reader :response
9
+
10
+ # Creates a Parliament::BaseResponse object.
11
+ #
12
+ # @param [HTTPResponse] response an HTTPResponse from the API.
13
+ def initialize(response)
14
+ @response = response
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,3 +1,3 @@
1
1
  module Parliament
2
- VERSION = '0.7.4'.freeze
2
+ VERSION = '0.7.5.pre'.freeze
3
3
  end
@@ -20,8 +20,6 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.add_dependency 'grom', '~> 0.3.6'
24
-
25
23
  spec.add_development_dependency 'bundler', '~> 1.13'
26
24
  spec.add_development_dependency 'rake', '~> 10.0'
27
25
  spec.add_development_dependency 'rspec', '~> 3.0'
@@ -29,4 +27,5 @@ Gem::Specification.new do |spec|
29
27
  spec.add_development_dependency 'simplecov', '~> 0.12'
30
28
  spec.add_development_dependency 'vcr', '~> 3.0'
31
29
  spec.add_development_dependency 'webmock', '~> 2.3'
30
+ spec.add_development_dependency 'parliament-grom-decorators'
32
31
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parliament-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.4
4
+ version: 0.7.5.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Rayner
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-10 00:00:00.000000000 Z
11
+ date: 2017-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: grom
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 0.3.6
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: 0.3.6
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: bundler
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +108,20 @@ dependencies:
122
108
  - - "~>"
123
109
  - !ruby/object:Gem::Version
124
110
  version: '2.3'
111
+ - !ruby/object:Gem::Dependency
112
+ name: parliament-grom-decorators
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
125
  description: Internal parliamentary data API wrapper for ruby
126
126
  email:
127
127
  - mattrayner1@gmail.com
@@ -146,31 +146,15 @@ files:
146
146
  - lib/parliament.rb
147
147
  - lib/parliament/builder.rb
148
148
  - lib/parliament/builder/base_response_builder.rb
149
- - lib/parliament/builder/ntriple_response_builder.rb
150
149
  - lib/parliament/client_error.rb
151
- - lib/parliament/decorator.rb
152
- - lib/parliament/decorator/constituency_area.rb
153
- - lib/parliament/decorator/constituency_group.rb
154
- - lib/parliament/decorator/contact_point.rb
155
- - lib/parliament/decorator/gender.rb
156
- - lib/parliament/decorator/gender_identity.rb
157
- - lib/parliament/decorator/house.rb
158
- - lib/parliament/decorator/house_incumbency.rb
159
- - lib/parliament/decorator/house_seat.rb
160
- - lib/parliament/decorator/incumbency.rb
161
- - lib/parliament/decorator/party.rb
162
- - lib/parliament/decorator/party_membership.rb
163
- - lib/parliament/decorator/person.rb
164
- - lib/parliament/decorator/postal_address.rb
165
- - lib/parliament/decorator/seat_incumbency.rb
166
150
  - lib/parliament/network_error.rb
167
151
  - lib/parliament/no_content_response_error.rb
168
152
  - lib/parliament/request.rb
169
153
  - lib/parliament/request/base_request.rb
170
154
  - lib/parliament/request/url_request.rb
171
155
  - lib/parliament/response.rb
156
+ - lib/parliament/response/base_response.rb
172
157
  - lib/parliament/server_error.rb
173
- - lib/parliament/utils.rb
174
158
  - lib/parliament/version.rb
175
159
  - parliament-ruby.gemspec
176
160
  homepage: http://github.com/ukparliament/parliament_ruby
@@ -188,12 +172,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
188
172
  version: '0'
189
173
  required_rubygems_version: !ruby/object:Gem::Requirement
190
174
  requirements:
191
- - - ">="
175
+ - - ">"
192
176
  - !ruby/object:Gem::Version
193
- version: '0'
177
+ version: 1.3.1
194
178
  requirements: []
195
179
  rubyforge_project:
196
- rubygems_version: 2.6.10
180
+ rubygems_version: 2.6.6
197
181
  signing_key:
198
182
  specification_version: 4
199
183
  summary: Internal parliamentary API wrapper