Class: Slimmer::UrlRewriter

Inherits:
Object
  • Object
show all
Defined in:
lib/slimmer/url_rewriter.rb

Instance Method Summary collapse

Constructor Details

#initialize(request) ⇒ UrlRewriter

Returns a new instance of UrlRewriter.



3
4
5
# File 'lib/slimmer/url_rewriter.rb', line 3

def initialize(request)
  @request = request
end

Instance Method Details

#filter(src, dest) ⇒ Object



7
8
9
# File 'lib/slimmer/url_rewriter.rb', line 7

def filter(src,dest)
  rewrite_document src
end

#rewrite_document(doc) ⇒ Object



11
12
13
14
15
# File 'lib/slimmer/url_rewriter.rb', line 11

def rewrite_document(doc)
  rewrite_nodes doc.css('body img'),'src'
  rewrite_nodes doc.css('script'),'src'
  rewrite_nodes doc.css('link'),'href'
end

#rewrite_nodes(nodes, attr) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/slimmer/url_rewriter.rb', line 17

def rewrite_nodes(nodes,attr)
  nodes.each do |node|
    next unless node.attr(attr)
    node_uri = URI.parse(node.attr(attr))
    node.attribute(attr).value = rewrite_url(node_uri).to_s
  end
end

#rewrite_url(uri) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/slimmer/url_rewriter.rb', line 25

def rewrite_url(uri)
  unless uri.absolute?
    uri.scheme = @request.scheme
    if @request.host =~ /:/
      host,port = @request.host.split(":")
      uri.host = host
      uri.port = port
    else
      uri.host =   @request.host
      uri.port =   @request.port
    end
  end
  uri
end