darjeelink 0.13.2 → 0.14.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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 96f614f236d3e7d9d03fe066719066ce2b4e1d3e5673fd0c78756bcdbfe0bbe6
|
4
|
+
data.tar.gz: b698bd03bf5d648650aa72b8056e47ee952211732dda6257837e1e2b87f21853
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 76068de4b9ac74d9bce9e2255cc9b28637dc3d32dcd8409d1b12598f14cb92508abf730b8f2a693873b24b485e7202708e9b8ad8639e88f921054f8841559421
|
7
|
+
data.tar.gz: 7f56e2b13c2f9041205e65e792a9b9afb72779d516bed82dc652379a1ff482c94f515627681e065a4116c5a8c51355029bf4b2b07faa71fcd92f3becdc2fdc55
|
data/README.md
CHANGED
@@ -101,7 +101,10 @@ Each key is a hyphenated source-medium. If you just want the source then omit t
|
|
101
101
|
Each value is a slightly more readable version for display.
|
102
102
|
|
103
103
|
## Development
|
104
|
-
|
104
|
+
|
105
|
+
Docker can be used to run tests easily - 'docker-compose up' should run the unit tests.
|
106
|
+
|
107
|
+
Another approach is to use Vagrant. `vagrant up` will create an isolated darjeelink instance.
|
105
108
|
Before you run `vagrant up`, make sure to create `.env.development` & `.env.test` files as detailed below.
|
106
109
|
|
107
110
|
### Setup development environment
|
@@ -60,7 +60,7 @@ module Darjeelink
|
|
60
60
|
begin
|
61
61
|
yield
|
62
62
|
rescue ActiveRecord::RecordNotUnique
|
63
|
-
flash[:error] = "#{
|
63
|
+
flash[:error] = "#{short_link_params[:shortened_path]} already used! Choose a different custom path"
|
64
64
|
return redirect_to(error_redirect_path)
|
65
65
|
rescue ActiveRecord::RecordInvalid => e
|
66
66
|
flash[:error] = e.message.to_s
|
@@ -1,8 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'securerandom'
|
4
|
+
|
3
5
|
module Darjeelink
|
4
6
|
class ShortLink < ApplicationRecord
|
5
|
-
|
7
|
+
# ActiveRecord::RecordNotUnique error unable to be raised in a transaction that is not committed
|
8
|
+
after_commit :generate_short_link
|
9
|
+
|
10
|
+
def self.auto_generate_shortened_path
|
11
|
+
# our current db has a case insensitive constraint so we might as well downcase here before we get to db level
|
12
|
+
pp SecureRandom.urlsafe_base64(3).downcase
|
13
|
+
end
|
6
14
|
|
7
15
|
validates_presence_of :url
|
8
16
|
validates :url, :shortened_path, format: {
|
@@ -31,26 +39,14 @@ module Darjeelink
|
|
31
39
|
def generate_short_link
|
32
40
|
return if shortened_path.present?
|
33
41
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
# with only minor modification
|
42
|
-
i = id
|
43
|
-
return ALPHABET[0] if i.zero?
|
44
|
-
|
45
|
-
generated_path = []
|
46
|
-
base = ALPHABET.length
|
47
|
-
|
48
|
-
while i.positive?
|
49
|
-
generated_path << ALPHABET[i.modulo(base)]
|
50
|
-
i /= base
|
42
|
+
begin
|
43
|
+
attempt ||= 0
|
44
|
+
update!(shortened_path: self.class.auto_generate_shortened_path)
|
45
|
+
rescue ActiveRecord::RecordNotUnique
|
46
|
+
# we only want to try 5 times to prevent infinite loop
|
47
|
+
attempt += 1
|
48
|
+
attempt <= 5 ? retry : raise
|
51
49
|
end
|
52
|
-
|
53
|
-
generated_path.join.reverse
|
54
50
|
end
|
55
51
|
end
|
56
52
|
end
|
data/lib/darjeelink/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: darjeelink
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Hulme
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: omniauth
|
@@ -253,14 +253,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
253
253
|
requirements:
|
254
254
|
- - ">="
|
255
255
|
- !ruby/object:Gem::Version
|
256
|
-
version:
|
256
|
+
version: 3.1.2
|
257
257
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
258
258
|
requirements:
|
259
259
|
- - ">="
|
260
260
|
- !ruby/object:Gem::Version
|
261
261
|
version: '0'
|
262
262
|
requirements: []
|
263
|
-
rubygems_version: 3.3.
|
263
|
+
rubygems_version: 3.3.7
|
264
264
|
signing_key:
|
265
265
|
specification_version: 4
|
266
266
|
summary: URL Shortener
|