module Matchd::Response::Factory
Public Instance Methods
Response(respond, fallback_resource_class)
click to toggle source
Creates new instances of a {Matchd::Response} subclass. Which class is being used is defines via the {respond} or {fallback_resource_class} parameters.
@param respond [Array<Hash>|Hash] One or multiple response configurations (See subclasses) @param fallback_resource_class [Array|String] One or multiple ressource class names (like `“A”`, `“AAAA”`, `“MX”` etc)
defining which Resource subclass is being used if the {respond} doesn't include a `"resource_class"` configuration
@return [Array<Matchd::Response>] Instances of {Matchd::Response} subclasses.
# File lib/matchd/response.rb, line 55 def Response(respond, fallback_resource_class) # rubocop:disable Naming/MethodName respond = [respond] unless respond.is_a?(Array) # don't convert Hash to Array respond.flat_map do |r| resource_class = if r.is_a?(Hash) r.fetch("resource_class", fallback_resource_class) else fallback_resource_class end raise ArgumentError, "Missing resource_class for Response" unless resource_class Array(resource_class).map { |klass| Matchd::Response.const_get(klass.upcase).new(r) } end end