eac_rest 0.2.0 → 0.3.3

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
  SHA256:
3
- metadata.gz: 52eedfe432cca2d5b561def4ff250065c6f602038820919c3e4588d3f402e74d
4
- data.tar.gz: 8b286a003e28931db39b589f01d56d4e2b4d08be7bac7c9cdb45ee7da3f2883c
3
+ metadata.gz: 275b7cb77a0cf2c309381dcd4759579584b53663a05fd1844e8bf7fb40430066
4
+ data.tar.gz: 50fde4de859dcdcb38af6b8d3c808e6b2dc0ab328079f6faae8c39cc296b2021
5
5
  SHA512:
6
- metadata.gz: 66f581076f08aa0d44eff44dc7c274c7fcac6079b1b0461afa2a9706a052c9d9445088ac9074f2f58db4f5d5db754d6f0d078693f1b6aa54ce14b3d0a8daf2e5
7
- data.tar.gz: 2d87555094fcdfd930573fce8711fc3e38380ae63235a30743f283cabddcb0ec85f0938e468c889f9d5b431c1dec7330e89533412188b3243d6ecea8a574d25e
6
+ metadata.gz: b4402b89378a23d574ee3137d379c94af5e541ee70d7a9cec55235722231eb51c1380f9a5a1d2ec22745b3133b5ee1b32136bc479332e588bc10210fab4ff4c8
7
+ data.tar.gz: 8679dc9886b157040d7f05da6849b304c123c1fc0e97ec33be35f39e0fefd03eda5629a73691003c0773b9b7a067da396c4cd38632918ea0955fb31b261f0b6f
data/lib/eac_rest/api.rb CHANGED
@@ -13,8 +13,8 @@ module EacRest
13
13
  def request(service_url_suffix, headers = {}, &body_data_proc)
14
14
  r = ::EacRest::Request.new(build_service_url(service_url_suffix),
15
15
  body_data_proc)
16
- headers.each { |name, value| r.header(name, value) }
17
- r.autenticate(username, password) if username.present?
16
+ headers.each { |name, value| r = r.header(name, value) }
17
+ r = r.autenticate(username, password) if username.present?
18
18
  r
19
19
  end
20
20
 
@@ -30,7 +30,8 @@ module EacRest
30
30
  s = ::Addressable::URI.parse(suffix)
31
31
  r = ::Addressable::URI.parse(root_url)
32
32
  r.path += s.path
33
- r.query_values = r.query_values.if_present({}).merge(s.query_values.if_present({}))
33
+ r.query_values = r.query_values(::Array).if_present([]) +
34
+ s.query_values(::Array).if_present([])
34
35
  r.to_s
35
36
  end
36
37
  end
@@ -1,19 +1,31 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'curb'
3
4
  require 'eac_rest/response'
4
5
  require 'eac_ruby_utils/core_ext'
5
6
  require 'ostruct'
6
7
 
7
8
  module EacRest
8
9
  class Request
10
+ COMMON_MODIFIERS = %w[auth body_data verb].freeze
11
+ HASH_MODIFIERS = %w[header].freeze
12
+ MODIFIERS = COMMON_MODIFIERS + HASH_MODIFIERS.map(&:pluralize)
13
+
14
+ enable_immutable
15
+ immutable_accessor(*COMMON_MODIFIERS, type: :common)
16
+ immutable_accessor(*HASH_MODIFIERS, type: :hash)
17
+
18
+ enable_listable
19
+ lists.add_symbol :verb, :get, :delete, :options, :post, :put
20
+
9
21
  common_constructor :url, :body_data_proc, default: [nil]
10
22
 
11
23
  def autenticate(username, password)
12
- self.auth = ::OpenStruct.new(username: username, password: password)
24
+ auth(::OpenStruct.new(username: username, password: password))
13
25
  end
14
26
 
15
- def header(name, value)
16
- headers[name.to_s] = value
27
+ def immutable_constructor_args
28
+ [url, body_data_proc]
17
29
  end
18
30
 
19
31
  def response
@@ -22,21 +34,41 @@ module EacRest
22
34
 
23
35
  private
24
36
 
25
- attr_accessor :auth
26
-
27
37
  def build_curl
28
38
  r = ::Curl::Easy.new(url)
39
+ MODIFIERS.each { |suffix| send("build_curl_#{suffix}", r) }
40
+ r
41
+ end
42
+
43
+ def build_curl_auth(curl)
29
44
  auth.if_present do |a|
30
- r.http_auth_types = :basic
31
- r.username = a.username
32
- r.password = a.password
45
+ curl.http_auth_types = :basic
46
+ curl.username = a.username
47
+ curl.password = a.password
33
48
  end
34
- r.headers.merge!(headers)
35
- r
36
49
  end
37
50
 
38
- def headers
39
- @headers ||= {}
51
+ def build_curl_body_data(curl)
52
+ www_form_body_data_encoded.if_present { |v| curl.post_body = v }
53
+ end
54
+
55
+ def build_curl_headers(curl)
56
+ curl.headers.merge!(headers)
57
+ end
58
+
59
+ def build_curl_verb(curl)
60
+ curl.set(
61
+ :customrequest,
62
+ verb.if_present(VERB_GET) { |v| self.class.lists.verb.value_validate!(v) }.to_s.upcase
63
+ )
64
+ end
65
+
66
+ def www_form_body_data_encoded
67
+ body_data.if_present do |v|
68
+ v = v.map { |k, vv| [k, vv] } if v.is_a?(::Hash)
69
+ v = URI.encode_www_form(v) if v.is_a?(::Array)
70
+ v.to_s
71
+ end
40
72
  end
41
73
  end
42
74
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRest
4
- VERSION = '0.2.0'
4
+ VERSION = '0.3.3'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_rest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo H. Bogoni
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-28 00:00:00.000000000 Z
11
+ date: 2021-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eac_ruby_utils
@@ -30,20 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.1'
34
- - - ">="
35
- - !ruby/object:Gem::Version
36
- version: 0.1.2
33
+ version: '0.2'
37
34
  type: :development
38
35
  prerelease: false
39
36
  version_requirements: !ruby/object:Gem::Requirement
40
37
  requirements:
41
38
  - - "~>"
42
39
  - !ruby/object:Gem::Version
43
- version: '0.1'
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: 0.1.2
40
+ version: '0.2'
47
41
  description:
48
42
  email:
49
43
  executables: []
@@ -74,7 +68,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
68
  - !ruby/object:Gem::Version
75
69
  version: '0'
76
70
  requirements: []
77
- rubygems_version: 3.0.9
71
+ rubygems_version: 3.1.6
78
72
  signing_key:
79
73
  specification_version: 4
80
74
  summary: A REST helper for Ruby.