jira-script 1.0.1 → 1.1.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3feb081d7f59957c7ea5ba25cd167bf7bbd16d32
4
+ data.tar.gz: 52a9080c6f29ec55952d18f63ffbbe693d6e1f57
5
+ SHA512:
6
+ metadata.gz: b9a6cf55f3bd1ff74a75ebe57624d8496cdccfed6f2631e21bb935d4cfc34ecdef5171c8e590c6c2d2e99887d2653d59624b0b638ede3ec7564b3511b60b1675
7
+ data.tar.gz: d88f545a62d9214f2ebfc58ed805e2fa763dee453fce10ec042371c2b7d1a1d70b16e3e5a610adf8a9db1f2f5d922afd95c715a7c2d2e5ec66e6b5f8f96cfac9
@@ -46,18 +46,21 @@ class Dispatcher
46
46
  end
47
47
 
48
48
  # build request config
49
- def _get_request_config(res, type)
49
+ def _get_request_config(res, type, response_node = :key)
50
50
  {
51
51
  user: config[:user],
52
52
  password: config[:password],
53
53
  host: config[:host],
54
54
  api_path: config[:api_path],
55
+ headers: {},
56
+ body: {},
55
57
  project: config[:project],
56
58
  http_request_type: type,
57
59
  resource: res,
58
60
  default_issue_type: config[:default_issue_type],
59
61
  default_subtask_type: config[:default_subtask_type],
60
- verbosity: config[:verbosity]
62
+ verbosity: config[:verbosity],
63
+ response_node: response_node
61
64
  }
62
65
  end
63
66
 
@@ -83,6 +86,62 @@ class Dispatcher
83
86
  # run request
84
87
  request.run
85
88
  end
89
+
90
+ def delete(key)
91
+ request_config = _get_request_config("issue/#{key}", :delete)
92
+ request_config[:response_node] = nil
93
+ request = Request.new(:delete, request_config)
94
+ request.run
95
+ end
96
+
97
+ def search(jql)
98
+ request_config = _get_request_config("search?jql=#{jql}", :get, :issues)
99
+ request = Request.new(:search, request_config)
100
+
101
+ # run request
102
+ request.run
103
+ end
104
+
105
+ def get(key)
106
+ request_config = _get_request_config("issue/#{key}", :get, :fields)
107
+ request = Request.new(:list, request_config)
108
+ request.run
109
+ end
110
+
111
+ def download_att(filename, url)
112
+ req = Typhoeus::Request.new(
113
+ url,
114
+ ssl_verifypeer: false,
115
+ method: :get,
116
+ userpwd: "#{config[:user]}:#{config[:password]}",
117
+ )
118
+ ret = false
119
+ req.on_complete do |response|
120
+ ret = response.success?
121
+ if response.success?
122
+ f = File.new(filename, "wb")
123
+ f.write(response.body)
124
+ end
125
+ end
126
+ req.run
127
+ ret
128
+ end
129
+
130
+ def upload_att(key, file)
131
+ request_config = _get_request_config("issue/#{key}/attachments", :post)
132
+ request_config[:response_node] = nil
133
+ request_config[:headers] = {
134
+ 'X-Atlassian-Token' => 'no-check',
135
+ 'Content-Type' => 'multipart/form-data'
136
+ }
137
+ request_config[:body] = {
138
+ file: File.open(file, "r")
139
+ }
140
+ request = Request.new(:attachments, request_config)
141
+
142
+ request.upload
143
+ end
144
+
86
145
  end
87
146
 
88
147
  def self.run(&block)
@@ -92,4 +151,4 @@ rescue RequestException => e
92
151
  puts e.backtrace
93
152
  end
94
153
 
95
- end
154
+ end
@@ -1,3 +1,4 @@
1
+ require 'uri'
1
2
  require 'json'
2
3
  require 'typhoeus'
3
4
  require 'jira-script/request_exception'
@@ -52,6 +53,7 @@ class Request
52
53
  description: 'fields/description',
53
54
  type: 'fields/issuetype/name',
54
55
  assignee: 'fields/assignee/name',
56
+ reporter: 'fields/reporter/name',
55
57
  estimate: 'fields/timetracking/originalEstimate',
56
58
  remaining: 'fields/timetracking/remainingEstimate',
57
59
  components: 'fields/components',
@@ -60,11 +62,11 @@ class Request
60
62
  end
61
63
 
62
64
  def to_json
63
- JSON.generate(json_data)
65
+ JSON.generate(json_data.merge(config[:body]))
64
66
  end
65
67
 
66
68
  def to_s
67
- json_data
69
+ json_data.merge(config[:body])
68
70
  end
69
71
 
70
72
  def _set_default_type
@@ -101,6 +103,8 @@ class Request
101
103
  raise RequestException, "Error trying to create ticket #{fields[:summary]}: #{msg}"
102
104
  elsif request_type == :update
103
105
  raise RequestException, "Error trying to update ticket #{key}: #{msg}"
106
+ elsif request_type == :search
107
+ raise RequestException, "Error searching for issues: #{msg}"
104
108
  end
105
109
  end
106
110
 
@@ -116,36 +120,65 @@ class Request
116
120
  end
117
121
  end
118
122
 
123
+ def upload
124
+ ret = nil
125
+ url = [config[:host], config[:api_path], config[:resource]].join('/')
126
+ _body = self.json_data.merge(config[:body])
127
+ puts "url: #{url}" if config[:verbosity] >= 2
128
+ puts "body: #{_body}" if config[:verbosity] >= 2
129
+
130
+ Typhoeus::Request.post(
131
+ url,
132
+ ssl_verifypeer: false,
133
+ userpwd: "#{config[:user]}:#{config[:password]}",
134
+ body: _body,
135
+ headers: {'Content-Type' => 'application/x-www-form-urlencoded' }.merge(config[:headers])
136
+ )
137
+
138
+ end
139
+
119
140
  def run
120
141
  ret = nil
121
- _set_default_type
142
+ _set_default_type if [:create, :update].include?(request_type)
122
143
  url = [config[:host], config[:api_path], config[:resource]].join('/')
123
- json_str = to_json
124
- p "Sending json #{json_str}" if config[:verbosity] >= 2
144
+ json_str = to_json
145
+ puts "url: #{url}" if config[:verbosity] >= 2
146
+ puts "json: #{json_str}" if config[:verbosity] >= 2
125
147
 
126
148
  req = Typhoeus::Request.new(
127
149
  url,
128
150
  ssl_verifypeer: false,
129
151
  method: config[:http_request_type],
130
152
  userpwd: "#{config[:user]}:#{config[:password]}",
131
- body: json_str,
132
- headers: { 'Content-Type' => 'application/json' }
153
+ body: json_str,
154
+ headers: { 'Content-Type' => 'application/json' }.merge(config[:headers])
133
155
  )
134
156
  req.on_complete do |response|
135
157
  if response.success?
136
- self.response = JSON.parse(response.body, symbolize_names: true)
137
- ret = self.response[:key]
158
+ if !response.body.empty?
159
+ self.response = JSON.parse(response.body, symbolize_names: true)
160
+ else
161
+ self.response = response
162
+ end
163
+
164
+ if config[:response_node] == nil
165
+ ret = self.response
166
+ else
167
+ ret = self.response[config[:response_node]]
168
+ end
138
169
  self.key = ret if request_type == :create
139
170
 
140
- if config[:verbosity] >= 1
141
- if fields[:parent].nil?
142
- prefix = 'Issue'
143
- else
144
- prefix = ' - sub-task'
145
- end
146
- p "#{prefix} #{key} updated successfully" if request_type == :update
147
- p "#{prefix} #{key}: '#{fields[:summary]}' created successfully" if request_type == :create
148
- end
171
+ if [:create, :update].include?(request_type)
172
+ if config[:verbosity] >= 1
173
+ if fields[:parent].nil?
174
+ prefix = 'Issue'
175
+ else
176
+ prefix = ' - sub-task'
177
+ end
178
+ puts "#{prefix} #{key} updated successfully" if request_type == :update
179
+ puts "#{prefix} #{key}: '#{fields[:summary]}' created successfully" if request_type == :create
180
+ end
181
+ end
149
182
 
150
183
  unless children.empty?
151
184
  children.each do |child|
@@ -0,0 +1,2 @@
1
+ class RequestException < Exception
2
+ end
metadata CHANGED
@@ -1,30 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jira-script
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
5
- prerelease:
4
+ version: 1.1.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Florin Mihalache
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2017-03-28 00:00:00.000000000 Z
11
+ date: 2018-10-09 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: typhoeus
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
19
  version: '1.1'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
26
  version: '1.1'
30
27
  description: A Ruby DSL script implementation to automate creating and updating many
@@ -36,29 +33,29 @@ extra_rdoc_files: []
36
33
  files:
37
34
  - lib/jira-script.rb
38
35
  - lib/jira-script/request.rb
36
+ - lib/jira-script/request_exception.rb
39
37
  homepage: http://github.com/mflorin/jira-script
40
38
  licenses:
41
39
  - MIT
40
+ metadata: {}
42
41
  post_install_message:
43
42
  rdoc_options: []
44
43
  require_paths:
45
44
  - lib
46
45
  required_ruby_version: !ruby/object:Gem::Requirement
47
- none: false
48
46
  requirements:
49
- - - ! '>='
47
+ - - ">="
50
48
  - !ruby/object:Gem::Version
51
49
  version: '0'
52
50
  required_rubygems_version: !ruby/object:Gem::Requirement
53
- none: false
54
51
  requirements:
55
- - - ! '>='
52
+ - - ">="
56
53
  - !ruby/object:Gem::Version
57
54
  version: '0'
58
55
  requirements: []
59
56
  rubyforge_project:
60
- rubygems_version: 1.8.23
57
+ rubygems_version: 2.5.2.3
61
58
  signing_key:
62
- specification_version: 3
59
+ specification_version: 4
63
60
  summary: Jira DSL
64
61
  test_files: []