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.
|
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
|
29
|
-
url_obj
|
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 !=
|
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
|
-
#
|
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
|
18
|
-
|
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.
|
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
|
25
|
+
post '/', :url => url
|
26
26
|
assert code_url = last_response.headers['Location']
|
27
27
|
assert_equal code, code_url.gsub(/.*\//, '')
|
28
28
|
end
|
data/test/riak_adapter_test.rb
CHANGED
@@ -29,8 +29,8 @@ begin
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def test_adding_duplicate_link_returns_same_code
|
32
|
-
code = @db.add '
|
33
|
-
assert_equal code, @db.add('
|
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.
|
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.
|
12
|
+
date: 2011-11-10 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sinatra
|
16
|
-
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: *
|
24
|
+
version_requirements: *70184602702960
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: addressable
|
27
|
-
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: *
|
35
|
+
version_requirements: *70184602702360
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rack-test
|
38
|
-
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: *
|
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.
|
91
|
+
rubygems_version: 1.8.10
|
92
92
|
signing_key:
|
93
93
|
specification_version: 2
|
94
94
|
summary: Adaptable private URL shortener
|