markbates-content_o_matic 0.0.1.20090720170922 → 0.0.2.20090721162019
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/content_o_matic/response.rb +46 -7
- data/lib/content_o_matic/text_helper.rb +10 -6
- data/lib/content_o_matic.rb +1 -1
- metadata +3 -3
@@ -5,15 +5,11 @@ module ContentOMatic
|
|
5
5
|
attr_accessor :status
|
6
6
|
attr_accessor :body
|
7
7
|
attr_accessor :url
|
8
|
-
attr_accessor :hpricot_doc
|
9
8
|
|
10
9
|
def initialize(url, status, body = '')
|
11
10
|
self.url = url
|
12
11
|
self.status = status.to_i
|
13
12
|
self.body = body
|
14
|
-
if success?
|
15
|
-
self.hpricot_doc = Hpricot(self.body)
|
16
|
-
end
|
17
13
|
end
|
18
14
|
|
19
15
|
def success?
|
@@ -32,10 +28,33 @@ module ContentOMatic
|
|
32
28
|
return self.body != self.html_body
|
33
29
|
end
|
34
30
|
|
35
|
-
def
|
31
|
+
def body(normalize_assets = false)
|
32
|
+
if normalize_assets
|
33
|
+
unless @__normalized_body
|
34
|
+
@__normalized_body = @body.dup
|
35
|
+
doc = Nokogiri::HTML(@__normalized_body)
|
36
|
+
{'img' => 'src', 'script' => 'src',
|
37
|
+
'link' => 'href', 'a' => 'href',
|
38
|
+
'iframe' => 'src', 'form' => 'action',
|
39
|
+
'object' => 'data'}.each do |key, attrib|
|
40
|
+
(doc/key).each do |elem|
|
41
|
+
o_link = elem[attrib]
|
42
|
+
next if o_link.blank?
|
43
|
+
elem[attrib] = normalize_asset_url(o_link)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
@__normalized_body = doc.to_s
|
47
|
+
end
|
48
|
+
return @__normalized_body
|
49
|
+
end
|
50
|
+
@body
|
51
|
+
end
|
52
|
+
|
53
|
+
def html_body(normalize_assets = false)
|
36
54
|
unless @__doc_body
|
37
|
-
|
38
|
-
@__doc_body =
|
55
|
+
doc = Nokogiri::HTML(self.body(normalize_assets))
|
56
|
+
@__doc_body = doc.at('body')
|
57
|
+
@__doc_body = @__doc_body.nil? ? self.body(normalize_assets) : @__doc_body.inner_html
|
39
58
|
end
|
40
59
|
return @__doc_body
|
41
60
|
end
|
@@ -44,6 +63,26 @@ module ContentOMatic
|
|
44
63
|
ContentOMatic::InvalidResponseError.new("URL: '#{self.url}' did not return a valid response! Status: '#{self.status}' Body: '#{self.body}'") unless self.success?
|
45
64
|
end
|
46
65
|
|
66
|
+
private
|
67
|
+
def normalize_asset_url(src)
|
68
|
+
unless src.match(/^([a-zA-Z]+):\/\//)
|
69
|
+
relative = !src.match(/^\//)
|
70
|
+
if relative
|
71
|
+
# find the outer most url
|
72
|
+
# http://www.example.com/foo/index.html => http://www.example.com/foo
|
73
|
+
base = File.dirname(self.url)
|
74
|
+
else
|
75
|
+
# absolute so find the inner most url
|
76
|
+
# http://www.example.com/index.html => http://www.example.com
|
77
|
+
base = self.url.scan(/([a-zA-Z]+:\/\/[^\/]+)/).first
|
78
|
+
end
|
79
|
+
# bad: <img src="http://www.example.com/full_page.html/image2.jpg" />
|
80
|
+
n_src = File.join(base, src)
|
81
|
+
return n_src
|
82
|
+
end
|
83
|
+
return src
|
84
|
+
end
|
85
|
+
|
47
86
|
end # Response
|
48
87
|
|
49
88
|
end # ContentOMatic
|
@@ -8,18 +8,22 @@ module ActionView
|
|
8
8
|
if options.has_key?(:print_comments)
|
9
9
|
comments = options.delete(:print_comments)
|
10
10
|
end
|
11
|
+
html_body = true
|
12
|
+
if options.has_key?(:html_body)
|
13
|
+
html_body = options.delete(:html_body)
|
14
|
+
end
|
15
|
+
normalize_assets = true
|
16
|
+
if options.has_key?(:normalize_assets)
|
17
|
+
normalize_assets = options.delete(:normalize_assets)
|
18
|
+
end
|
11
19
|
text = "<!-- Loading Content: '#{slug}' -->\n" if comments
|
12
20
|
begin
|
13
|
-
html_body = true
|
14
|
-
if options.has_key?(:html_body)
|
15
|
-
html_body = options.delete(:html_body)
|
16
|
-
end
|
17
21
|
res = ContentOMatic.get(slug, options)
|
18
22
|
if res.success?
|
19
23
|
if html_body
|
20
|
-
text << res.html_body
|
24
|
+
text << res.html_body(normalize_assets)
|
21
25
|
else
|
22
|
-
text << res.body
|
26
|
+
text << res.body(normalize_assets)
|
23
27
|
end
|
24
28
|
else
|
25
29
|
raise res.exception
|
data/lib/content_o_matic.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: markbates-content_o_matic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2.20090721162019
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- markbates
|
@@ -9,11 +9,11 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-07-
|
12
|
+
date: 2009-07-21 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: nokogiri
|
17
17
|
type: :runtime
|
18
18
|
version_requirement:
|
19
19
|
version_requirements: !ruby/object:Gem::Requirement
|