truncator 0.1.3 → 0.1.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a955ce36bed47fb70bdf80ca507b96eefa350305
4
- data.tar.gz: cd95f97f6ec5bf3a7be1d927fcda8b4df55daee2
3
+ metadata.gz: 569306c1d30040a36691edb14d10dd202edd90ae
4
+ data.tar.gz: 9e8a3cca376177beb1ca8bfeb4ee17776334ff0e
5
5
  SHA512:
6
- metadata.gz: 7cf9be753cd247d469b1c478296e32db838c4b7ef468f369f69ed9a0c22bfa6917883560eadffb73c0de964ed7f805cecc3946faed614c4448141d2be464b857
7
- data.tar.gz: 44f17ec44daed9292f285f68a0d0362b492e26813a27e84ad7d1c3229198326b72a6cf332e73541749f5d7798f47da2773e9c1fd1bcaa9883ee01afbce5c22a4
6
+ metadata.gz: 783a55829c621c019b81ec3b0af3a9b1c696608498bed06c3418bc0137474458e962c9765542729b8479620c48518ca8cfd8ba44e13c4988c86e989548fc94d0
7
+ data.tar.gz: f53daacef940d209fbf99866fc4df388918507f8eb5642b855904776cb90a5054bb091cc4ee99a860648b151dbcf0b09ae0861f2d2a427dd720a774a0f5d4f7a
@@ -2,6 +2,8 @@ require 'uri'
2
2
 
3
3
  module Truncator
4
4
  module ExtendedURI
5
+ class QueryParamWithoutValueError < URI::Error; end
6
+
5
7
  refine URI::Generic do
6
8
  def ordinary_hostname?
7
9
  if %w(https ftp).include?(self.scheme) || self.userinfo || self.port_defined?
@@ -28,7 +30,11 @@ module Truncator
28
30
  end
29
31
 
30
32
  def query_parameters
31
- URI.decode_www_form(self.query)
33
+ begin
34
+ URI.decode_www_form(self.query)
35
+ rescue ArgumentError # fixed in ruby 2.1.0 r40460
36
+ raise QueryParamWithoutValueError
37
+ end
32
38
  end
33
39
 
34
40
  def query_parameters=(params)
@@ -12,6 +12,7 @@ module Truncator
12
12
  begin
13
13
  uri = URI(uri)
14
14
  rescue URI::InvalidURIError
15
+ uri.sub!(/\Ahttp:\/\//, '') # remove http protocol
15
16
  return uri.truncate(truncation_length)
16
17
  end
17
18
 
@@ -46,6 +47,9 @@ module Truncator
46
47
  end
47
48
 
48
49
  uri.special_format
50
+
51
+ rescue Truncator::ExtendedURI::QueryParamWithoutValueError
52
+ return uri.to_s.truncate(truncation_length)
49
53
  end
50
54
 
51
55
  private
@@ -1,3 +1,3 @@
1
1
  module Truncator
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
@@ -173,8 +173,16 @@ describe Truncator::UrlParser do
173
173
  context 'when URL is invalid URL' do
174
174
  let(:dangerous_url) { "http://www.first.army.mil/family/contentdisplayFAFP.asp?ContentID=133&SiteID=\"><script>alert(String.fromCharCode(88,83,83))</script>" }
175
175
 
176
+ it 'should just perform a basic truncation after removing http://' do
177
+ Truncator::UrlParser.shorten_url(dangerous_url, 30).should == 'www.first.army.mil/family/c...'
178
+ end
179
+ end
180
+
181
+ context 'when URL contains query param with no value' do
182
+ let(:missing_param_value) { 'https://npiregistry.cms.hhs.gov/NPPESRegistry/DisplayProviderDetails.do?searchNpi=1629006051&city=&firstName=&orgName=&searchType=ind&state=&npi=1629006051&orgDba=&lastName=&zip' }
183
+
176
184
  it 'should just perform a basic truncation' do
177
- Truncator::UrlParser.shorten_url(dangerous_url, 30).should == 'http://www.first.army.mil/f...'
185
+ Truncator::UrlParser.shorten_url(missing_param_value).should == 'https://npiregistry.cms.hhs.gov/NPPESRe...'
178
186
  end
179
187
  end
180
188
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: truncator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - freemanoid
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-06 00:00:00.000000000 Z
11
+ date: 2013-11-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport