class TerraformEnterprise::API::Request
A wrapper for HTTP JSON-API requests to provide convenience request method wrappers.
Constants
- DEFAULT_DEBUG
- DEFAULT_HOST
Public Class Methods
new(options = {})
click to toggle source
# File lib/terraform_enterprise/api/request.rb, line 11 def initialize(options = {}) @host = options[:host] || DEFAULT_HOST @token = options[:token] @debug = options[:debug] || DEFAULT_DEBUG end
Public Instance Methods
delete(*path)
click to toggle source
# File lib/terraform_enterprise/api/request.rb, line 22 def delete(*path) data = path.pop if path.last.is_a?(Hash) request(:delete, path, data) end
get(*path)
click to toggle source
# File lib/terraform_enterprise/api/request.rb, line 17 def get(*path) data = path.pop if path.last.is_a?(Hash) request(:get, path, data) end
patch(*path)
click to toggle source
# File lib/terraform_enterprise/api/request.rb, line 37 def patch(*path) data = path.pop if path.last.is_a?(Hash) request(:patch, path, data) end
post(*path)
click to toggle source
# File lib/terraform_enterprise/api/request.rb, line 27 def post(*path) data = path.pop if path.last.is_a?(Hash) request(:post, path, data) end
put(*path)
click to toggle source
# File lib/terraform_enterprise/api/request.rb, line 32 def put(*path) data = path.pop if path.last.is_a?(Hash) request(:put, path, data) end
request(method, path, data = {}, extra_headers = {})
click to toggle source
# File lib/terraform_enterprise/api/request.rb, line 42 def request(method, path, data = {}, extra_headers = {}) request_options = define_request(method, path, data, extra_headers) response = execute(request_options) debug(request_options, response, data) if @debug TerraformEnterprise::API::Response.new(response) end
Private Instance Methods
base()
click to toggle source
# File lib/terraform_enterprise/api/request.rb, line 51 def base "#{@host}/api/v2" end
debug(http_request, http_response, data)
click to toggle source
# File lib/terraform_enterprise/api/request.rb, line 82 def debug(http_request, http_response, data) http_method = http_request[:method].to_s.upcase puts "[DEBUG] [REQUEST:METHOD] #{http_method} #{http_request[:url]}" puts "[DEBUG] [REQUEST:HEADERS] #{http_request[:headers]}" puts "[DEBUG] [REQUEST:PAYLOAD] #{data}" puts "[DEBUG] [RESPONSE:CODE] #{http_response.code}" puts "[DEBUG] [RESPONSE:BODY] #{http_response.body}" end
define_request(method, path, data = {}, extra_headers = {})
click to toggle source
# File lib/terraform_enterprise/api/request.rb, line 62 def define_request(method, path, data = {}, extra_headers = {}) request_options = { method: method, url: uri(path), headers: headers.merge(extra_headers) } if %i[get delete].include?(method) request_options[:headers][:params] = data else request_options[:payload] = data.is_a?(String) ? data : data.to_json end request_options end
execute(request_params)
click to toggle source
# File lib/terraform_enterprise/api/request.rb, line 76 def execute(request_params) RestClient::Request.execute(request_params) rescue RestClient::ExceptionWithResponse => ex ex.response end
headers()
click to toggle source
# File lib/terraform_enterprise/api/request.rb, line 55 def headers { 'Authorization' => "Bearer #{@token}", 'Content-Type' => 'application/vnd.api+json' } end
uri(path = [])
click to toggle source
# File lib/terraform_enterprise/api/request.rb, line 91 def uri(path = []) return path if path.is_a?(String) && path.start_with?('http') "#{base}/#{path.map(&:to_s).join('/')}" end