class ProbeDockProbe::Server
Attributes
api_token[RW]
api_url[RW]
name[RW]
project_api_id[RW]
Public Class Methods
new(options = {})
click to toggle source
# File lib/probe_dock_ruby/server.rb, line 18 def initialize options = {} @name = options[:name].to_s.strip if options[:name] @api_url = options[:api_url].to_s if options[:api_url] @api_token = options[:api_token].to_s if options[:api_token] @project_api_id = options[:project_api_id].to_s if options[:project_api_id] end
Public Instance Methods
clear()
click to toggle source
# File lib/probe_dock_ruby/server.rb, line 25 def clear @name = nil @api_url = nil @api_token = nil @project_api_id = nil end
upload(payload)
click to toggle source
# File lib/probe_dock_ruby/server.rb, line 32 def upload payload validate! body = Oj.dump payload, mode: :strict res = HTTParty.post payload_uri, body: body, headers: payload_headers if res.code != 202 raise Error.new("Expected HTTP 202 Accepted when submitting payload, got #{res.code}", res) end end
Private Instance Methods
payload_headers()
click to toggle source
# File lib/probe_dock_ruby/server.rb, line 51 def payload_headers { 'Authorization' => "Bearer #{@api_token}", 'Content-Type' => 'application/vnd.probedock.payload.v1+json' } end
payload_uri()
click to toggle source
# File lib/probe_dock_ruby/server.rb, line 55 def payload_uri "#{@api_url}/publish" end
validate!()
click to toggle source
# File lib/probe_dock_ruby/server.rb, line 45 def validate! required = { "name" => @name, "apiUrl" => @api_url, "apiToken" => @api_token } missing = required.inject([]){ |memo,(k,v)| v.to_s.strip.length <= 0 ? memo << k : memo } raise Error.new("Server #{@name} is missing the following options: #{missing.join ', '}") if missing.any? end