parliament-ruby 0.7.4 → 0.7.5.pre

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: 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