guillotine 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
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