guillotine 0.0.3 → 0.0.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.
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 = '0.0.3'
16
+ s.version = '0.0.4'
17
17
  s.date = '2011-08-17'
18
18
  s.rubyforge_project = 'guillotine'
19
19
 
@@ -4,9 +4,14 @@ module Guillotine
4
4
  module Adapters
5
5
  # Stores shortened URLs in Riak. Totally scales.
6
6
  class RiakAdapter < Adapter
7
- def initialize(bucket)
8
- @bucket = bucket
9
- @client = bucket.client
7
+ # Initializes the adapter.
8
+ #
9
+ # code_bucket - The Riak::Bucket for all code keys.
10
+ # url_bucket - The Riak::Bucket for all url keys. If this is not
11
+ # given, the code bucket is used for all keys.
12
+ def initialize(code_bucket, url_bucket = nil)
13
+ @code_bucket = code_bucket
14
+ @url_bucket = url_bucket || @code_bucket
10
15
  end
11
16
 
12
17
  # Public: Stores the shortened version of a URL.
@@ -18,10 +23,10 @@ module Guillotine
18
23
  # multiple times, this should return the same code.
19
24
  def add(url, code = nil)
20
25
  sha = Digest::SHA1.hexdigest url
21
- url_obj = @bucket.get_or_new sha, :r => 1
26
+ url_obj = @url_bucket.get_or_new sha, :r => 1
22
27
  url_obj.data || begin
23
28
  code ||= shorten url
24
- code_obj = @bucket.get_or_new code
29
+ code_obj = @code_bucket.get_or_new code
25
30
  if existing_url = code_obj.data # key exists
26
31
  raise DuplicateCodeError.new(existing_url, url, code) if existing_url != url
27
32
  end
@@ -40,7 +45,7 @@ module Guillotine
40
45
  #
41
46
  # Returns the String URL.
42
47
  def find(code)
43
- if obj = @bucket.get(code, :r => 1)
48
+ if obj = @code_bucket.get(code, :r => 1)
44
49
  obj.data
45
50
  end
46
51
  end
data/lib/guillotine.rb CHANGED
@@ -2,7 +2,7 @@ require 'base64'
2
2
  require 'digest/md5'
3
3
 
4
4
  module Guillotine
5
- VERSION = "0.0.3"
5
+ VERSION = "0.0.4"
6
6
 
7
7
  dir = File.expand_path '../guillotine', __FILE__
8
8
  autoload :App, "#{dir}/app"
@@ -11,8 +11,10 @@ begin
11
11
  #
12
12
  # http://localhost:8091/riak/guillotine-test
13
13
  class RiakAdapterTest < Guillotine::TestCase
14
- BUCKET = Riak::Client.new(:http_port => 8091)['guillotine-test']
15
- ADAPTER = Guillotine::Adapters::RiakAdapter.new BUCKET
14
+ client = Riak::Client.new(:http_port => 8091)
15
+ CODE_BUCKET = client['guillotine-code-test']
16
+ URL_BUCKET = client['guillotine-url-test']
17
+ ADAPTER = Guillotine::Adapters::RiakAdapter.new CODE_BUCKET, URL_BUCKET
16
18
 
17
19
  def setup
18
20
  @db = ADAPTER
@@ -22,24 +24,24 @@ begin
22
24
  code = @db.add 'abc'
23
25
  assert_equal 'abc', @db.find(code)
24
26
 
25
- BUCKET.delete Digest::SHA1.hexdigest('abc')
26
- BUCKET.delete code
27
+ URL_BUCKET.delete Digest::SHA1.hexdigest('abc')
28
+ CODE_BUCKET.delete code
27
29
  end
28
30
 
29
31
  def test_adding_duplicate_link_returns_same_code
30
32
  code = @db.add 'abc'
31
33
  assert_equal code, @db.add('abc')
32
34
 
33
- BUCKET.delete Digest::SHA1.hexdigest('abc')
34
- BUCKET.delete code
35
+ URL_BUCKET.delete Digest::SHA1.hexdigest('abc')
36
+ CODE_BUCKET.delete code
35
37
  end
36
38
 
37
39
  def test_adds_url_with_custom_code
38
40
  assert_equal 'code', @db.add('def', 'code')
39
41
  assert_equal 'def', @db.find('code')
40
42
 
41
- BUCKET.delete Digest::SHA1.hexdigest('def')
42
- BUCKET.delete 'code'
43
+ URL_BUCKET.delete Digest::SHA1.hexdigest('def')
44
+ CODE_BUCKET.delete 'code'
43
45
  end
44
46
 
45
47
  def test_clashing_urls_raises_error
@@ -48,9 +50,9 @@ begin
48
50
  @db.add 'def', code
49
51
  end
50
52
 
51
- BUCKET.delete Digest::SHA1.hexdigest('abc')
52
- BUCKET.delete Digest::SHA1.hexdigest('def')
53
- BUCKET.delete code
53
+ URL_BUCKET.delete Digest::SHA1.hexdigest('abc')
54
+ URL_BUCKET.delete Digest::SHA1.hexdigest('def')
55
+ CODE_BUCKET.delete code
54
56
  end
55
57
  end
56
58
  rescue LoadError
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: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-08-17 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
16
- requirement: &70155812898660 !ruby/object:Gem::Requirement
16
+ requirement: &70097847293620 !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: *70155812898660
24
+ version_requirements: *70097847293620
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rack-test
27
- requirement: &70155812898280 !ruby/object:Gem::Requirement
27
+ requirement: &70097847293240 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70155812898280
35
+ version_requirements: *70097847293240
36
36
  description: Adaptable private URL shortener
37
37
  email: technoweenie@gmail.com
38
38
  executables: []