avmtrf1-tools 0.7.0 → 0.8.0

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: '087a54a4caf473fa94935484dad0a43c184c15789ba50177e8c0613a581cf78f'
4
- data.tar.gz: 9694989db13cf4858b41dc451b27c028ab9bee39439926775f956693fb248a10
3
+ metadata.gz: 488a4826095240654ea0d4de46002cbf385a7c064ed2c860c4f2f13d9befcdd3
4
+ data.tar.gz: 68a6d46f0388d806bd6248aca8b89161726b7a3c32d964e5bf361392f3bb37a2
5
5
  SHA512:
6
- metadata.gz: 8d3911fda72f48d6bea4b636983907c843ee1bf20572fc5125981559ba2dce197cbabb76e3ea5cecdfbe10400656daf6adb334ec0cd80007637ce00017d0f177
7
- data.tar.gz: cd1b31974108d9cae30b962b4fd6d078703900e7e40c6f1c50550a36673d82e3925c9557c7162bcf3f264a4a4fdd682157d208572de300be0490be478c20c326
6
+ metadata.gz: 9a411e8c9120b8b4d88963184a6a4d05343d3905b7807ea41707c423a443bb38e06af62ffc53141cf29e310f0c49c416f28ae884b88ebffc598efb7db4bd2c85
7
+ data.tar.gz: 58b316650009ad2e76fd7d0890eb191da17bc53492222155a4a807e5906e0e06d9b838d0fb2b01633111c9521a6f1455d0ae30959b7557bb038c3e6a9300d779
@@ -1,16 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'avmtrf1/esosti/session'
3
+ require 'avmtrf1/esosti/instance'
4
4
  require 'avmtrf1/ad_user'
5
5
 
6
6
  module Avmtrf1
7
7
  class << self
8
8
  def default_esosti
9
- @default_esosti ||= ::Avmtrf1::Esosti::Session.new(
9
+ @default_esosti ||= ::Avmtrf1::Esosti::Instance.new(
10
10
  'https://esosti.trf1.jus.br',
11
- ::Avmtrf1.ad_user.username,
12
- ::Avmtrf1.ad_user.password,
13
- ::Avmtrf1.ad_user.domain.upcase
11
+ "#{::Avmtrf1.ad_user.username}@#{::Avmtrf1.ad_user.domain.downcase}.gov.br",
12
+ ::Avmtrf1.ad_user.password
14
13
  )
15
14
  end
16
15
  end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avmtrf1/rest_provider/entity'
4
+
5
+ module Avmtrf1
6
+ module Esosti
7
+ module Entities
8
+ class Issue < ::Avmtrf1::RestProvider::Entity
9
+ class << self
10
+ def raw_data_to_data(raw_data)
11
+ sanitize_data(raw_data.fetch('QueryMS_RMTICKETResponse').fetch('MS_RMTICKETSet')
12
+ .fetch('TICKET'))
13
+ end
14
+
15
+ def sanitize_data(data)
16
+ if data.is_a?(Array)
17
+ sanitize_array_data(data)
18
+ elsif data.is_a?(Hash)
19
+ sanitize_hash_data(data)
20
+ else
21
+ data
22
+ end
23
+ end
24
+
25
+ private
26
+
27
+ def sanitize_array_data(data)
28
+ data.map { |v| sanitize_data(v) }
29
+ end
30
+
31
+ def sanitize_hash_data(data)
32
+ if content_hash?(data)
33
+ sanitize_data(data.fetch('content'))
34
+ else
35
+ data.map { |k, v| [k, sanitize_data(v)] }.to_h
36
+ end
37
+ end
38
+
39
+ def content_hash?(data)
40
+ data.is_a?(Hash) && data.count == 1 && data.key?('content')
41
+ end
42
+ end
43
+
44
+ def initialize(instance, data)
45
+ super instance, self.class.raw_data_to_data(data)
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avmtrf1
4
+ module Esosti
5
+ module Entities
6
+ require 'avmtrf1/redmine/entities/issue'
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avmtrf1/esosti/entities/issue'
4
+ require 'avmtrf1/rest_provider/instance'
5
+
6
+ module Avmtrf1
7
+ module Esosti
8
+ class Instance < ::Avmtrf1::RestProvider::Instance
9
+ def build_service_url(service_url_suffix)
10
+ "#{root_url}/maxrest/rest#{service_url_suffix}"
11
+ end
12
+
13
+ def issue_get_url_suffix(provider_issue_id)
14
+ "/os/MS_RMTICKET/?ticketid=#{provider_issue_id}"
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avmtrf1
4
+ module Esosti
5
+ require 'avmtrf1/esosti/entities'
6
+ require 'avmtrf1/esosti/instance'
7
+ end
8
+ end
@@ -3,6 +3,7 @@
3
3
  require 'curb'
4
4
  require 'json'
5
5
  require 'avmtrf1/jira/entities/issue'
6
+ require 'eac_ruby_utils/console/speaker'
6
7
 
7
8
  module Avmtrf1
8
9
  module RestProvider
@@ -11,6 +12,8 @@ module Avmtrf1
11
12
  # * self.build_service_url(service_url_suffix)
12
13
  # * self.issue_get_url_suffix(provider_issue_id)
13
14
  class Instance
15
+ include ::EacRubyUtils::Console::Speaker
16
+
14
17
  attr_reader :root_url, :username, :password
15
18
 
16
19
  def initialize(root_url, username, password)
@@ -29,18 +32,39 @@ module Avmtrf1
29
32
  end
30
33
 
31
34
  def request(service_url_suffix)
32
- c = ::Curl::Easy.new(build_service_url(service_url_suffix))
35
+ url = build_service_url(service_url_suffix)
36
+ infov 'URL', url
37
+ c = ::Curl::Easy.new(url)
33
38
  c.http_auth_types = :basic
34
39
  c.username = username
35
40
  c.password = password
36
- raise 'Curl failed' unless c.perform
37
-
38
- JSON.parse(c.body_str)
41
+ c.headers['Accept'] = 'application/json'
42
+ curl_perform(c)
39
43
  end
40
44
 
41
45
  def issue_class
42
46
  "#{self.class.name.deconstantize}::Entities::Issue".constantize
43
47
  end
48
+
49
+ private
50
+
51
+ def curl_perform(curl)
52
+ raise 'Curl failed' unless curl.perform
53
+
54
+ infov 'Return status', curl.status
55
+ return JSON.parse(curl.body_str) if curl.status.to_i == 200
56
+
57
+ raise curl_raise_message(curl)
58
+ end
59
+
60
+ def curl_raise_message(curl)
61
+ raise <<~MESSAGE
62
+ "#{curl.url} returned #{curl.status.to_i}:
63
+ #{'=' * 10}
64
+ #{curl.body_str}
65
+ #{'=' * 10}"
66
+ MESSAGE
67
+ end
44
68
  end
45
69
  end
46
70
  end
@@ -3,9 +3,9 @@
3
3
  require 'eac_ruby_utils/console/docopt_runner'
4
4
  require 'eac_ruby_utils/console/speaker'
5
5
  require 'eac_ruby_utils/simple_cache'
6
+ require 'avmtrf1/default_esosti'
6
7
  require 'avmtrf1/ini'
7
8
  require 'avmtrf1/red/profile'
8
- require 'avmtrf1/esosti/session'
9
9
 
10
10
  module Avmtrf1
11
11
  module Tools
@@ -34,21 +34,11 @@ module Avmtrf1
34
34
  end
35
35
  end
36
36
 
37
- private
38
-
39
- def login
40
- infom "Logando em #{session.url} com #{session.uf}\\#{session.user}..."
41
- session.login
42
- end
43
-
44
37
  def fetch
45
- login
46
38
  infom "Recuperando informações de #{options.fetch('<solicitacao_id>')}..."
47
- pp session.solicitacao_get_data(options.fetch('<solicitacao_id>'))
48
- end
49
-
50
- def session_uncached
51
- ::Avmtrf1.default_esosti
39
+ issue = ::Avmtrf1.default_esosti.issue(options.fetch('<solicitacao_id>'))
40
+ fatal_error("Issue não encontrado: #{options.fetch('<solicitacao_id>')}") unless issue
41
+ out issue.data.to_yaml
52
42
  end
53
43
  end
54
44
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avmtrf1
4
4
  module Tools
5
- VERSION = '0.7.0'
5
+ VERSION = '0.8.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avmtrf1-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo H. Bogoni
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-08-15 00:00:00.000000000 Z
11
+ date: 2019-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aranha
@@ -176,6 +176,10 @@ files:
176
176
  - lib/avmtrf1/default_esosti.rb
177
177
  - lib/avmtrf1/default_jira.rb
178
178
  - lib/avmtrf1/default_redmine.rb
179
+ - lib/avmtrf1/esosti.rb
180
+ - lib/avmtrf1/esosti/entities.rb
181
+ - lib/avmtrf1/esosti/entities/issue.rb
182
+ - lib/avmtrf1/esosti/instance.rb
179
183
  - lib/avmtrf1/esosti/parsers/solicitacao/main.rb
180
184
  - lib/avmtrf1/esosti/session.rb
181
185
  - lib/avmtrf1/esosti/session/action_base.rb