class Fastlane::Actions::RedmineFilePostAction
Public Class Methods
available_options()
click to toggle source
# File lib/fastlane/plugin/redmine_upload/actions/redmine_file_post.rb, line 82 def self.available_options [ FastlaneCore::ConfigItem.new(key: :redmine_host, env_name: "REDMINE_HOST", description: "Redmine host where upload file. e.g. ", optional: false, type: String), FastlaneCore::ConfigItem.new(key: :redmine_username, env_name: "REDMINE_USERNAME", description: "Redmine username (optional). An API key can be provided instead", optional: true, type: String), FastlaneCore::ConfigItem.new(key: :redmine_password, env_name: "REDMINE_PASSWORD", description: "Redmine password (optional). An API key can be provided instead", optional: true, type: String), FastlaneCore::ConfigItem.new(key: :redmine_api_key, env_name: "REDMINE_API_KEY", description: "Redmine API key (optional). username and password can be provided instead", optional: true, type: String), FastlaneCore::ConfigItem.new(key: :redmine_project, env_name: "REDMINE_PROJECT", description: "Project of redmine", optional: false, type: String), FastlaneCore::ConfigItem.new(key: :file_token, env_name: "FILE_TOKEN", description: "Token of file previously released", optional: false, type: String), FastlaneCore::ConfigItem.new(key: :file_name, env_name: "FILE_NAME", description: "FIle name", optional: false, type: String), FastlaneCore::ConfigItem.new(key: :file_version, env_name: "FILE_VERSION", description: "Version of file", optional: true, type: String), FastlaneCore::ConfigItem.new(key: :file_description, env_name: "FILE_DESCRIPTION", description: "Description of file to upload", optional: true, type: String) ] end
description()
click to toggle source
# File lib/fastlane/plugin/redmine_upload/actions/redmine_file_post.rb, line 65 def self.description "Uploads a file in a Redmine Files section of a given Redmine project" end
details()
click to toggle source
# File lib/fastlane/plugin/redmine_upload/actions/redmine_file_post.rb, line 77 def self.details # Optional: "Uploads a file in a Redmine host under files section of specified Redmine project." end
is_supported?(platform)
click to toggle source
# File lib/fastlane/plugin/redmine_upload/actions/redmine_file_post.rb, line 133 def self.is_supported?(platform) # Adjust this if your plugin only works for a particular platform (iOS vs. Android, for example) # See: https://docs.fastlane.tools/advanced/#control-configuration-by-lane-and-by-platform # # [:ios, :mac, :android].include?(platform) true end
return_value()
click to toggle source
# File lib/fastlane/plugin/redmine_upload/actions/redmine_file_post.rb, line 73 def self.return_value # If your method provides a return value, you can describe here what it does end
run(params)
click to toggle source
# File lib/fastlane/plugin/redmine_upload/actions/redmine_file_post.rb, line 4 def self.run(params) require 'net/http' require 'uri' require 'json' redmine_url = params[:redmine_host] api_key = params[:redmine_api_key] username = params[:redmine_username] password = params[:redmine_password] project = params[:redmine_project] token = params[:file_token] file_name = params[:file_name] file_version = params[:file_version] file_description = params[:file_description] upload_file_uri = URI.parse(redmine_url + "/projects/#{project}/files.json") # prepare request with token previously got from upload json_content = { "file" => { "token" => token } } if file_version != nil json_content["file"]["version_id"] = file_version end if file_name != nil json_content["file"]["filename"] = file_name end if file_description != nil json_content["file"]["description"] = file_description end file_body = JSON.pretty_generate(json_content) UI.message("File post with content #{file_body}") # Create the HTTP objects http_file_post = Net::HTTP.new(upload_file_uri.host, upload_file_uri.port) request_file = Net::HTTP::Post.new(upload_file_uri.request_uri) request_file["Content-Type"] = "application/json" unless api_key.nil? request_file["X-Redmine-API-Key"] = api_key.to_s end unless username.nil? || password.nil? request_file.basic_auth(username, password) end request_file.body = file_body # Send the request request_file = http_file_post.request(request_file) case request_file when Net::HTTPSuccess UI.success("File uploaded successfully") else UI.error(request_file.value) end end