fastlane-plugin-redmine_upload 0.1.0 → 0.2.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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 46a7f033827701fe488af2b19e2446d531663290
|
4
|
+
data.tar.gz: be6c5a66c60377440062a8ae66e27c138ccda13b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e939967a1ff0a794a45723b7a3f8249c92970367e9c5e4bf62679157133eee85b18513ad02b155e0b48da090b9252109d468e1c37244d63588e546420f045c49
|
7
|
+
data.tar.gz: 9fd7f77720edea13c6aeccf35a6ad4ebc0e7beb1d8ce558cb17e95e4cae238056d1eb9e515c6a72bb6d084c86ad8af5a4f5a31b16ee79717ad1ea8f68f2942f2
|
@@ -0,0 +1,126 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
class RedmineFilePostAction < Action
|
4
|
+
def self.run(params)
|
5
|
+
require 'net/http'
|
6
|
+
require 'net/http/uploadprogress'
|
7
|
+
require 'uri'
|
8
|
+
require 'json'
|
9
|
+
|
10
|
+
redmine_url = params[:redmine_host]
|
11
|
+
api_key = params[:redmine_api_key]
|
12
|
+
username = params[:redmine_username]
|
13
|
+
password = params[:redmine_password]
|
14
|
+
project = params[:redmine_project]
|
15
|
+
token = params[:file_token]
|
16
|
+
file_version = params[:file_version]
|
17
|
+
file_description = params[:file_description]
|
18
|
+
|
19
|
+
file_post_uri = URI.parse(redmine_url + "/projects/#{project}/files.json")
|
20
|
+
# prepare request with token previously got from upload
|
21
|
+
json_content = {
|
22
|
+
"file" => file_data = {
|
23
|
+
"token" => token,
|
24
|
+
"filename" => file_name,
|
25
|
+
"version" => file_version,
|
26
|
+
"description" => file_description
|
27
|
+
}
|
28
|
+
}
|
29
|
+
file_body = JSON.pretty_generate(json_content)
|
30
|
+
UI.message("File post with content #{file_body}")
|
31
|
+
|
32
|
+
# Create the HTTP objects
|
33
|
+
http_file_post = Net::HTTP.new(upload_file_uri.host, upload_file_uri.port)
|
34
|
+
request_file = _post(Net::HTTP::Post.new(upload_file_uri.request_uri))
|
35
|
+
|
36
|
+
request_file["Content-Type"] = "application/json"
|
37
|
+
unless api_key.nil?
|
38
|
+
request_upload_content["X-Redmine-API-Key"] = api_key.to_s
|
39
|
+
end
|
40
|
+
unless username.nil? || password.nil?
|
41
|
+
request_upload_content.basic_auth(username, password)
|
42
|
+
end
|
43
|
+
|
44
|
+
case response_upload_file
|
45
|
+
when Net::HTTPSuccess
|
46
|
+
UI.success("File uploaded successfully")
|
47
|
+
when Net::HTTPRedirection
|
48
|
+
|
49
|
+
else
|
50
|
+
UI.error(response_upload_file.value)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.description
|
55
|
+
"Uploads a file in a Redmine Files section of a given Redmine project"
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.authors
|
59
|
+
["Mattia Salvetti"]
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.return_value
|
63
|
+
# If your method provides a return value, you can describe here what it does
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.details
|
67
|
+
# Optional:
|
68
|
+
"Uploads a file in a Redmine host under files section of specified Redmine project."
|
69
|
+
end
|
70
|
+
|
71
|
+
def self.available_options
|
72
|
+
[
|
73
|
+
FastlaneCore::ConfigItem.new(key: :redmine_host,
|
74
|
+
env_name: "REDMINE_HOST",
|
75
|
+
description: "Redmine host where upload file. e.g. ",
|
76
|
+
optional: false,
|
77
|
+
type: String),
|
78
|
+
FastlaneCore::ConfigItem.new(key: :redmine_username,
|
79
|
+
env_name: "REDMINE_USERNAME",
|
80
|
+
description: "Redmine username (optional). An API key can be provided instead",
|
81
|
+
optional: true,
|
82
|
+
type: String),
|
83
|
+
FastlaneCore::ConfigItem.new(key: :redmine_password,
|
84
|
+
env_name: "REDMINE_PASSWORD",
|
85
|
+
description: "Redmine password (optional). An API key can be provided instead",
|
86
|
+
optional: true,
|
87
|
+
type: String),
|
88
|
+
FastlaneCore::ConfigItem.new(key: :redmine_api_key,
|
89
|
+
env_name: "REDMINE_API_KEY",
|
90
|
+
description: "Redmine API key (optional). username and password can be provided instead",
|
91
|
+
optional: true,
|
92
|
+
type: String),
|
93
|
+
FastlaneCore::ConfigItem.new(key: :redmine_project,
|
94
|
+
env_name: "REDMINE_PROJECT",
|
95
|
+
description: "Project of redmine",
|
96
|
+
optional: false,
|
97
|
+
type: String),
|
98
|
+
FastlaneCore::ConfigItem.new(key: :file_token,
|
99
|
+
env_name: "FILE_TOKEN",
|
100
|
+
description: "Token of file previously released",
|
101
|
+
optional: false,
|
102
|
+
type: String),
|
103
|
+
FastlaneCore::ConfigItem.new(key: :file_version,
|
104
|
+
env_name: "FILE_VERSION",
|
105
|
+
description: "Version of file",
|
106
|
+
optional: true,
|
107
|
+
type: String),
|
108
|
+
FastlaneCore::ConfigItem.new(key: :file_description,
|
109
|
+
env_name: "FILE_DESCRIPTION",
|
110
|
+
description: "Description of file to upload",
|
111
|
+
optional: true,
|
112
|
+
type: String)
|
113
|
+
|
114
|
+
]
|
115
|
+
end
|
116
|
+
|
117
|
+
def self.is_supported?(platform)
|
118
|
+
# Adjust this if your plugin only works for a particular platform (iOS vs. Android, for example)
|
119
|
+
# See: https://docs.fastlane.tools/advanced/#control-configuration-by-lane-and-by-platform
|
120
|
+
#
|
121
|
+
# [:ios, :mac, :android].include?(platform)
|
122
|
+
true
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
@@ -16,8 +16,8 @@ module Fastlane
|
|
16
16
|
|
17
17
|
# getting parameters
|
18
18
|
file_path = params[:file_path]
|
19
|
-
file_name = File.basename(file_path) unless file_path
|
20
|
-
|
19
|
+
file_name = File.basename(file_path) unless file_path.nil?
|
20
|
+
|
21
21
|
Actions.lane_context[SharedValues::REDMINE_UPLOAD_FILE_NAME] = file_name
|
22
22
|
|
23
23
|
redmine_url = params[:redmine_host]
|
@@ -25,9 +25,9 @@ module Fastlane
|
|
25
25
|
username = params[:redmine_username]
|
26
26
|
password = params[:redmine_password]
|
27
27
|
|
28
|
-
upload_content_uri = URI.parse(redmine_url+'/uploads.json')
|
28
|
+
upload_content_uri = URI.parse(redmine_url + '/uploads.json')
|
29
29
|
UI.message("Start file upload \"#{file_name}\" to Redmine API #{upload_content_uri}")
|
30
|
-
|
30
|
+
|
31
31
|
token = nil
|
32
32
|
response_upload_content = nil
|
33
33
|
File.open(file_path, 'rb') do |io|
|
@@ -36,31 +36,31 @@ module Fastlane
|
|
36
36
|
request_upload_content = Net::HTTP::Post.new(upload_content_uri.request_uri)
|
37
37
|
|
38
38
|
request_upload_content["Content-Type"] = "application/octet-stream"
|
39
|
-
unless api_key
|
40
|
-
request_upload_content["X-Redmine-API-Key"] =
|
39
|
+
unless api_key.nil?
|
40
|
+
request_upload_content["X-Redmine-API-Key"] = api_key.to_s
|
41
41
|
end
|
42
|
-
unless username
|
43
|
-
request_upload_content.basic_auth
|
42
|
+
unless username.nil? || password.nil?
|
43
|
+
request_upload_content.basic_auth(username, password)
|
44
44
|
end
|
45
45
|
|
46
46
|
request_upload_content.content_length = io.size
|
47
47
|
request_upload_content.body_stream = io
|
48
48
|
# print upload progress
|
49
49
|
Net::HTTP::UploadProgress.new(request_upload_content) do |progress|
|
50
|
-
printf("\rUploading \"#{file_name}\"... #{
|
50
|
+
printf("\rUploading \"#{file_name}\"... #{100 * progress.upload_size / io.size}%")
|
51
51
|
end
|
52
52
|
# Send the request
|
53
53
|
response_upload_content = http_upload_content.request(request_upload_content)
|
54
54
|
printf("\n")
|
55
55
|
end
|
56
56
|
case response_upload_content
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
57
|
+
when Net::HTTPSuccess
|
58
|
+
# get token from upload content response
|
59
|
+
token = JSON.parse(response_upload_content.body)['upload']['token']
|
60
|
+
UI.success("Content uploaded! File token released: #{token}")
|
61
|
+
Actions.lane_context[SharedValues::REDMINE_UPLOAD_FILE_TOKEN] = token
|
62
|
+
else
|
63
|
+
UI.error(response_upload_content.value)
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-redmine_upload
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mattia Salvetti
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-09-
|
11
|
+
date: 2018-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -145,6 +145,7 @@ files:
|
|
145
145
|
- LICENSE
|
146
146
|
- README.md
|
147
147
|
- lib/fastlane/plugin/redmine_upload.rb
|
148
|
+
- lib/fastlane/plugin/redmine_upload/actions/redmine_file_post.rb
|
148
149
|
- lib/fastlane/plugin/redmine_upload/actions/redmine_upload_action.rb
|
149
150
|
- lib/fastlane/plugin/redmine_upload/helper/redmine_upload_helper.rb
|
150
151
|
- lib/fastlane/plugin/redmine_upload/version.rb
|