require 'pinch_hitter/message/xml'
require 'pinch_hitter/message/json'
require 'pinch_hitter/message/content_type'
require 'pinch_hitter/core_ext/string'

module PinchHitter
  module Message
    class MessageStore
      include Xml
      include Json
      include ContentType

      attr_accessor :message_directory

      def initialize(message_directory)
        @message_directory = message_directory
      end

      def load(file, overrides={})
        filename = find_filename file
        if filename =~ /xml$/
          xml_message filename, overrides
        else
          json_message filename, overrides
        end
      end

      def find_filename(file)
        Dir["#{message_directory}/#{file}*"].first
      end

    end
  end
end