mikamai/akamai_api

View on GitHub
lib/akamai_api/cli/ccu/status_renderer.rb

Summary

Maintainability
A
0 mins
Test Coverage
require "akamai_api/ccu/status/response"
require "akamai_api/ccu/purge_status/response"

module AkamaiApi::CLI::CCU
  class StatusRenderer
    attr_reader :response

    def initialize(response)
      @response = response
    end

    def render_error
      if response.is_a? AkamaiApi::CCU::PurgeStatus::NotFound
        render_not_found
      else
        render_generic_error
      end
    end

    def render
      res = response.is_a?(AkamaiApi::CCU::Status::Response) ? queue_status : purge_status
      [
        '----------',
        res,
        '----------'
      ].join "\n"
    end

    def queue_status
      [
        "Akamai CCU Queue Status",
        "\t* Result: #{response.code} - #{response.message}",
        "\t* Support ID: #{response.support_id}",
        "\t* Queue Length: #{response.queue_length}"
      ]
    end

    def purge_status
      output = [
        purge_description,
        "\t* Result: #{response.code} - #{response.status}",
        "\t* Purge ID: #{response.purge_id} | Support ID: #{response.support_id}",
        "\t* Submitted by: #{response.submitted_by} on #{response.submitted_at}"
      ]
      output.concat response.completed_at ? successful_completed_purge : successful_pending_purge
    end

    def purge_description
      if response.completed_at
        "Purge request has been successfully completed:"
      else
        "Purge request is currently enqueued:"
      end
    end

    def render_not_found
      [
        "----------",
        "No purge request found using #{response.progress_uri}:",
        "\t* Result: #{response.code} - #{response.message}",
        "\t* Support ID: #{response.support_id}",
        "\t* Time to wait before next check: #{response.time_to_wait} secs.",
        "----------"
      ].join "\n"
    end

    def render_generic_error
      [
        "----------",
        "Error #{response.code}: '#{response.message}' (#{response.detail})",
        "  Described by: #{response.described_by}",
        "  Support ID: #{response.support_id}",
        "----------"
      ].join "\n"
    end

    def successful_completed_purge
      ["\t* Completed on: #{response.completed_at}"]
    end

    def successful_pending_purge
      [
        "\t* Estimated time was: #{response.original_estimated_time} secs.",
        "\t* Queue length was: #{response.original_queue_length}",
        "\t* Time to wait before next check: #{response.time_to_wait} secs.",
      ]
    end
  end
end