guillotine 1.3.0 → 1.4.0

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,8 +13,8 @@ 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.3.0'
17
- s.date = '2012-08-19'
16
+ s.version = '1.4.0'
17
+ s.date = '2012-12-30'
18
18
  s.rubyforge_project = 'guillotine'
19
19
 
20
20
  ## Make sure your summary is short. The description may be as long
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.3.0"
6
+ VERSION = "1.4.0"
7
7
 
8
8
  class Error < StandardError
9
9
  end
@@ -60,6 +60,15 @@ module Guillotine
60
60
  Url.where(:url => url).delete_all
61
61
  end
62
62
 
63
+ # Public: Removes the assigned short code.
64
+ #
65
+ # code - The String code to remove.
66
+ #
67
+ # Returns nothing.
68
+ def clear_code(code)
69
+ Url.where(:code => code).delete_all
70
+ end
71
+
63
72
  def setup
64
73
  conn = Url.connection
65
74
  conn.create_table :urls do |t|
@@ -59,9 +59,24 @@ module Guillotine
59
59
  # Returns nothing.
60
60
  def clear(url)
61
61
  if code = code_for(url)
62
- @cassandra.remove("urls", url)
63
- @cassandra.remove("codes", code)
62
+ purge(code, url)
64
63
  end
65
64
  end
65
+
66
+ # Public: Removes the assigned short code.
67
+ #
68
+ # code - The String code to remove.
69
+ #
70
+ # Returns nothing.
71
+ def clear_code(url)
72
+ if url = find(code)
73
+ purge(code, url)
74
+ end
75
+ end
76
+
77
+ def purge(code, url)
78
+ @cassandra.remove("urls", url)
79
+ @cassandra.remove("codes", code)
80
+ end
66
81
  end
67
82
  end
@@ -58,6 +58,17 @@ module Guillotine
58
58
  end
59
59
  end
60
60
 
61
+ # Public: Removes the assigned short code.
62
+ #
63
+ # code - The String code to remove.
64
+ #
65
+ # Returns nothing.
66
+ def clear_code(code)
67
+ if url = @hash.delete(code)
68
+ @urls.delete(url)
69
+ end
70
+ end
71
+
61
72
  def reset
62
73
  @hash = {}
63
74
  @urls = {}
@@ -53,6 +53,15 @@ module Guillotine
53
53
  @collection.remove(:url => url)
54
54
  end
55
55
 
56
+ # Public: Removes the assigned short code.
57
+ #
58
+ # code - The String code to remove.
59
+ #
60
+ # Returns nothing.
61
+ def clear_code(code)
62
+ @collection.remove(:_id => code)
63
+ end
64
+
56
65
  def select(field, query)
57
66
  @collection.find_one(query, {:transformer => @transformers[field]})
58
67
  end
@@ -55,11 +55,26 @@ module Guillotine
55
55
  # Returns nothing.
56
56
  def clear(url)
57
57
  if code = @redis.get(url_key(url))
58
- @redis.del url_key(url)
59
- @redis.del code_key(code)
58
+ purge(code, url)
60
59
  end
61
60
  end
62
61
 
62
+ # Public: Removes the assigned short code.
63
+ #
64
+ # code - The String code to remove.
65
+ #
66
+ # Returns nothing.
67
+ def clear_code(code)
68
+ if url = find(code)
69
+ purge(code, url)
70
+ end
71
+ end
72
+
73
+ def purge(code, url)
74
+ @redis.del url_key(url)
75
+ @redis.del code_key(code)
76
+ end
77
+
63
78
  def code_key(code)
64
79
  "guillotine:hash:#{code}"
65
80
  end
@@ -84,6 +84,18 @@ module Guillotine
84
84
  end
85
85
  end
86
86
 
87
+ # Public: Removes the assigned short code.
88
+ #
89
+ # code - The String code to remove.
90
+ #
91
+ # Returns nothing.
92
+ def clear_code(code)
93
+ if url_obj = url_object(code)
94
+ @url_bucket.delete url_key(url_obj.data)
95
+ @code_bucket.delete url_obj.key
96
+ end
97
+ end
98
+
87
99
  # Retrieves a URL riak value from the code.
88
100
  #
89
101
  # code - The String code to lookup the URL.
@@ -58,6 +58,15 @@ module Guillotine
58
58
  @table.where(:url => url).delete
59
59
  end
60
60
 
61
+ # Public: Removes the assigned short code.
62
+ #
63
+ # code - The String code to remove.
64
+ #
65
+ # Returns nothing.
66
+ def clear_code(code)
67
+ @table.where(:code => code).delete
68
+ end
69
+
61
70
  def setup
62
71
  @db.create_table :urls do
63
72
  String :url
@@ -85,7 +85,7 @@ module Guillotine
85
85
 
86
86
  begin
87
87
  if code = @db.add(url.to_s, code, @options)
88
- [201, {"Location" => code}]
88
+ [201, {"Location" => code}, url]
89
89
  else
90
90
  [422, {}, "Unable to shorten #{url}"]
91
91
  end
metadata CHANGED
@@ -1,71 +1,70 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: guillotine
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 1
7
- - 3
8
- - 0
9
- version: 1.3.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.4.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Rick Olson
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2012-08-19 00:00:00 -07:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- type: :runtime
22
- version_requirements: &id001 !ruby/object:Gem::Requirement
23
- requirements:
12
+ date: 2012-12-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: sinatra
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
24
19
  - - ~>
25
- - !ruby/object:Gem::Version
26
- segments:
27
- - 1
28
- - 2
29
- - 6
20
+ - !ruby/object:Gem::Version
30
21
  version: 1.2.6
31
- name: sinatra
32
- requirement: *id001
33
- prerelease: false
34
- - !ruby/object:Gem::Dependency
35
22
  type: :runtime
36
- version_requirements: &id002 !ruby/object:Gem::Requirement
37
- requirements:
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
38
27
  - - ~>
39
- - !ruby/object:Gem::Version
40
- segments:
41
- - 2
42
- - 2
43
- - 6
44
- version: 2.2.6
28
+ - !ruby/object:Gem::Version
29
+ version: 1.2.6
30
+ - !ruby/object:Gem::Dependency
45
31
  name: addressable
46
- requirement: *id002
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 2.2.6
38
+ type: :runtime
47
39
  prerelease: false
48
- - !ruby/object:Gem::Dependency
49
- type: :development
50
- version_requirements: &id003 !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- segments:
55
- - 0
56
- version: "0"
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 2.2.6
46
+ - !ruby/object:Gem::Dependency
57
47
  name: rack-test
58
- requirement: *id003
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
59
55
  prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
60
62
  description: Adaptable private URL shortener
61
63
  email: technoweenie@gmail.com
62
64
  executables: []
63
-
64
65
  extensions: []
65
-
66
66
  extra_rdoc_files: []
67
-
68
- files:
67
+ files:
69
68
  - CHANGELOG.md
70
69
  - Gemfile
71
70
  - LICENSE
@@ -98,37 +97,31 @@ files:
98
97
  - test/riak_adapter_test.rb
99
98
  - test/sequel_adapter_test.rb
100
99
  - test/service_test.rb
101
- has_rdoc: true
102
100
  homepage: https://github.com/technoweenie/gitio
103
101
  licenses: []
104
-
105
102
  post_install_message:
106
103
  rdoc_options: []
107
-
108
- require_paths:
104
+ require_paths:
109
105
  - lib
110
- required_ruby_version: !ruby/object:Gem::Requirement
111
- requirements:
112
- - - ">="
113
- - !ruby/object:Gem::Version
114
- segments:
115
- - 0
116
- version: "0"
117
- required_rubygems_version: !ruby/object:Gem::Requirement
118
- requirements:
119
- - - ">="
120
- - !ruby/object:Gem::Version
121
- segments:
122
- - 0
123
- version: "0"
106
+ required_ruby_version: !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ required_rubygems_version: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
124
118
  requirements: []
125
-
126
119
  rubyforge_project: guillotine
127
- rubygems_version: 1.3.6
120
+ rubygems_version: 1.8.23
128
121
  signing_key:
129
122
  specification_version: 2
130
123
  summary: Adaptable private URL shortener
131
- test_files:
124
+ test_files:
132
125
  - test/active_record_adapter_test.rb
133
126
  - test/app_test.rb
134
127
  - test/cassandra_adapter_test.rb
@@ -140,3 +133,4 @@ test_files:
140
133
  - test/riak_adapter_test.rb
141
134
  - test/sequel_adapter_test.rb
142
135
  - test/service_test.rb
136
+ has_rdoc: