pretty_proxy 4.0.5 → 4.1.0

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pretty_proxy.rb +18 -4
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c16832f5f4322e0c4336890282344a1077fe37e5
4
- data.tar.gz: 453bdbd7bac88f01759735e08bb0b81e00b31299
3
+ metadata.gz: a4be42b0d496b149d2697367b6357dc69704dabd
4
+ data.tar.gz: b822e0d942bf5feec3e8a82bbecf8735ba01e069
5
5
  SHA512:
6
- metadata.gz: 0729ece1abf3037bbab19a7a179c5e052abc5cdf98662c2911f3b8760681664a62401554362e89bff3ea4cdc8c60dba5ae9ceaa6010ff056b96f5d5ddd7a7ef2
7
- data.tar.gz: 2726adc0e771f52f39ab891bc09e1ff0b97a7337b5412f8eb965ae6e2e6b0b40b6322cb70a0c4a496d0ec98f41744abbec6e662ba9bdfdd082c7fa7999d235d1
6
+ metadata.gz: 2b18c943cc12069dd3fed37aeaadaf0b3482bd9b876ad3e5e4e4f66fe28f7271408968b7e161804b9843cc13f37837ad2e5e62c0d702b29aa067587b7cf1de9f
7
+ data.tar.gz: de5a5dc56cf624c4be0a66d337f91546ebac270239ec1995364280abd6457b4a5b68f360ac34e2959523a54db9c5419285ad384aa4ce4c7e0639f88a4ab9aac7
@@ -86,6 +86,7 @@ class PrettyProxy < Rack::Proxy
86
86
  @proxy_path = nil
87
87
  @original_domain = nil
88
88
  @original_paths = nil
89
+ attr_accessor :ignore_html_errors
89
90
 
90
91
  # Create a new PrettyProxy instance or raise a ConfigError. Clone the arguments.
91
92
  # @param proxy_path [String] Start and end with slashes, represent the
@@ -96,14 +97,19 @@ class PrettyProxy < Rack::Proxy
96
97
  # to where the proxy map.
97
98
  # @param original_paths [String, #each] The path (or the paths) to be mapped
98
99
  # right inside the proxy_path (has to begin with slash).
100
+ # @param ignore_html_errors [TrueClass, FalseClass] If the argument of this
101
+ # parameter is true the #proxify_html try to ignore some exceptions that can
102
+ # be caused by an malformed (X)HTML and continue. Don't silence
103
+ # #{sugared_,}rewrite_response. Experimental.
99
104
  # @note See the specs {file:../spec/pretty_proxy_spec.rb} for examples and
100
105
  # complete definition of invalid args.
101
106
  # @return [PrettyProxy] a new instance
102
107
  # @raise PrettyProxy::ConfigError
103
- def initialize(proxy_path, original_domain, original_paths)
108
+ def initialize(proxy_path, original_domain, original_paths, ignore_html_errors = false)
104
109
  Utils.validate_proxy_path(proxy_path)
105
110
  Utils.validate_original_domain_and_paths(original_domain, original_paths)
106
111
 
112
+ @ignore_html_errors = ignore_html_errors
107
113
  @proxy_path = proxy_path.clone
108
114
  @original_domain = Addressable::URI.parse(original_domain.clone)
109
115
  @original_paths = Set.new
@@ -225,9 +231,17 @@ class PrettyProxy < Rack::Proxy
225
231
 
226
232
  # the href isn't a obrigatory attribute of an anchor element
227
233
  parsed_html.css('a[href]').each do | hyperlink |
228
- absolute_hyperlink = Addressable::URI.parse(base_url)
229
- .join(hyperlink['href']).to_s
230
- hyperlink['href'] = proxify_hyperlink(absolute_hyperlink, proxy_url)
234
+ begin
235
+ absolute_hyperlink = Addressable::URI.parse(base_url)
236
+ .join(hyperlink['href']).to_s
237
+ hyperlink['href'] = proxify_hyperlink(absolute_hyperlink, proxy_url)
238
+ rescue => e
239
+ # Here we catch any exception derived from StandardError and do nothing
240
+ # with it. This is a little risky, but the link in the href can be
241
+ # wrong in many ways and yet be accepted by nokogiri. So to not
242
+ # complexify the code we simply ignore when we can't proxify a link.
243
+ raise e unless @ignore_html_errors
244
+ end
231
245
  end
232
246
 
233
247
  unless base_tag
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pretty_proxy
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.5
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henrique Becker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-23 00:00:00.000000000 Z
11
+ date: 2013-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri