dynamic_links 0.1.0 → 0.3.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.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +37 -0
  3. data/MIT-LICENSE +21 -0
  4. data/README.md +239 -5
  5. data/app/controllers/dynamic_links/application_controller.rb +17 -1
  6. data/app/controllers/dynamic_links/redirects_controller.rb +29 -0
  7. data/app/controllers/dynamic_links/v1/short_links_controller.rb +93 -12
  8. data/app/jobs/dynamic_links/generate_short_links_job.rb +1 -1
  9. data/app/jobs/dynamic_links/shorten_url_job.rb +31 -0
  10. data/app/models/dynamic_links/client.rb +5 -0
  11. data/app/models/dynamic_links/shortened_url.rb +20 -2
  12. data/config/routes.rb +3 -0
  13. data/db/migrate/20231228165744_create_dynamic_links_clients.rb +8 -1
  14. data/db/migrate/20231228175142_create_dynamic_links_shortened_urls.rb +3 -4
  15. data/db/migrate/20240128030329_fix_citus_index.rb +34 -0
  16. data/db/migrate/20240128030419_add_unique_index_to_shortened_urls.rb +5 -0
  17. data/lib/dynamic_links/async/locker.rb +60 -0
  18. data/lib/dynamic_links/configuration.rb +95 -3
  19. data/lib/dynamic_links/error_classes.rb +6 -0
  20. data/lib/dynamic_links/logger.rb +32 -0
  21. data/lib/dynamic_links/redis_config.rb +22 -0
  22. data/lib/dynamic_links/shortener.rb +52 -0
  23. data/lib/dynamic_links/shortening_strategies/base_strategy.rb +6 -0
  24. data/lib/dynamic_links/shortening_strategies/nano_id_strategy.rb +7 -9
  25. data/lib/dynamic_links/shortening_strategies/redis_counter_strategy.rb +25 -14
  26. data/lib/dynamic_links/strategy_factory.rb +28 -1
  27. data/lib/dynamic_links/validator.rb +14 -0
  28. data/lib/dynamic_links/version.rb +1 -1
  29. data/lib/dynamic_links.rb +54 -17
  30. metadata +73 -16
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamic_links
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Saiqul Haq
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-01 00:00:00.000000000 Z
11
+ date: 2025-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '5'
20
+ - - "<="
21
+ - !ruby/object:Gem::Version
22
+ version: '8'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,20 +27,29 @@ dependencies:
24
27
  - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '5'
30
+ - - "<="
31
+ - !ruby/object:Gem::Version
32
+ version: '8'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: nanoid
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
- - - "~>"
37
+ - - ">="
32
38
  - !ruby/object:Gem::Version
33
- version: '2.0'
39
+ version: '2'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '3'
34
43
  type: :development
35
44
  prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
37
46
  requirements:
38
- - - "~>"
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '2'
50
+ - - "<"
39
51
  - !ruby/object:Gem::Version
40
- version: '2.0'
52
+ version: '3'
41
53
  - !ruby/object:Gem::Dependency
42
54
  name: redis
43
55
  requirement: !ruby/object:Gem::Requirement
@@ -45,6 +57,9 @@ dependencies:
45
57
  - - ">="
46
58
  - !ruby/object:Gem::Version
47
59
  version: '4'
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '6'
48
63
  type: :development
49
64
  prerelease: false
50
65
  version_requirements: !ruby/object:Gem::Requirement
@@ -52,34 +67,63 @@ dependencies:
52
67
  - - ">="
53
68
  - !ruby/object:Gem::Version
54
69
  version: '4'
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '6'
55
73
  - !ruby/object:Gem::Dependency
56
74
  name: annotate
57
75
  requirement: !ruby/object:Gem::Requirement
58
76
  requirements:
59
77
  - - ">="
60
78
  - !ruby/object:Gem::Version
61
- version: '0'
79
+ version: '3'
80
+ - - "<"
81
+ - !ruby/object:Gem::Version
82
+ version: '4'
62
83
  type: :development
63
84
  prerelease: false
64
85
  version_requirements: !ruby/object:Gem::Requirement
65
86
  requirements:
66
87
  - - ">="
67
88
  - !ruby/object:Gem::Version
68
- version: '0'
89
+ version: '3'
90
+ - - "<"
91
+ - !ruby/object:Gem::Version
92
+ version: '4'
93
+ - !ruby/object:Gem::Dependency
94
+ name: timecop
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "<"
98
+ - !ruby/object:Gem::Version
99
+ version: '1'
100
+ type: :development
101
+ prerelease: false
102
+ version_requirements: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - "<"
105
+ - !ruby/object:Gem::Version
106
+ version: '1'
69
107
  - !ruby/object:Gem::Dependency
70
108
  name: dotenv-rails
71
109
  requirement: !ruby/object:Gem::Requirement
72
110
  requirements:
73
111
  - - ">="
74
112
  - !ruby/object:Gem::Version
75
- version: '0'
113
+ version: '2'
114
+ - - "<"
115
+ - !ruby/object:Gem::Version
116
+ version: '3'
76
117
  type: :development
77
118
  prerelease: false
78
119
  version_requirements: !ruby/object:Gem::Requirement
79
120
  requirements:
80
121
  - - ">="
81
122
  - !ruby/object:Gem::Version
82
- version: '0'
123
+ version: '2'
124
+ - - "<"
125
+ - !ruby/object:Gem::Version
126
+ version: '3'
83
127
  description: Rails engine to shorten any URL with custom domain.
84
128
  email:
85
129
  - saiqulhaq@gmail.com
@@ -87,15 +131,19 @@ executables: []
87
131
  extensions: []
88
132
  extra_rdoc_files: []
89
133
  files:
134
+ - CHANGELOG.md
135
+ - MIT-LICENSE
90
136
  - README.md
91
137
  - Rakefile
92
138
  - app/assets/config/dynamic_links_manifest.js
93
139
  - app/assets/stylesheets/dynamic_links/application.css
94
140
  - app/controllers/dynamic_links/application_controller.rb
141
+ - app/controllers/dynamic_links/redirects_controller.rb
95
142
  - app/controllers/dynamic_links/v1/short_links_controller.rb
96
143
  - app/helpers/dynamic_links/application_helper.rb
97
144
  - app/jobs/dynamic_links/application_job.rb
98
145
  - app/jobs/dynamic_links/generate_short_links_job.rb
146
+ - app/jobs/dynamic_links/shorten_url_job.rb
99
147
  - app/mailers/dynamic_links/application_mailer.rb
100
148
  - app/models/dynamic_links/application_record.rb
101
149
  - app/models/dynamic_links/client.rb
@@ -104,9 +152,16 @@ files:
104
152
  - config/routes.rb
105
153
  - db/migrate/20231228165744_create_dynamic_links_clients.rb
106
154
  - db/migrate/20231228175142_create_dynamic_links_shortened_urls.rb
155
+ - db/migrate/20240128030329_fix_citus_index.rb
156
+ - db/migrate/20240128030419_add_unique_index_to_shortened_urls.rb
107
157
  - lib/dynamic_links.rb
158
+ - lib/dynamic_links/async/locker.rb
108
159
  - lib/dynamic_links/configuration.rb
109
160
  - lib/dynamic_links/engine.rb
161
+ - lib/dynamic_links/error_classes.rb
162
+ - lib/dynamic_links/logger.rb
163
+ - lib/dynamic_links/redis_config.rb
164
+ - lib/dynamic_links/shortener.rb
110
165
  - lib/dynamic_links/shortening_strategies/base_strategy.rb
111
166
  - lib/dynamic_links/shortening_strategies/crc32_strategy.rb
112
167
  - lib/dynamic_links/shortening_strategies/md5_strategy.rb
@@ -115,17 +170,19 @@ files:
115
170
  - lib/dynamic_links/shortening_strategies/redis_counter_strategy.rb
116
171
  - lib/dynamic_links/shortening_strategies/sha256_strategy.rb
117
172
  - lib/dynamic_links/strategy_factory.rb
173
+ - lib/dynamic_links/validator.rb
118
174
  - lib/dynamic_links/version.rb
119
175
  - lib/generators/dynamic_links/add_kgs_migration_generator.rb
120
176
  - lib/generators/dynamic_links/templates/migration_template.rb
121
177
  - lib/tasks/dynamic_links_tasks.rake
122
178
  homepage: https://saiqulhaq.id/dynamic_links
123
- licenses: []
179
+ licenses:
180
+ - MIT
124
181
  metadata:
125
182
  homepage_uri: https://saiqulhaq.id/dynamic_links
126
183
  source_code_uri: https://github.com/saiqulhaq/dynamic_links
127
184
  changelog_uri: https://github.com/saiqulhaq/dynamic_links/blob/master/CHANGELOG.md
128
- post_install_message:
185
+ post_install_message:
129
186
  rdoc_options: []
130
187
  require_paths:
131
188
  - lib
@@ -133,15 +190,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
133
190
  requirements:
134
191
  - - ">="
135
192
  - !ruby/object:Gem::Version
136
- version: '0'
193
+ version: '2.7'
137
194
  required_rubygems_version: !ruby/object:Gem::Requirement
138
195
  requirements:
139
196
  - - ">="
140
197
  - !ruby/object:Gem::Version
141
198
  version: '0'
142
199
  requirements: []
143
- rubygems_version: 3.1.2
144
- signing_key:
200
+ rubygems_version: 3.5.22
201
+ signing_key:
145
202
  specification_version: 4
146
203
  summary: Alternative to Firebase Dynamic Links feature
147
204
  test_files: []