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