redmine_remotes 0.13.0 → 0.14.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 +4 -4
- data/app/models/redmine_remotes/tableless/remote_issue_fetch/base/_provider_issue.rb +1 -1
- data/app/models/remote_tracker/remote.rb +3 -1
- data/config/initializers/001_patches.rb +1 -0
- data/lib/redmine_remotes/esosti/instance.rb +4 -30
- data/lib/redmine_remotes/jira/entities/issue.rb +2 -2
- data/lib/redmine_remotes/jira/instance.rb +2 -19
- data/lib/redmine_remotes/patches/avmtrf1_rest_provider_instance.rb +22 -0
- data/lib/redmine_remotes/version.rb +1 -1
- metadata +4 -6
- data/lib/redmine_remotes/rest_provider/http_response.rb +0 -31
- data/lib/redmine_remotes/rest_provider/instance.rb +0 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b69ffeb75da1b7cdee13641076954cbbab68343584a359b213a607918eb619e
|
4
|
+
data.tar.gz: 890479aa66e8d40a76809386d34f56d823c644d0a21aade8e9aaa5308fe05046
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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 ::
|
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(
|
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,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 < ::
|
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
|
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
|
-
|
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/
|
3
|
+
require 'avmtrf1/jira/entities/issue'
|
4
4
|
|
5
5
|
module RedmineRemotes
|
6
6
|
module Jira
|
7
7
|
module Entities
|
8
|
-
class Issue < ::Avmtrf1::
|
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 < ::
|
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)
|
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.
|
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-
|
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
|
-
|
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
|