guillotine 1.3.0 → 1.4.0

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