redmine_remotes 0.13.0 → 0.14.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: 58582fa98456cc3680589a4484b45bda211d8db71b78a47418b2bd3208ca6997
4
- data.tar.gz: 17d859506c16a9a5529bca6dcec6d5b200e1a0aed24b712b048ae4c254be1671
3
+ metadata.gz: 8b69ffeb75da1b7cdee13641076954cbbab68343584a359b213a607918eb619e
4
+ data.tar.gz: 890479aa66e8d40a76809386d34f56d823c644d0a21aade8e9aaa5308fe05046
5
5
  SHA512:
6
- metadata.gz: 654d4c3c6cf0db58ba7bd17c672dbd2bb88b936496d541f08282f5c09dd859f3b79ef000e8b9e71c834a82cbc73149596597c0d061021711fba933a7d2420925
7
- data.tar.gz: 8d30c37a42a67e84b1db2d1ba74d1c75008014315d9871935e94059d7ec0ce6018a0b374df03a34941ef8bdb858913b38df002670a5307c1cb2fee811165a253
6
+ metadata.gz: ea705a044abece2d36ea6332ec1b11d28020195c7779e6ca4dc98b5f0d127f97763689bba612e28f281a2fd65522cfcf4adc5b8784e12d896604f0a8e02bef21
7
+ data.tar.gz: ce32ae83e8430cef00ed296e67a0fa905adf33583ffee1869e09a4582ac265c8a7660cad52a0f00868966338bb61ef636cf26c7d31abad2107ddb2e9930a3497
@@ -10,7 +10,7 @@ module RedmineRemotes
10
10
  return nil if [remote_tracker, issue_remote_code].any?(&:blank?)
11
11
 
12
12
  remote_tracker.find_remote_issue(issue_remote_code)
13
- rescue ::RedmineRemotes::RestProvider::HttpResponse => e
13
+ rescue ::Avmtrf1::RestProvider::Response => e
14
14
  errors.add(default_error_column,
15
15
  "Requisição a \"#{e.url}\" retornou com status #{e.status}")
16
16
  ::Rails.logger.warn(e.body)
@@ -30,7 +30,9 @@ class RemoteTracker < ActiveRecord::Base
30
30
  end
31
31
 
32
32
  def remote_instance
33
- remote_instance_class.new(self, root_url, username, password)
33
+ r = remote_instance_class.new(root_url, username, password)
34
+ r.send('remote_tracker=', self)
35
+ r
34
36
  end
35
37
 
36
38
  def remote_instance_class
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'redmine_remotes/patches/avmtrf1_rest_provider_instance'
3
4
  require 'redmine_remotes/patches/issue'
4
5
  require 'redmine_remotes/patches/issue_status'
5
6
  require 'redmine_remotes/patches/project'
@@ -1,10 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'avmtrf1/esosti/instance'
3
4
  require 'avmtrf1/esosti/raw_data_sanitizer'
4
5
 
5
6
  module RedmineRemotes
6
7
  module Esosti
7
- class Instance < ::RedmineRemotes::RestProvider::Instance
8
+ class Instance < ::Avmtrf1::Esosti::Instance
8
9
  ISSUE_ID_PATTERN = /\A(?:ss|in)[0-9]+\z/i.freeze
9
10
 
10
11
  class << self
@@ -16,39 +17,12 @@ module RedmineRemotes
16
17
  end
17
18
  end
18
19
 
19
- def build_service_url(service_url_suffix)
20
- "#{root_url}/maxrest/rest#{service_url_suffix}"
21
- end
22
-
23
- def issue_get_url_suffix(provider_issue_id)
24
- "/os/MS_RMTICKET/?ticketid=#{provider_issue_id}"
25
- end
26
-
27
20
  def issue_human_view_url(ticket_uid)
28
- "#{root_url}/itsm/ui/maximo.jsp?event=loadapp&value=ms_viewsr&uniqueid=#{ticket_uid}"
21
+ "#{root_url}/itsm/ui/?event=loadapp&value=ms_sr&uniqueid=#{ticket_uid}"
29
22
  end
30
23
 
31
24
  def fetch_issues_changed(start_time, _end_time)
32
- changed_parse_result(request(changed_url_suffix(start_time)))
33
- end
34
-
35
- private
36
-
37
- def changed_parse_result(raw_data)
38
- ::Avmtrf1::Esosti::RawDataSanitizer.sanitize(
39
- raw_data.fetch('TICKETMboSet').fetch('TICKET')
40
- ).map do |ticket|
41
- ::RemoteIssue.remote_code_sanitize(ticket.fetch('Attributes').fetch('TICKETID'))
42
- end
43
- end
44
-
45
- def changed_url_suffix(since)
46
- '/mbo/ticket?_includecols=ticketid&changedate=~gt~' +
47
- ::CGI.escape(formatted_time(since))
48
- end
49
-
50
- def formatted_time(time)
51
- time.strftime('%FT%T%:z')
25
+ changed(start_time)
52
26
  end
53
27
  end
54
28
  end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'avmtrf1/rest_provider/entity'
3
+ require 'avmtrf1/jira/entities/issue'
4
4
 
5
5
  module RedmineRemotes
6
6
  module Jira
7
7
  module Entities
8
- class Issue < ::Avmtrf1::RestProvider::Entity
8
+ class Issue < ::Avmtrf1::Jira::Entities::Issue
9
9
  def human_view_url
10
10
  instance.issue_human_view_url(code)
11
11
  end
@@ -1,35 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_ruby_utils/core_ext'
4
+ require 'avmtrf1/jira/instance'
4
5
 
5
6
  module RedmineRemotes
6
7
  module Jira
7
- class Instance < ::RedmineRemotes::RestProvider::Instance
8
- ISSUE_ID_PATTERN = /\A([a-z][a-z0-9]+)\-(\d+)\z/i.freeze
8
+ class Instance < ::Avmtrf1::Jira::Instance
9
9
  DEFAULT_DESCRIPTION_FIELD = 'description'
10
10
 
11
- class << self
12
- def parse_issue_id(global_issue_id)
13
- m = ISSUE_ID_PATTERN.match(global_issue_id)
14
- return nil unless m
15
-
16
- ::OpenStruct.new(provider_issue_id: m[0], project_id: m[1], project_issue_id: m[2])
17
- end
18
- end
19
-
20
- def build_service_url(service_url_suffix)
21
- "#{root_url}/rest/api/latest#{service_url_suffix}"
22
- end
23
-
24
11
  def description_field
25
12
  remote_tracker.setting_value(::RemoteTrackerSetting::NAME_FIELD_DESCRIPTION)
26
13
  .if_present(DEFAULT_DESCRIPTION_FIELD)
27
14
  end
28
15
 
29
- def issue_get_url_suffix(provider_issue_id)
30
- "/issue/#{provider_issue_id}"
31
- end
32
-
33
16
  def issue_human_view_url(issue_code)
34
17
  "#{root_url}/browse/#{issue_code.to_s.upcase}"
35
18
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avmtrf1/rest_provider/instance'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module RedmineRemotes
7
+ module Patches
8
+ module Avmtrf1RestProviderInstance
9
+ common_concern
10
+
11
+ module InstanceMethods
12
+ attr_reader :remote_tracker
13
+
14
+ private
15
+
16
+ attr_writer :remote_tracker
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ ::Avmtrf1::RestProvider::Instance.patch(::RedmineRemotes::Patches::Avmtrf1RestProviderInstance)
@@ -3,7 +3,7 @@
3
3
  module RedmineRemotes
4
4
  SLUG = 'redmine_remotes'
5
5
  NAME = 'Redmine Remotes'
6
- VERSION = '0.13.0'
6
+ VERSION = '0.14.0'
7
7
  AUTHOR = 'Eduardo Henrique Bogoni'
8
8
  SUMMARY = 'Integração do Redmine com trackers diversos.'
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redmine_remotes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo Henrique Bogoni
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-05 00:00:00.000000000 Z
11
+ date: 2020-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aranha-parsers
@@ -175,13 +175,12 @@ files:
175
175
  - lib/redmine_remotes/jira/instance.rb
176
176
  - lib/redmine_remotes/jobs/fetch_issues.rb
177
177
  - lib/redmine_remotes/jobs/fetch_trackers.rb
178
+ - lib/redmine_remotes/patches/avmtrf1_rest_provider_instance.rb
178
179
  - lib/redmine_remotes/patches/issue.rb
179
180
  - lib/redmine_remotes/patches/issue_status.rb
180
181
  - lib/redmine_remotes/patches/project.rb
181
182
  - lib/redmine_remotes/patches/tracker.rb
182
183
  - lib/redmine_remotes/patches/user.rb
183
- - lib/redmine_remotes/rest_provider/http_response.rb
184
- - lib/redmine_remotes/rest_provider/instance.rb
185
184
  - lib/redmine_remotes/sanitizer.rb
186
185
  - lib/redmine_remotes/version.rb
187
186
  - lib/tasks/redmine_remotes.rake
@@ -203,8 +202,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
203
202
  - !ruby/object:Gem::Version
204
203
  version: '0'
205
204
  requirements: []
206
- rubyforge_project:
207
- rubygems_version: 2.7.7
205
+ rubygems_version: 3.0.6
208
206
  signing_key:
209
207
  specification_version: 4
210
208
  summary: Integração do Redmine com trackers diversos.
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RedmineRemotes
4
- module RestProvider
5
- class HttpResponse < ::StandardError
6
- class << self
7
- def new_from_curl_easy(curl_easy)
8
- new(
9
- curl_easy.url,
10
- curl_easy.status.to_i,
11
- curl_easy.body_str
12
- )
13
- end
14
- end
15
-
16
- attr_reader :url, :status, :body
17
-
18
- def initialize(url, status, body)
19
- @url = url
20
- @status = status
21
- @body = body
22
- end
23
-
24
- def body_or_raise
25
- return body if status == 200
26
-
27
- raise self
28
- end
29
- end
30
- end
31
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'avmtrf1/rest_provider/instance'
4
- require 'curb'
5
- require 'json'
6
-
7
- module RedmineRemotes
8
- module RestProvider
9
- # Abstract methods
10
- # * parse_issue_id(global_issue_id)
11
- # * self.build_service_url(service_url_suffix)
12
- # * self.issue_get_url_suffix(provider_issue_id)
13
- class Instance < ::Avmtrf1::RestProvider::Instance
14
- attr_reader :remote_tracker
15
-
16
- def initialize(remote_tracker, root_url, username, password)
17
- @remote_tracker = remote_tracker
18
- super(root_url, username, password)
19
- end
20
-
21
- def request(service_url_suffix)
22
- JSON.parse(super(service_url_suffix).body_or_raise)
23
- end
24
-
25
- private
26
-
27
- # @return [RedmineRemotes::RestProvider::HttpResponse]
28
- def curl_perform(curl)
29
- return ::RedmineRemotes::RestProvider::HttpResponse.new_from_curl_easy(curl) if curl.perform
30
-
31
- raise 'Curl failed'
32
- end
33
- end
34
- end
35
- end