onlyoffice_bugzilla_helper 0.1.1 → 0.5.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/lib/onlyoffice_bugzilla_helper.rb +31 -30
- data/lib/onlyoffice_bugzilla_helper/bug_data.rb +31 -0
- data/lib/onlyoffice_bugzilla_helper/comments.rb +26 -0
- data/lib/onlyoffice_bugzilla_helper/name.rb +6 -0
- data/lib/onlyoffice_bugzilla_helper/networking.rb +13 -0
- data/lib/onlyoffice_bugzilla_helper/update_bug.rb +19 -0
- data/lib/onlyoffice_bugzilla_helper/version.rb +4 -1
- metadata +122 -28
- data/.codeclimate.yml +0 -27
- data/.gitignore +0 -13
- data/.overcommit.yml +0 -36
- data/.rspec +0 -3
- data/.rubocop.yml +0 -1
- data/.rubocop_todo.yml +0 -13
- data/.travis.yml +0 -14
- data/Changelog.md +0 -9
- data/Gemfile +0 -16
- data/LICENSE.txt +0 -661
- data/README.md +0 -39
- data/Rakefile +0 -6
- data/onlyoffice_bugzilla_helper.gemspec +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ff70cf1f92d58b5ee3fde49f516e53be60ad0f1589cae8624c5c8dc80efeb7c
|
4
|
+
data.tar.gz: ae5a6db51a4e414a0c23e997084763c47052b2494ad4ba6fb8848a6494133bd4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz: '
|
6
|
+
metadata.gz: a959f75ef11abab71e6f82bc15e9307ceb46c7bbdc6befd18ef12b2869d4000adcb100577bf9b36c514fb683d6e06533d2cb5addad015955063cef16fa56a8c5
|
7
|
+
data.tar.gz: '018bd6c8e66fc1b4930f001a32d024adad5dc4e16c38bef9197bd27098caba20b2707dbcbc7d549f82f466338b099a58ce124e9dba9090bcbdc5784b8ea499b0'
|
@@ -1,77 +1,78 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'cgi'
|
2
4
|
require 'json'
|
3
5
|
require 'net/http'
|
4
6
|
require 'uri'
|
7
|
+
require 'onlyoffice_bugzilla_helper/bug_data'
|
8
|
+
require 'onlyoffice_bugzilla_helper/comments'
|
9
|
+
require 'onlyoffice_bugzilla_helper/networking'
|
10
|
+
require 'onlyoffice_bugzilla_helper/update_bug'
|
5
11
|
require 'onlyoffice_bugzilla_helper/version'
|
6
12
|
|
7
13
|
# Helper for bugzilla, used in QA
|
8
14
|
module OnlyofficeBugzillaHelper
|
9
15
|
# Class to check bugzilla via http
|
10
16
|
class BugzillaHelper
|
17
|
+
include BugData
|
18
|
+
include Comments
|
19
|
+
include Networking
|
20
|
+
include UpdateBug
|
11
21
|
attr_reader :url
|
12
22
|
|
13
|
-
def initialize(bugzilla_url: 'bugzilla.onlyoffice.com',
|
23
|
+
def initialize(bugzilla_url: 'https://bugzilla.onlyoffice.com',
|
14
24
|
api_key: BugzillaHelper.read_token)
|
15
|
-
@url = bugzilla_url
|
25
|
+
@url = URI.parse(bugzilla_url)
|
16
26
|
@key = api_key
|
17
27
|
@show_bug_path = '/show_bug.cgi'
|
18
28
|
@show_bug_param = 'id'
|
19
29
|
end
|
20
30
|
|
21
|
-
# Get status of bug
|
22
|
-
# @param bug_id [String, Integer] id of bug
|
23
|
-
# @return [String] status of bug
|
24
|
-
def bug_status(bug_id)
|
25
|
-
res = get_bug_result(bug_id, 80)
|
26
|
-
res = get_bug_result(bug_id, 443) if response_redirect?(res)
|
27
|
-
parsed_json = JSON.parse(res.body)
|
28
|
-
parsed_json['bugs'].first['status']
|
29
|
-
end
|
30
|
-
|
31
31
|
# Get bug id from url
|
32
32
|
# @param string [String] string for error
|
33
33
|
# @return [Integer, Nil] result of bug id from url
|
34
34
|
def bug_id_from_string(string)
|
35
|
-
return nil unless string
|
35
|
+
return nil unless string&.match?(URI::DEFAULT_PARSER.make_regexp)
|
36
|
+
|
36
37
|
uri = URI.parse(string)
|
37
|
-
return nil unless uri.host == url
|
38
|
+
return nil unless uri.host == url.host
|
38
39
|
return nil unless uri.path == @show_bug_path
|
40
|
+
|
39
41
|
id = CGI.parse(uri.query)[@show_bug_param].first.to_i
|
40
42
|
return nil if id.zero?
|
43
|
+
|
41
44
|
id
|
42
45
|
end
|
43
46
|
|
44
47
|
# Read access token from file system
|
48
|
+
# @param force_file_read [True, False] force read api key from file
|
49
|
+
# @param token_path [String] path to file with API Token
|
45
50
|
# @return [String] token
|
46
|
-
def self.read_token
|
47
|
-
|
48
|
-
|
51
|
+
def self.read_token(force_file_read: false,
|
52
|
+
token_path: "#{Dir.home}/.bugzilla/api_key")
|
53
|
+
return ENV['BUGZILLA_API_KEY'] if ENV['BUGZILLA_API_KEY'] && !force_file_read
|
54
|
+
|
55
|
+
File.read(token_path).delete("\n")
|
49
56
|
rescue Errno::ENOENT
|
50
|
-
raise Errno::ENOENT,
|
51
|
-
|
57
|
+
raise Errno::ENOENT,
|
58
|
+
"No access token found in #{Dir.home}/.bugzilla/api_key" \
|
59
|
+
"Please create files #{Dir.home}/.bugzilla/api_key"
|
52
60
|
end
|
53
61
|
|
54
62
|
private
|
55
63
|
|
56
64
|
# @param id [Integer] id of bug
|
57
65
|
# @return [String] url of bug on server with api key
|
58
|
-
def bug_url(id)
|
59
|
-
"/rest/bug/#{id}?api_key=#{@key}"
|
66
|
+
def bug_url(id, suffix = '')
|
67
|
+
"/rest/bug/#{id}#{suffix}?api_key=#{@key}"
|
60
68
|
end
|
61
69
|
|
62
70
|
# @param bug_id [Integer] id of bug
|
63
|
-
# @param port [Integer] port of server
|
64
71
|
# @return [Net::HTTPResponse] result of request
|
65
|
-
def get_bug_result(bug_id
|
66
|
-
Net::HTTP.start(url, port, use_ssl:
|
72
|
+
def get_bug_result(bug_id)
|
73
|
+
Net::HTTP.start(@url.host, @url.port, use_ssl: use_ssl?) do |http|
|
67
74
|
http.get(bug_url(bug_id))
|
68
75
|
end
|
69
76
|
end
|
70
|
-
|
71
|
-
# @param response [Net::HTTPResponse] to check
|
72
|
-
# @return [Boolean] is response - redirect
|
73
|
-
def response_redirect?(response)
|
74
|
-
response.header['location']
|
75
|
-
end
|
76
77
|
end
|
77
78
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OnlyofficeBugzillaHelper
|
4
|
+
# Method to work with bug data
|
5
|
+
module BugData
|
6
|
+
# Get bug data of bug
|
7
|
+
# @param bug_id [String, Integer] id of bug
|
8
|
+
# @return [JSON] data
|
9
|
+
def bug_data(bug_id)
|
10
|
+
res = get_bug_result(bug_id)
|
11
|
+
JSON.parse(res.body)['bugs'].first
|
12
|
+
end
|
13
|
+
|
14
|
+
# Get status of bug
|
15
|
+
# @param bug_id [String, Integer] id of bug
|
16
|
+
# @return [String] status of bug
|
17
|
+
def bug_status(bug_id)
|
18
|
+
parsed_json = bug_data(bug_id)
|
19
|
+
parsed_json['status']
|
20
|
+
end
|
21
|
+
|
22
|
+
# @param bug_id [Integer] is bug exists
|
23
|
+
# @return [Boolean]
|
24
|
+
def bug_exists?(bug_id)
|
25
|
+
bug_status(bug_id)
|
26
|
+
true
|
27
|
+
rescue JSON::ParserError, NoMethodError
|
28
|
+
false
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OnlyofficeBugzillaHelper
|
4
|
+
# Working with comments
|
5
|
+
module Comments
|
6
|
+
# @return [Hash] list of bug comments
|
7
|
+
def comments(bug_id)
|
8
|
+
res = Net::HTTP.start(@url.host, @url.port, use_ssl: use_ssl?) do |http|
|
9
|
+
http.get(bug_url(bug_id, '/comment'))
|
10
|
+
end
|
11
|
+
JSON.parse(res.body)['bugs'][bug_id.to_s]['comments']
|
12
|
+
end
|
13
|
+
|
14
|
+
# Add comment to bug
|
15
|
+
# @param bug_id [Integer] id of bug
|
16
|
+
# @param comment [String] comment to add
|
17
|
+
def add_comment(bug_id, comment)
|
18
|
+
req = Net::HTTP::Post.new(bug_url(bug_id, '/comment'))
|
19
|
+
req.body = { comment: comment }.to_json
|
20
|
+
req.add_field('Content-Type', 'text/plain')
|
21
|
+
connection = Net::HTTP.new(@url.host, @url.port)
|
22
|
+
connection.use_ssl = use_ssl?
|
23
|
+
connection.start { |http| http.request(req) }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OnlyofficeBugzillaHelper
|
4
|
+
# Method to updating bug data
|
5
|
+
module UpdateBug
|
6
|
+
# Update bug info
|
7
|
+
# @param bug_id [Integer] id of bug
|
8
|
+
# @param params [Hash] params to update
|
9
|
+
# @return [Net::HTTPResponse] result of update
|
10
|
+
def update_bug(bug_id, params = {})
|
11
|
+
req = Net::HTTP::Put.new(bug_url(bug_id))
|
12
|
+
req.body = params.to_json
|
13
|
+
req.add_field('Content-Type', 'text/plain')
|
14
|
+
connection = Net::HTTP.new(@url.host, @url.port)
|
15
|
+
connection.use_ssl = use_ssl?
|
16
|
+
connection.start { |http| http.request(req) }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
metadata
CHANGED
@@ -1,58 +1,156 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: onlyoffice_bugzilla_helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Pavel Lobashov
|
8
7
|
- ONLYOFFICE
|
8
|
+
- Pavel Lobashov
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2020-12-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: faker
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '2'
|
21
|
+
type: :development
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '2'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: overcommit
|
16
30
|
requirement: !ruby/object:Gem::Requirement
|
17
31
|
requirements:
|
18
32
|
- - "~>"
|
19
33
|
- !ruby/object:Gem::Version
|
20
|
-
version: '
|
34
|
+
version: '0'
|
21
35
|
type: :development
|
22
36
|
prerelease: false
|
23
37
|
version_requirements: !ruby/object:Gem::Requirement
|
24
38
|
requirements:
|
25
39
|
- - "~>"
|
26
40
|
- !ruby/object:Gem::Version
|
27
|
-
version: '
|
41
|
+
version: '0'
|
28
42
|
- !ruby/object:Gem::Dependency
|
29
43
|
name: rake
|
30
44
|
requirement: !ruby/object:Gem::Requirement
|
31
45
|
requirements:
|
32
46
|
- - "~>"
|
33
47
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
48
|
+
version: '13'
|
35
49
|
type: :development
|
36
50
|
prerelease: false
|
37
51
|
version_requirements: !ruby/object:Gem::Requirement
|
38
52
|
requirements:
|
39
53
|
- - "~>"
|
40
54
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
55
|
+
version: '13'
|
42
56
|
- !ruby/object:Gem::Dependency
|
43
57
|
name: rspec
|
44
58
|
requirement: !ruby/object:Gem::Requirement
|
45
59
|
requirements:
|
46
60
|
- - "~>"
|
47
61
|
- !ruby/object:Gem::Version
|
48
|
-
version: '3
|
62
|
+
version: '3'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '3'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rubocop
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - "~>"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '1'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - "~>"
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '1'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: rubocop-performance
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - "~>"
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '1'
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - "~>"
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '1'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: rubocop-rake
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - "~>"
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
type: :development
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - "~>"
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: rubocop-rspec
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - "~>"
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '2'
|
49
119
|
type: :development
|
50
120
|
prerelease: false
|
51
121
|
version_requirements: !ruby/object:Gem::Requirement
|
52
122
|
requirements:
|
53
123
|
- - "~>"
|
54
124
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
125
|
+
version: '2'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: simplecov
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - "~>"
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
type: :development
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - "~>"
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
140
|
+
- !ruby/object:Gem::Dependency
|
141
|
+
name: yard
|
142
|
+
requirement: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: 0.9.20
|
147
|
+
type: :development
|
148
|
+
prerelease: false
|
149
|
+
version_requirements: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - ">="
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: 0.9.20
|
56
154
|
description: Helper for bugzilla, used in QA
|
57
155
|
email:
|
58
156
|
- shockwavenn@gmail.com
|
@@ -60,25 +158,22 @@ executables: []
|
|
60
158
|
extensions: []
|
61
159
|
extra_rdoc_files: []
|
62
160
|
files:
|
63
|
-
- ".codeclimate.yml"
|
64
|
-
- ".gitignore"
|
65
|
-
- ".overcommit.yml"
|
66
|
-
- ".rspec"
|
67
|
-
- ".rubocop.yml"
|
68
|
-
- ".rubocop_todo.yml"
|
69
|
-
- ".travis.yml"
|
70
|
-
- Changelog.md
|
71
|
-
- Gemfile
|
72
|
-
- LICENSE.txt
|
73
|
-
- README.md
|
74
|
-
- Rakefile
|
75
161
|
- lib/onlyoffice_bugzilla_helper.rb
|
162
|
+
- lib/onlyoffice_bugzilla_helper/bug_data.rb
|
163
|
+
- lib/onlyoffice_bugzilla_helper/comments.rb
|
164
|
+
- lib/onlyoffice_bugzilla_helper/name.rb
|
165
|
+
- lib/onlyoffice_bugzilla_helper/networking.rb
|
166
|
+
- lib/onlyoffice_bugzilla_helper/update_bug.rb
|
76
167
|
- lib/onlyoffice_bugzilla_helper/version.rb
|
77
|
-
-
|
78
|
-
homepage: http://rubygems.org/gems/onlyoffice_bugzilla_helper
|
168
|
+
homepage: https://github.com/ONLYOFFICE-QA/onlyoffice_bugzilla_helper
|
79
169
|
licenses:
|
80
170
|
- AGPL-3.0
|
81
|
-
metadata:
|
171
|
+
metadata:
|
172
|
+
bug_tracker_uri: https://github.com/ONLYOFFICE-QA/onlyoffice_bugzilla_helper/issues
|
173
|
+
changelog_uri: https://github.com/ONLYOFFICE-QA/onlyoffice_bugzilla_helper/blob/master/CHANGELOG.md
|
174
|
+
documentation_uri: https://www.rubydoc.info/gems/onlyoffice_bugzilla_helper
|
175
|
+
homepage_uri: https://github.com/ONLYOFFICE-QA/onlyoffice_bugzilla_helper
|
176
|
+
source_code_uri: https://github.com/ONLYOFFICE-QA/onlyoffice_bugzilla_helper
|
82
177
|
post_install_message:
|
83
178
|
rdoc_options: []
|
84
179
|
require_paths:
|
@@ -87,15 +182,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
87
182
|
requirements:
|
88
183
|
- - ">="
|
89
184
|
- !ruby/object:Gem::Version
|
90
|
-
version: '
|
185
|
+
version: '2.4'
|
91
186
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
187
|
requirements:
|
93
188
|
- - ">="
|
94
189
|
- !ruby/object:Gem::Version
|
95
190
|
version: '0'
|
96
191
|
requirements: []
|
97
|
-
|
98
|
-
rubygems_version: 2.7.6
|
192
|
+
rubygems_version: 3.1.4
|
99
193
|
signing_key:
|
100
194
|
specification_version: 4
|
101
195
|
summary: Helper for bugzilla
|