Sha256: 57ab467c41b632a509863b55a987019b170fbb38421e1fe96b98ec999217574b

Contents?: true

Size: 1.1 KB

Versions: 3

Compression:

Stored size: 1.1 KB

Contents

require 'tomogram_routing'
require 'json-schema'
require 'fitting/storage/yaml_file'
require 'fitting/request'
require 'fitting/response'

module Fitting
  class Documentation
    class << self
      def try_on(date, env_request, env_response)
        request = Request.new(env_request, tomogram)
        request.valid! if request.validate?
        response = Response.new(env_response, request.schema)
        response.valid! if response.validate?
        add_storage(location(date), request, response)
      end

      private

      def add_storage(location, request, response)
        Fitting::Storage::YamlFile.push(
          location,
          'request' => MultiJson.dump(request.to_hash),
          'response' => MultiJson.dump(response.to_hash)
        )
      end

      def tomogram
        @tomogram ||= TomogramRouting::Tomogram.craft(Fitting.configuration.tomogram)
      end

      def location(date)
        name = date.inspect.to_s
        if name.split('(').size > 1
          name.split('(').last.split(')').first[2..-1]
        else
          name.split(' ')[3][2..-3]
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fitting-0.4.2 lib/fitting/documentation.rb
fitting-0.4.1 lib/fitting/documentation.rb
fitting-0.3.0 lib/fitting/documentation.rb