class Agents::FisheyeAgent

Constants

SCHEMES

Public Instance Methods

check() click to toggle source
# File lib/huginn_fisheye_agent/fisheye_agent.rb, line 67
def check
  receive(interpolated)
end
default_options() click to toggle source
# File lib/huginn_fisheye_agent/fisheye_agent.rb, line 26
def default_options
  {
    'fisheye_url' => 'https://fisheye.example.com',
    'fisheye_token' => 'XXX',
    'fisheye_repository' => 'XXX-XXX',
    'merge_event' => 'false'
  }
end
handle(event) click to toggle source
# File lib/huginn_fisheye_agent/fisheye_agent.rb, line 77
def handle(event)
  fisheye_url = interpolated(event)["fisheye_url"] + '/rest-service-fecru/admin/repositories/'+ interpolated(event)["fisheye_repository"] + '/incremental-index'
  if not valid_url?(fisheye_url)
    log("Invalid URL #{fisheye_url}")
    return
  end
    
  fisheye_headers = {'Content-Type'  => 'application/json; charset=utf-8', 'X-Api-Key' => interpolated(event)["fisheye_token"] }
  fisheye_body = ''
  response = faraday.run_request(:put, fisheye_url, fisheye_body, fisheye_headers)
  case response.status
    when 202
      log("Succesfully Trigger incremental index of Repository " + interpolated(event)["fisheye_repository"])
    when 204
      log("Succesfully Trigger incremental index of Repository " + interpolated(event)["fisheye_repository"])
    when 401
      log("Invalid Authentication Token Body: #{response.body}")
      return  
    when 404
      log("Repository Doesn't Exist: Repo: " + interpolated(event)["fisheye_repository"] + " Body: #{response.body}")
      return
    when 405 
      log("Repository is disabled: Repo: " + interpolated(event)["fisheye_repository"] + " Body: #{response.body}")
      return
    else
      log("Invalid Response from Fisheye: Status: #{response.status} Body: #{response.body}")
      return
  end
  if boolify(interpolated['merge_event'])
    create_event payload: event.payload.merge(
      fisheeye_response: {
        body: response.body,
        headers: response.headers,
        status: response.status
      }
    )
  else
  create_event payload: {fisheye_response: {body: response.body, headers: response.headers, status: response.status}}
  end
end
receive(incoming_events) click to toggle source
# File lib/huginn_fisheye_agent/fisheye_agent.rb, line 71
def receive(incoming_events)
  incoming_events.each do |event|  
    handle(event)
  end
end
valid_url?(url) click to toggle source
# File lib/huginn_fisheye_agent/fisheye_agent.rb, line 43
def valid_url?(url)
  parsed = Addressable::URI.parse(url) or return false
  SCHEMES.include?(parsed.scheme)
  rescue Addressable::URI::InvalidURIError
    false
end
validate_options() click to toggle source
# File lib/huginn_fisheye_agent/fisheye_agent.rb, line 50
def validate_options
  if options['merge_event'].present? && !%[true false].include?(options['merge_event'].to_s)
    errors.add(:base, "Oh no!!! if provided, merge_event must be 'true' or 'false'")
  end
  errors.add(:base, "Fisheye URL Missing") unless options['fisheye_url'].present?
  errors.add(:base, "Fisheye Token Missing") unless options['fisheye_token'].present?
  errors.add(:base, "Fisheye Repository Missing") unless options['fisheye_repository'].present?
end
working?() click to toggle source
# File lib/huginn_fisheye_agent/fisheye_agent.rb, line 59
def working?
  return false if recent_error_logs?
  
  if interpolated['expected_receive_period_in_days'].present?
    return false unless last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago
  end
end