yiffspace 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.
- checksums.yaml +4 -4
- data/lib/yiffspace/configuration.rb +21 -4
- data/lib/yiffspace/include/all.rb +2 -0
- data/lib/yiffspace/include/user_like.rb +5 -0
- data/lib/yiffspace/include/user_resolvable.rb +5 -0
- data/lib/yiffspace/utils/user_like.rb +8 -0
- data/lib/yiffspace/utils/user_resolvable.rb +58 -0
- data/lib/yiffspace/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 545c4eff4fa91bac9206bf942d654ac16ad84f4788033970f7c1596e218b3cf3
|
|
4
|
+
data.tar.gz: 105eb1b229fa13772e12cf0f1d0def0148fbd158d4e05edd6c8766eeef865f09
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 82794b3e23644b0b84ff2312debc37b55cf48930714773f0f770a3ad0a2df787b8fb4bc2bca9ff91239c07c5c15835f09a87ef9135ef6a0a82b1a5a0749e71d2
|
|
7
|
+
data.tar.gz: 78431124a99c4b7f97afec204db10b3af3c8145b9cbf68545bebb100cf225ae3d0ce8496c964322bcaa263db3c3f9cb64b774e02210362bc328fc268ac48bd59
|
|
@@ -11,11 +11,15 @@ module YiffSpace
|
|
|
11
11
|
|
|
12
12
|
# The application's User model class. Used by Utils::Current, Search::QueryDSL, etc.
|
|
13
13
|
# Falls back to ::User at call time when nil.
|
|
14
|
-
|
|
14
|
+
attr_writer(:user_class)
|
|
15
|
+
|
|
16
|
+
# The application's User model class. Used by Utils::UserResolvable
|
|
17
|
+
# Falls back to ::UserLike at call time when nil.
|
|
18
|
+
attr_writer(:user_like_class)
|
|
15
19
|
|
|
16
20
|
# The application's UserResolvable class. Used by Utils::Current.
|
|
17
21
|
# Falls back to ::UserResolvable at call time when nil.
|
|
18
|
-
|
|
22
|
+
attr_writer(:user_resolvable_class)
|
|
19
23
|
|
|
20
24
|
# The CurrentAttributes class used to access the current user in model concerns.
|
|
21
25
|
# Defaults to YiffSpace::Utils::Current.
|
|
@@ -39,12 +43,25 @@ module YiffSpace
|
|
|
39
43
|
@max_multi_count = -> { 100 }
|
|
40
44
|
@redis_url = -> {}
|
|
41
45
|
@user_class = nil
|
|
46
|
+
@user_like_class = nil
|
|
42
47
|
@user_resolvable_class = nil
|
|
43
48
|
@current_class = nil
|
|
44
49
|
@default_ip_address = "127.0.0.1"
|
|
45
50
|
@anonymous_user_name = -> { "Anonymous" }
|
|
46
51
|
end
|
|
47
52
|
|
|
53
|
+
def user_class
|
|
54
|
+
@user_class || ::User
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def user_like_class
|
|
58
|
+
@user_like_class || Utils::UserLike
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def user_resolable_class
|
|
62
|
+
@user_resolvable_class || Utils::UserResolvable
|
|
63
|
+
end
|
|
64
|
+
|
|
48
65
|
# Returns the configured current class, defaulting to YiffSpace::Utils::Current.
|
|
49
66
|
def current_class
|
|
50
67
|
@current_class || Utils::Current
|
|
@@ -52,12 +69,12 @@ module YiffSpace
|
|
|
52
69
|
|
|
53
70
|
# Lazily built: calls user_class (or ::User) at invocation time, not config time.
|
|
54
71
|
def anonymous_user_getter
|
|
55
|
-
@anonymous_user_getter ||= -> {
|
|
72
|
+
@anonymous_user_getter ||= -> { user_class.anonymous }
|
|
56
73
|
end
|
|
57
74
|
|
|
58
75
|
# Lazily built: calls user_class (or ::User) at invocation time, not config time.
|
|
59
76
|
def system_user_getter
|
|
60
|
-
@system_user_getter ||= -> {
|
|
77
|
+
@system_user_getter ||= -> { user_class.system }
|
|
61
78
|
end
|
|
62
79
|
|
|
63
80
|
def redis_url=(value)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module YiffSpace
|
|
4
|
+
module Utils
|
|
5
|
+
class UserResolvable
|
|
6
|
+
attr_reader(:user, :ip_addr)
|
|
7
|
+
|
|
8
|
+
def initialize(user, ip_addr, validate: true)
|
|
9
|
+
if user.is_a?(UserResolvable)
|
|
10
|
+
TraceLogger.warn("UserResolvable", "Unexpectedly received UserResolvable for user argument")
|
|
11
|
+
user = recursive_resolve(user)
|
|
12
|
+
end
|
|
13
|
+
@user = user
|
|
14
|
+
ip_addr = ip_addr.to_s if ip_addr.is_a?(IPAddr)
|
|
15
|
+
@ip_addr = ip_addr
|
|
16
|
+
return unless validate
|
|
17
|
+
raise(ArgumentError, "Expected User for user argument, got #{user.inspect} (#{user.class.name})") unless user.is_a?(YiffSpace.config.user_class)
|
|
18
|
+
raise(ArgumentError, "Expected String for ip_addr argument, got #{ip_addr.inspect} (#{ip_addr.class.name})") unless ip_addr.is_a?(String)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
alias resolve user
|
|
22
|
+
|
|
23
|
+
def resolvable(ip_addr = nil)
|
|
24
|
+
@ip_addr = ip_addr if ip_addr.present?
|
|
25
|
+
self
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
delegate(:recursive_resolve, to: :class)
|
|
29
|
+
delegate(:to_param, :serializable_hash, :as_json, :to_json, to: :user)
|
|
30
|
+
delegate_missing_to(:user, allow_nil: true)
|
|
31
|
+
|
|
32
|
+
# needed to allow passing the class around when creating records, active record attempts to call several methods on the provided record's class
|
|
33
|
+
class << self
|
|
34
|
+
delegate_missing_to(:User, allow_nil: false)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def self.recursive_resolve(resolvable)
|
|
38
|
+
result = resolvable
|
|
39
|
+
result = result.resolve while result.is_a?(UserResolvable)
|
|
40
|
+
result
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def ==(other)
|
|
44
|
+
return other == user if other.is_a?(YiffSpace.config.user_class)
|
|
45
|
+
|
|
46
|
+
other.is_a?(UserResolvable) && user == other.user
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def ===(other)
|
|
50
|
+
(other == YiffSpace.config.user_like_class && user.is_a?(YiffSpace.config.user_class)) || super
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def is_a?(other)
|
|
54
|
+
(other == YiffSpace.config.user_like_class && user.is_a?(YiffSpace.config.user_class)) || super
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
data/lib/yiffspace/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: yiffspace
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Donovan_DMC
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2026-05-
|
|
10
|
+
date: 2026-05-29 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: abbrev
|
|
@@ -195,6 +195,8 @@ files:
|
|
|
195
195
|
- lib/yiffspace/include/table_builder.rb
|
|
196
196
|
- lib/yiffspace/include/trace_logger.rb
|
|
197
197
|
- lib/yiffspace/include/user_attribute.rb
|
|
198
|
+
- lib/yiffspace/include/user_like.rb
|
|
199
|
+
- lib/yiffspace/include/user_resolvable.rb
|
|
198
200
|
- lib/yiffspace/search/query_builder.rb
|
|
199
201
|
- lib/yiffspace/search/query_dsl.rb
|
|
200
202
|
- lib/yiffspace/search/query_helper.rb
|
|
@@ -211,6 +213,8 @@ files:
|
|
|
211
213
|
- lib/yiffspace/utils/table_builder.rb
|
|
212
214
|
- lib/yiffspace/utils/trace_logger.rb
|
|
213
215
|
- lib/yiffspace/utils/user_attribute.rb
|
|
216
|
+
- lib/yiffspace/utils/user_like.rb
|
|
217
|
+
- lib/yiffspace/utils/user_resolvable.rb
|
|
214
218
|
- lib/yiffspace/version.rb
|
|
215
219
|
homepage: https://yiff.space
|
|
216
220
|
licenses:
|