Sha256: b615a7b72fab1e55c731752cffd211f029cbad76d4b4ebacc500d21596f58a64
Contents?: true
Size: 1.34 KB
Versions: 2
Compression:
Stored size: 1.34 KB
Contents
module Restfulie::Client class Dsl def initialize @requests = [] trait :base trait :verb request :base_request request :setup_header request :serialize_body request :enhance_response # request :cache request :follow_request end def request(what) req = "Restfulie::Client::Feature::#{what.to_s.classify}".constantize @requests << req self end def trait(sym) t = "Restfulie::Client::Feature::#{sym.to_s.classify}".constantize self.extend t self end def method_missing(sym, *args) if Restfulie::Client::Feature.const_defined? sym.to_s.classify loaded = true trait sym end if Restfulie::Client::Feature.const_defined? "#{sym.to_s.classify}Request" loaded = true request "#{sym.to_s}Request" end if loaded self else super sym, *args end end def request_flow(env = {}) Parser.new(@requests).continue(self, nil, env) end end class Parser def initialize(stack) @stack = stack.dup end def continue(request, response, env) current = @stack.pop if current.nil? return response end filter = current.new filter.execute(self, request, response, env) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
restfulie-1.0.0.beta1 | lib/restfulie/client/dsl.rb |
restfulie-0.1.0.beta1 | lib/restfulie/client/dsl.rb |