avmtrf1-tools 0.7.0 → 0.8.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: '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