guillotine 1.0.5 → 1.0.6

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/guillotine.gemspec CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
13
13
  ## If your rubyforge_project name is different, then edit it and comment out
14
14
  ## the sub! line in the Rakefile
15
15
  s.name = 'guillotine'
16
- s.version = '1.0.5'
16
+ s.version = '1.0.6'
17
17
  s.date = '2011-11-10'
18
18
  s.rubyforge_project = 'guillotine'
19
19
 
@@ -25,8 +25,8 @@ module Guillotine
25
25
  # Returns the unique String code for the URL. If the URL is added
26
26
  # multiple times, this should return the same code.
27
27
  def add(url, code = nil)
28
- sha = url_key url
29
- url_obj = @url_bucket.get_or_new sha, :r => 1
28
+ sha = url_key url
29
+ url_obj = @url_bucket.get_or_new sha, :r => 1
30
30
  if url_obj.raw_data
31
31
  fix_url_object(url_obj)
32
32
  code = url_obj.data
@@ -37,7 +37,7 @@ module Guillotine
37
37
  code_obj.content_type = url_obj.content_type = PLAIN
38
38
 
39
39
  if existing_url = code_obj.data # key exists
40
- raise DuplicateCodeError.new(existing_url, url, code) if existing_url != url
40
+ raise DuplicateCodeError.new(existing_url, url, code) if url_key(existing_url) != sha
41
41
  end
42
42
 
43
43
  if !url_obj.data # unsaved
@@ -110,7 +110,7 @@ module Guillotine
110
110
  end
111
111
 
112
112
  # Fixes a bug in Guillotine 1.0.2 where the content type on url objects
113
- # were not being set. The ruby Riak::Client defaults to JSON, so
113
+ # was not being set. The ruby Riak::Client defaults to JSON, so
114
114
  # strings were being saved as "somecode", which is unparseable by JSON.
115
115
  def fix_url_object(obj)
116
116
  if obj.content_type != PLAIN
@@ -122,7 +122,7 @@ module Guillotine
122
122
  end
123
123
 
124
124
  def url_key(url)
125
- Digest::SHA1.hexdigest url
125
+ Digest::SHA1.hexdigest url.downcase
126
126
  end
127
127
  end
128
128
  end
@@ -14,8 +14,8 @@ module Guillotine
14
14
  # Returns the unique String code for the URL. If the URL is added
15
15
  # multiple times, this should return the same code.
16
16
  def add(url, code = nil)
17
- if row = @table.select(:code).where(:url => url).first
18
- row[:code]
17
+ if existing = code_for(url)
18
+ existing
19
19
  else
20
20
  code ||= shorten url
21
21
  begin
data/lib/guillotine.rb CHANGED
@@ -3,7 +3,7 @@ require 'digest/md5'
3
3
  require 'addressable/uri'
4
4
 
5
5
  module Guillotine
6
- VERSION = "1.0.5"
6
+ VERSION = "1.0.6"
7
7
 
8
8
  dir = File.expand_path '../guillotine', __FILE__
9
9
  autoload :App, "#{dir}/app"
@@ -51,7 +51,6 @@ module Guillotine
51
51
  # Returns an Addressable::URI.
52
52
  def parse_url(url)
53
53
  url.gsub! /\s/, ''
54
- url.downcase!
55
54
  Addressable::URI.parse url
56
55
  end
57
56
  end
data/test/app_test.rb CHANGED
@@ -22,7 +22,7 @@ class AppTest < Guillotine::TestCase
22
22
  url = 'http://github.com'
23
23
  code = ADAPTER.add url
24
24
 
25
- post '/', :url => url.upcase
25
+ post '/', :url => url
26
26
  assert code_url = last_response.headers['Location']
27
27
  assert_equal code, code_url.gsub(/.*\//, '')
28
28
  end
@@ -29,8 +29,8 @@ begin
29
29
  end
30
30
 
31
31
  def test_adding_duplicate_link_returns_same_code
32
- code = @db.add 'abc'
33
- assert_equal code, @db.add('abc')
32
+ code = @db.add 'Abc'
33
+ assert_equal code, @db.add('ABc')
34
34
 
35
35
  URL_BUCKET.delete Digest::SHA1.hexdigest('abc')
36
36
  CODE_BUCKET.delete code
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guillotine
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-11-10 00:00:00.000000000 Z
12
+ date: 2011-11-10 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
16
- requirement: &70237903245740 !ruby/object:Gem::Requirement
16
+ requirement: &70184602702960 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.2.6
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70237903245740
24
+ version_requirements: *70184602702960
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: addressable
27
- requirement: &70237903244540 !ruby/object:Gem::Requirement
27
+ requirement: &70184602702360 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 2.2.6
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70237903244540
35
+ version_requirements: *70184602702360
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rack-test
38
- requirement: &70237903244140 !ruby/object:Gem::Requirement
38
+ requirement: &70184602701980 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70237903244140
46
+ version_requirements: *70184602701980
47
47
  description: Adaptable private URL shortener
48
48
  email: technoweenie@gmail.com
49
49
  executables: []
@@ -88,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
88
88
  version: '0'
89
89
  requirements: []
90
90
  rubyforge_project: guillotine
91
- rubygems_version: 1.8.11
91
+ rubygems_version: 1.8.10
92
92
  signing_key:
93
93
  specification_version: 2
94
94
  summary: Adaptable private URL shortener