lhc 9.4.4 → 10.0.0

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
  SHA256:
3
- metadata.gz: 35f64115a3a18dcad3d0494af2afe221aba124a22358f3be7b27dad63ccca55c
4
- data.tar.gz: 14e25b16e6053a1db7db44dde741a1c48a715b0fc64e9865fe18cbd755baa976
3
+ metadata.gz: 97fdf362698642e8dccbd9263ee7253563d3dfa2cbcde0daea331fee79c6ad58
4
+ data.tar.gz: 62dba156d28e3d12ab4d4d73ff686088ae4752f11e67c8df5e74e9df2bd0eea1
5
5
  SHA512:
6
- metadata.gz: 9fa8c49a2b87857e7f44746166f60ad0ab572520a005fbbce14e5a7909c2f661bd8ab1f3f6becc55a1d54b9d89879c3221d9062edf8c5575de38505e857e1323
7
- data.tar.gz: 46d331a87f5acfdd8bbea6b139cb6d9dacbbce0a3757d2f8be36299bba544b5a78e5f0753504e31da12a92627718e2b49b59aaf9962b67297a54308af467a011
6
+ metadata.gz: 91745336ea808eb5a51f6a476bec8a36f017ccb65a4f2fda9fdda1c904f0b6f28e00f668947963acc207ab608bfbc8b2444548f55b5236a6fcb266d55a7a7687
7
+ data.tar.gz: 2591ed19fb8e34de1e423d58ed119faa0048c33a1300b8cceb569d94e377d63ea4981e220251434429cc13d14fdeed1a8897d5b943af5c2bc1b56b92bd9546be
data/README.md CHANGED
@@ -44,6 +44,7 @@ use it like:
44
44
  * [Request URL encoding](#request-url-encoding)
45
45
  * [Request URL-Templates](#request-url-templates)
46
46
  * [Request timeout](#request-timeout)
47
+ * [Request Agent](#request-agent)
47
48
  * [Response](#response)
48
49
  * [Accessing response data](#accessing-response-data)
49
50
  * [Exceptions](#exceptions)
@@ -255,6 +256,20 @@ LHC.get('http://local.ch', timeout: 5, connecttimeout: 1)
255
256
 
256
257
  LHC provides a [timeout interceptor](#default-timeout-interceptor) that lets you apply default timeout values to all the requests that you are performig in your application.
257
258
 
259
+ ### Request Agent
260
+
261
+ LHC identifies itself towards outher services, using the `User-Agent` header.
262
+
263
+ ```
264
+ User-Agent LHC (9.4.2) [https://github.com/local-ch/lhc]
265
+ ```
266
+
267
+ If LHC is used in an Rails Application context, also the application name is added to the `User-Agent` header.
268
+
269
+ ```
270
+ User-Agent LHC (9.4.2; MyRailsApplicationName) [https://github.com/local-ch/lhc]
271
+ ```
272
+
258
273
  ## Response
259
274
 
260
275
  ```ruby
@@ -0,0 +1,17 @@
1
+ require 'active_support'
2
+
3
+ module LHC
4
+ class Request
5
+ module UserAgentConcern
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ Typhoeus::Config.user_agent = begin
10
+ version = LHC::VERSION
11
+ application = defined?(Rails) ? Rails.application.class.parent_name : nil
12
+ "LHC (#{[version, application].compact.join('; ')}) [https://github.com/local-ch/lhc]"
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
data/lib/lhc/request.rb CHANGED
@@ -1,10 +1,12 @@
1
1
  require 'uri'
2
2
  require 'active_support/core_ext/object/deep_dup'
3
+ require 'lhc/concerns/lhc/request/user_agent_concern'
3
4
 
4
5
  # The request is doing an http-request using typhoeus.
5
6
  # It provides functionalities to access and alter request data
6
7
  # and it communicates with interceptors.
7
8
  class LHC::Request
9
+ include UserAgentConcern
8
10
 
9
11
  TYPHOEUS_OPTIONS ||= [:params, :method, :body, :headers, :follow_location, :params_encoding]
10
12
 
@@ -109,8 +111,8 @@ class LHC::Request
109
111
  def generate_url_from_template!
110
112
  endpoint = LHC::Endpoint.new(options[:url])
111
113
  params =
112
- if format && options[:body].present? && options[:body].respond_to?(:as_json) && options[:body].as_json.is_a?(Hash)
113
- options[:body].as_json.merge(options[:params] || {}).deep_symbolize_keys
114
+ if format && options[:body]&.length && options[:body].is_a?(Hash)
115
+ options[:body].merge(options[:params] || {}).deep_symbolize_keys
114
116
  else
115
117
  options[:params]
116
118
  end
data/lib/lhc/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module LHC
2
- VERSION ||= '9.4.4'
2
+ VERSION ||= '10.0.0'
3
3
  end
@@ -20,33 +20,4 @@ describe LHC::Request do
20
20
  stub_request(:post, "http://datastore:8080/v2/places/123")
21
21
  LHC.json.post('http://datastore:8080/v2/places/{id}', body: { id: 123 })
22
22
  end
23
-
24
- context 'custom data structures that respond to as_json (like LHS data or record)' do
25
- before do
26
- class CustomStructure
27
-
28
- def initialize(data)
29
- @data = data
30
- end
31
-
32
- def as_json
33
- @data.as_json
34
- end
35
-
36
- def to_json
37
- as_json.to_json
38
- end
39
- end
40
- end
41
-
42
- let(:data) do
43
- CustomStructure.new(id: '12345')
44
- end
45
-
46
- it 'compiles url from body params when body object respond_to(:as_json)' do
47
- stub_request(:post, "http://datastore/places/12345")
48
- .to_return(status: 200)
49
- LHC.post('http://datastore/places/{id}', body: data)
50
- end
51
- end
52
23
  end
@@ -0,0 +1,24 @@
1
+ require 'rails_helper'
2
+
3
+ describe LHC::Request do
4
+ before do
5
+ LHC.send(:remove_const, :Request)
6
+ load('lhc/concerns/lhc/request/user_agent_concern.rb')
7
+ load('lhc/request.rb')
8
+ end
9
+
10
+ context 'default headers' do
11
+ context 'agent' do
12
+ it 'sets header agent information to be LHC' do
13
+ stub_request(:get, "http://local.ch/")
14
+ .with(
15
+ headers: {
16
+ 'User-Agent' => "LHC (#{LHC::VERSION}; Dummy) [https://github.com/local-ch/lhc]"
17
+ }
18
+ )
19
+ .to_return(status: 200)
20
+ LHC.get('http://local.ch')
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe LHC::Request do
4
+ before do
5
+ Object.send(:remove_const, :Rails)
6
+ LHC.send(:remove_const, :Request)
7
+ load('lhc/concerns/lhc/request/user_agent_concern.rb')
8
+ load('lhc/request.rb')
9
+ end
10
+
11
+ context 'default headers' do
12
+ context 'agent' do
13
+ it 'sets header agent information to be LHC' do
14
+ stub_request(:get, "http://local.ch/")
15
+ .with(
16
+ headers: {
17
+ 'User-Agent' => "LHC (#{LHC::VERSION}) [https://github.com/local-ch/lhc]"
18
+ }
19
+ )
20
+ .to_return(status: 200)
21
+ LHC.get('http://local.ch')
22
+ end
23
+ end
24
+ end
25
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lhc
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.4.4
4
+ version: 10.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - https://github.com/local-ch/lhc/contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-15 00:00:00.000000000 Z
11
+ date: 2018-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -196,6 +196,7 @@ files:
196
196
  - lib/lhc/concerns/lhc/basic_methods_concern.rb
197
197
  - lib/lhc/concerns/lhc/configuration_concern.rb
198
198
  - lib/lhc/concerns/lhc/formats_concern.rb
199
+ - lib/lhc/concerns/lhc/request/user_agent_concern.rb
199
200
  - lib/lhc/config.rb
200
201
  - lib/lhc/endpoint.rb
201
202
  - lib/lhc/error.rb
@@ -324,6 +325,8 @@ files:
324
325
  - spec/request/params_encoding_spec.rb
325
326
  - spec/request/request_without_rails_spec.rb
326
327
  - spec/request/url_patterns_spec.rb
328
+ - spec/request/user_agent_spec.rb
329
+ - spec/request/user_agent_without_rails_spec.rb
327
330
  - spec/response/body_spec.rb
328
331
  - spec/response/code_spec.rb
329
332
  - spec/response/data_accessor_spec.rb
@@ -465,6 +468,8 @@ test_files:
465
468
  - spec/request/params_encoding_spec.rb
466
469
  - spec/request/request_without_rails_spec.rb
467
470
  - spec/request/url_patterns_spec.rb
471
+ - spec/request/user_agent_spec.rb
472
+ - spec/request/user_agent_without_rails_spec.rb
468
473
  - spec/response/body_spec.rb
469
474
  - spec/response/code_spec.rb
470
475
  - spec/response/data_accessor_spec.rb