Sha256: f3df7ccc7b23eaaf41bc05135000a1bca962e93d53f78de65b7482b506dd2bf6
Contents?: true
Size: 1.45 KB
Versions: 3
Compression:
Stored size: 1.45 KB
Contents
require 'forwardable' module ServiceContract module Avro class Endpoint < AbstractEndpoint extend Forwardable def_delegators :definition, :name, :response, :request def description [request_method, path].join(" ") end def doc definition.respond_to?(:doc) ? definition.doc : nil end def response_type Type.build(response) end def parameters request.fields.map{|field| Parameter.new(field) } end protected def request_method #Check for [<METHOD>] at the front of the doc string. this signals an action override if doc =~ /^\[([A-Z]+)\].+$/ return $1 end case name when "create" "POST" when "update" "PUT" when "destroy" "DELETE" else "GET" end end def path case name when "index", "create" protocol.path when "show", "destroy", "update" File.join(protocol.path, ":id") else if member? File.join(protocol.path, ":id", name) else File.join(protocol.path, name) end end end # seems kinda hacky def member? return false if parameters.empty? first_param_type = parameters.first.type first_param_type.complex? && first_param_type.name == protocol.main_type end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
service_contract-0.3.0 | lib/service_contract/avro/endpoint.rb |
service_contract-0.2.1 | lib/service_contract/avro/endpoint.rb |
service_contract-0.2.0 | lib/service_contract/avro/endpoint.rb |