diff --git a/lib/pact_broker/api/decorators/dashboard_text_decorator.rb b/lib/pact_broker/api/decorators/dashboard_text_decorator.rb new file mode 100644 index 000000000..f264aa26f --- /dev/null +++ b/lib/pact_broker/api/decorators/dashboard_text_decorator.rb @@ -0,0 +1,50 @@ +require 'ostruct' +require 'pact_broker/api/pact_broker_urls' + +module PactBroker + module Api + module Decorators + class DashboardTextDecorator + include PactBroker::Api::PactBrokerUrls + + Line = Struct.new(:consumer_name, :c_version, :c_tags , :provider_name, :p_version, :p_tags, :success) + + def initialize(index_items) + @index_items = index_items + end + + def to_json(options) + to_hash(options).to_json + end + + def to_text(options) + data = items(index_items, options[:user_options][:base_url]) + printer = TablePrint::Printer.new(data) + printer.table_print + end + + private + + attr_reader :index_items + + def items(index_items, base_url) + index_items.collect do | index_item | + index_item_object(index_item) + end + end + + def index_item_object(index_item) + Line.new( + index_item.consumer_name, + index_item.consumer_version_number, + index_item.tag_names.join(", "), + index_item.provider_name, + index_item.provider_version_number, + index_item.latest_verification_latest_tags.collect(&:name).join(", "), + index_item.verification_status.to_s + ) + end + end + end + end +end diff --git a/lib/pact_broker/api/resources/dashboard.rb b/lib/pact_broker/api/resources/dashboard.rb index 2267ae2d0..216e1c613 100644 --- a/lib/pact_broker/api/resources/dashboard.rb +++ b/lib/pact_broker/api/resources/dashboard.rb @@ -1,5 +1,6 @@ require 'pact_broker/api/resources/base_resource' require 'pact_broker/api/decorators/dashboard_decorator' +require 'pact_broker/api/decorators/dashboard_text_decorator' module PactBroker module Api @@ -8,7 +9,10 @@ module Resources class Dashboard < BaseResource def content_types_provided - [["application/hal+json", :to_json]] + [ + ["application/hal+json", :to_json], + ["text/plain", :to_text], + ] end def allowed_methods @@ -19,6 +23,10 @@ def to_json PactBroker::Api::Decorators::DashboardDecorator.new(index_items).to_json(user_options: decorator_context) end + def to_text + PactBroker::Api::Decorators::DashboardTextDecorator.new(index_items).to_text(user_options: decorator_context) + end + private def index_items