summaryrefslogtreecommitdiff
path: root/lib/action/custom.rb
diff options
context:
space:
mode:
authorNick Thomas <nick@gitlab.com>2019-10-14 16:00:48 +0100
committerNick Thomas <nick@gitlab.com>2019-10-15 07:44:13 +0100
commit18096b5440e0818605add32538751c6be38e8343 (patch)
treeb4aebac9d7f752156ee4ec3d44ee990021a1b295 /lib/action/custom.rb
parent8db304b4919519bca60a5b18ffe9b88dcde845af (diff)
downloadgitlab-shell-18096b5440e0818605add32538751c6be38e8343.tar.gz
Remove dead Ruby code
Diffstat (limited to 'lib/action/custom.rb')
-rw-r--r--lib/action/custom.rb146
1 files changed, 0 insertions, 146 deletions
diff --git a/lib/action/custom.rb b/lib/action/custom.rb
deleted file mode 100644
index 4efb0a8..0000000
--- a/lib/action/custom.rb
+++ /dev/null
@@ -1,146 +0,0 @@
-require 'base64'
-
-require_relative '../http_helper'
-require_relative '../console_helper'
-
-module Action
- class Custom
- include HTTPHelper
- include ConsoleHelper
-
- class BaseError < StandardError; end
- class MissingPayloadError < BaseError; end
- class MissingAPIEndpointsError < BaseError; end
- class MissingDataError < BaseError; end
- class UnsuccessfulError < BaseError; end
-
- NO_MESSAGE_TEXT = 'No message'.freeze
- DEFAULT_HEADERS = { 'Content-Type' => CONTENT_TYPE_JSON }.freeze
-
- def initialize(gl_id, payload)
- @gl_id = gl_id
- @payload = payload
- end
-
- def execute
- validate!
- inform_client(info_message) if info_message
- process_api_endpoints!
- end
-
- private
-
- attr_reader :gl_id, :payload
-
- def process_api_endpoints!
- output = ''
- resp = nil
-
- data_with_gl_id = data.merge('gl_id' => gl_id)
-
- api_endpoints.each do |endpoint|
- url = "#{base_url}#{endpoint}"
- json = { 'data' => data_with_gl_id, 'output' => output }
-
- resp = post(url, {}, headers: DEFAULT_HEADERS, options: { json: json })
-
- # Net::HTTPSuccess is the parent of Net::HTTPOK, Net::HTTPCreated etc.
- case resp
- when Net::HTTPSuccess, Net::HTTPMultipleChoices
- true
- else
- raise_unsuccessful!(resp)
- end
-
- begin
- body = JSON.parse(resp.body)
- rescue JSON::ParserError
- raise UnsuccessfulError, 'Response was not valid JSON'
- end
-
- print_flush(body['result'])
-
- # In the context of the git push sequence of events, it's necessary to read
- # stdin in order to capture output to pass onto subsequent commands
- output = read_stdin
- end
-
- resp
- end
-
- def base_url
- config.gitlab_url
- end
-
- def data
- @data ||= payload['data']
- end
-
- def api_endpoints
- data['api_endpoints']
- end
-
- def info_message
- data['info_message']
- end
-
- def config
- @config ||= GitlabConfig.new
- end
-
- def api
- @api ||= GitlabNet.new
- end
-
- def read_stdin
- Base64.encode64($stdin.read)
- end
-
- def print_flush(str)
- return false unless str
- $stdout.print(Base64.decode64(str))
- $stdout.flush
- end
-
- def inform_client(str)
- $stderr.puts(format_gitlab_output(str))
- end
-
- def format_gitlab_output(str)
- format_for_stderr(str.split("\n")).join("\n")
- end
-
- def validate!
- validate_payload!
- validate_data!
- validate_api_endpoints!
- end
-
- def validate_payload!
- raise MissingPayloadError if !payload.is_a?(Hash) || payload.empty?
- end
-
- def validate_data!
- raise MissingDataError unless data.is_a?(Hash)
- end
-
- def validate_api_endpoints!
- raise MissingAPIEndpointsError if !api_endpoints.is_a?(Array) ||
- api_endpoints.empty?
- end
-
- def raise_unsuccessful!(result)
- message = "#{exception_message_for(result.body)} (#{result.code})"
- raise UnsuccessfulError, format_gitlab_output(message)
- end
-
- def exception_message_for(body)
- body = JSON.parse(body)
- return body['message'] unless body['message'].to_s.empty?
-
- body['result'].to_s.empty? ? NO_MESSAGE_TEXT : Base64.decode64(body['result'])
- rescue JSON::ParserError
- NO_MESSAGE_TEXT
- end
- end
-end