parliament-ruby 0.10.2 → 1.0.0.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: 5774765ecf5e81915f04321515617f4dba8652f5
4
- data.tar.gz: 2c6d1f152b7f5bdc7f0fc96d11ef612be6bb4a21
3
+ metadata.gz: 291f639647bb81fcc5dd82a384cd0ecff70db477
4
+ data.tar.gz: 26f6551f09bcd80f4ff351ba55189bb77bc71580
5
5
  SHA512:
6
- metadata.gz: d74971c00ab0f377dc59820698cdb9ad632f9943ab3dbec0c3228e7a5e318a8a1dffaaf03634b8f28733390edb8a52c0c65da1f03658a5b19d5f5e83aca01f42
7
- data.tar.gz: c2c7951d0c5123c755b1640b60af25771d9dde6267bd115bdca69e2704e212fccaf82e8285fd1aae805f4d5d7c09a7179a3ade1b234508fe1770e88599d3b67c
6
+ metadata.gz: 1dd49cab50167b71972428f3d53f61f22f72b8ff8d7dd69af0607d616d9280e19fee121864697ed9e423a0981e72b90ca8eae03b85146f8c6885f2a7b7d865a1
7
+ data.tar.gz: 321ece67fd29fea8af22fcd3197a12218edb9443a3760e4525ed84a158fe3ba787a9ca38c8c5a4abd5501d01f867c2e73b12ee8b1c03e09f11ce13f82e2575a3
data/README.md CHANGED
@@ -21,7 +21,7 @@
21
21
  - [`#filter`](#filter)
22
22
  - [`#sort_by`](#sort_by)
23
23
  - [`#reverse_sort_by`](#reverse_sort_by)
24
- - [`Partliament::Utils`](#partliamentutils)
24
+ - [`Parliament::Utils`](#parliamentutils)
25
25
  - [Methods](#methods-1)
26
26
  - [`Parliament::Utils.sort_by`](#parliamentutilssort_by)
27
27
  - [`Parliament::Utils.reverse_sort_by`](#parliamentutilsreverse_sort_by)
@@ -137,7 +137,7 @@ response.each do |node|
137
137
  #
138
138
  # You would be able to access the `name` attribute like so:
139
139
  puts node.name #=> 'Matthew Rayner'
140
-
140
+
141
141
  # If your n-triple file contains a triple who's object is a URI, and that URI is defined within your file, a link will
142
142
  # be created, allowing you to 'connect' the two objects. For example, with the following triples:
143
143
  # <http://id.ukpds.org/1234> <http://id.ukpds.org/schema/name> 'Matthew Rayner' .
@@ -148,7 +148,7 @@ response.each do |node|
148
148
  puts node.graph_id #=> '12345'
149
149
  puts node.name #=> 'Matthew Rayner'
150
150
  puts node.partyMembership #=> [#<Grom::Node @startDate=...>]
151
-
151
+
152
152
  puts node.partyMembership.first.startDate #=> "1992-04-09"
153
153
  end
154
154
  ```
@@ -214,7 +214,7 @@ sorted_response.each { |node| puts "#{node.graph_id} - #{node.respond_to?(:start
214
214
  # http://id.ukpds.org/3141 - undefined
215
215
  ```
216
216
 
217
- ### `Partliament::Utils`
217
+ ### `Parliament::Utils`
218
218
  Included with [parliament-ruby][parliament-ruby] is `Parliament::Utils`. This module includes helper methods commonly used throughout parliament.uk.
219
219
 
220
220
  #### Methods
@@ -7,7 +7,7 @@ module Parliament
7
7
  # @since 0.6.0
8
8
  class NetworkError < StandardError
9
9
  def initialize(url, response)
10
- super("#{response.code} HTTP status code received from: #{url} - #{response.message}")
10
+ super("#{response.code} HTTP status code received from: #{url} - #{response.status_message}")
11
11
  end
12
12
  end
13
13
  end
@@ -1,3 +1,5 @@
1
+ require 'typhoeus'
2
+
1
3
  module Parliament
2
4
  module Request
3
5
  # Base request object, allowing the user to make a request to an API.
@@ -55,10 +57,10 @@ module Parliament
55
57
  # @param [Parliament::Builder] builder the builder to use in order to build a response.
56
58
  # @params [Module] decorators the decorator module to use in order to provide possible alias methods for any objects created by the builder.
57
59
  def initialize(base_url: nil, headers: nil, builder: nil, decorators: nil)
58
- @base_url = base_url || self.class.base_url
59
- @headers = headers || self.class.headers || {}
60
- @builder = builder || Parliament::Builder::BaseResponseBuilder
61
- @decorators = decorators
60
+ @base_url = base_url || self.class.base_url
61
+ @headers = headers || self.class.headers || {}
62
+ @builder = builder || Parliament::Builder::BaseResponseBuilder
63
+ @decorators = decorators
62
64
  @query_params = {}
63
65
  end
64
66
 
@@ -86,20 +88,22 @@ module Parliament
86
88
  #
87
89
  # @return [Parliament::Response::BaseResponse] a Parliament::Response::BaseResponse object containing all of the data returned from the URL.
88
90
  def get(params: nil)
89
- @query_params = @query_params.merge(params) unless params.nil?
91
+ Typhoeus::Config.user_agent = 'Ruby'
90
92
 
91
- endpoint_uri = URI.parse(query_url)
92
- endpoint_uri.query = URI.encode_www_form(@query_params.to_a) unless @query_params.empty?
93
+ @query_params = @query_params.merge(params) unless params.nil?
93
94
 
94
- http = Net::HTTP.new(endpoint_uri.host, endpoint_uri.port)
95
- http.use_ssl = true if endpoint_uri.scheme == 'https'
95
+ endpoint_uri = URI.parse(query_url)
96
+ endpoint_params = URI.encode_www_form(@query_params.to_a) unless @query_params.empty?
96
97
 
97
- net_response = http.start do |h|
98
- api_request = Net::HTTP::Get.new(endpoint_uri.request_uri)
99
- add_headers(api_request)
98
+ typhoeus_request = Typhoeus::Request.new(
99
+ endpoint_uri,
100
+ method: :get,
101
+ params: endpoint_params,
102
+ headers: headers,
103
+ accept_encoding: 'gzip'
104
+ )
100
105
 
101
- h.request api_request
102
- end
106
+ net_response = typhoeus_request.run
103
107
 
104
108
  handle_errors(net_response)
105
109
 
@@ -132,25 +136,24 @@ module Parliament
132
136
  #
133
137
  # @return [Parliament::Response::BaseResponse] a Parliament::Response::BaseResponse object containing all of the data returned from the URL.
134
138
  def post(params: nil, body: nil, timeout: 60)
135
- @query_params = @query_params.merge(params) unless params.nil?
139
+ Typhoeus::Config.user_agent = 'Ruby'
136
140
 
137
- endpoint_uri = URI.parse(query_url)
138
- endpoint_uri.query = URI.encode_www_form(@query_params.to_a) unless @query_params.empty?
139
-
140
- http = Net::HTTP.new(endpoint_uri.host, endpoint_uri.port)
141
- http.use_ssl = true if endpoint_uri.scheme == 'https'
142
- http.read_timeout = timeout
141
+ @query_params = @query_params.merge(params) unless params.nil?
143
142
 
144
- request = Net::HTTP::Post.new(
145
- endpoint_uri.request_uri,
146
- 'Content-Type' => 'application/json'
143
+ endpoint_uri = URI.parse(query_url)
144
+ endpoint_params = URI.encode_www_form(@query_params.to_a) unless @query_params.empty?
145
+
146
+ typhoeus_request = Typhoeus::Request.new(
147
+ endpoint_uri,
148
+ method: :post,
149
+ params: endpoint_params,
150
+ headers: headers.merge({ 'Content-Type' => 'application/json' }),
151
+ accept_encoding: 'gzip',
152
+ timeout: timeout,
153
+ body: body
147
154
  )
148
155
 
149
- add_headers(request)
150
-
151
- request.body = body unless body.nil?
152
-
153
- net_response = http.request(request)
156
+ net_response = typhoeus_request.run
154
157
 
155
158
  handle_errors(net_response)
156
159
 
@@ -174,28 +177,26 @@ module Parliament
174
177
  end
175
178
 
176
179
  def default_headers
177
- { 'Accept' => 'application/n-triples' }
180
+ { 'Accept' => ['*/*', 'application/n-triples'] }
178
181
  end
179
182
 
180
- def add_headers(request)
181
- headers = default_headers.merge(@headers)
182
- headers.each do |key, value|
183
- request.add_field(key, value)
184
- end
183
+ def headers
184
+ default_headers.merge(@headers)
185
185
  end
186
186
 
187
187
  def handle_errors(net_response)
188
- case net_response
189
- when Net::HTTPOK # 2xx Status
190
- exception_class = Parliament::NoContentResponseError if net_response['Content-Length'] == '0' || (net_response['Content-Length'].nil? && net_response.body.nil?)
191
- when Net::HTTPClientError # 4xx Status
192
- exception_class = Parliament::ClientError
193
- when Net::HTTPServerError # 5xx Status
194
- exception_class = Parliament::ServerError
195
- end
188
+ exception_class = if net_response.success? # 2xx Status
189
+ Parliament::NoContentResponseError if net_response.headers&.[]('Content-Length') == '0' ||
190
+ (net_response.headers&.[]('Content-Length').nil? && net_response.body.empty?)
191
+ elsif /\A4\w{2}/.match(net_response.code.to_s) # 4xx Status
192
+ Parliament::ClientError
193
+ elsif /\A5\w{2}/.match(net_response.code.to_s) # 5xx Status
194
+ Parliament::ServerError
195
+ end
196
196
 
197
197
  raise exception_class.new(query_url, net_response) if exception_class
198
198
  end
199
199
  end
200
200
  end
201
201
  end
202
+
@@ -13,7 +13,7 @@ module Parliament
13
13
  #
14
14
  # @param [String] base_url the base url of our api. (expected: http://example.com - without the trailing slash).
15
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.
16
+ # @param [Parliament::Builder] builder the builder to use in order to build a response.{{}}
17
17
  # @param [Module] decorators the decorator module to use in order to provide possible alias methods for any objects created by the builder.
18
18
  # @example Passing headers
19
19
  #
@@ -53,6 +53,7 @@ module Parliament
53
53
  # @return [Parliament::Request::UrlRequest] self (this is to allow method chaining).
54
54
  def method_missing(method, *params, &block)
55
55
  @endpoint_parts << method.to_s
56
+
56
57
  @endpoint_parts << params
57
58
  @endpoint_parts = @endpoint_parts.flatten!
58
59
 
@@ -72,7 +73,6 @@ module Parliament
72
73
  uri_string = [@base_url, @endpoint_parts].join('/').gsub(' ', '%20')
73
74
 
74
75
  uri = URI.parse(uri_string)
75
- uri.query = URI.encode_www_form(@query_params) unless @query_params.empty?
76
76
 
77
77
  uri.to_s
78
78
  end
@@ -1,3 +1,3 @@
1
1
  module Parliament
2
- VERSION = '0.10.2'.freeze
2
+ VERSION = '1.0.0.pre'.freeze
3
3
  end
@@ -20,6 +20,8 @@ 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 'typhoeus', '~> 1.3'
24
+
23
25
  spec.add_development_dependency 'bundler', '~> 1.13'
24
26
  spec.add_development_dependency 'rake', '~> 10.0'
25
27
  spec.add_development_dependency 'rspec', '~> 3.0'
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parliament-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.2
4
+ version: 1.0.0.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-12-08 00:00:00.000000000 Z
11
+ date: 2018-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: typhoeus
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -188,12 +202,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
188
202
  version: '0'
189
203
  required_rubygems_version: !ruby/object:Gem::Requirement
190
204
  requirements:
191
- - - ">="
205
+ - - ">"
192
206
  - !ruby/object:Gem::Version
193
- version: '0'
207
+ version: 1.3.1
194
208
  requirements: []
195
209
  rubyforge_project:
196
- rubygems_version: 2.6.8
210
+ rubygems_version: 2.6.11
197
211
  signing_key:
198
212
  specification_version: 4
199
213
  summary: Internal parliamentary API wrapper