Method: Mack::Rendering::Type::Url#render

Defined in:
lib/mack/rendering/type/url.rb

#renderObject

Retrieves the contents of the url using either GET or POST, passing along any specified parameters.



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/mack/rendering/type/url.rb', line 34

def render
  options = {:method => :get, :raise_exception => false}.merge(self._options)
  url = self._render_value
  remote = url.match(/^[a-zA-Z]+:\/\//)
  case options[:method]
  when :get
    if remote
      do_render_remote_url(url_with_query(url, options[:parameters]), options) do |uri, options|
        Net::HTTP.get_response(uri)
      end
    else
      do_render_local_url(url, options) do |url, options|
        Rack::MockRequest.new(self._app_for_rendering).get(url, options)
      end
    end
  when :post
    if remote
      do_render_remote_url(url, options) do |uri, options|
        Net::HTTP.post_form(uri, options[:parameters] || {})
      end
    else
      do_render_local_url(url, options) do |url, options|
        Rack::MockRequest.new(self._app_for_rendering).post(url, options)
      end
    end
  else
    raise Mack::Errors::UnsupportRenderUrlMethodType.new(options[:method])
  end
end