Codemaru
1.0.0.0
QR 코드, 모바일 랜딩 페이지, vCard 연락처 저장과 명함 디자인을 한 화면에서 제공하는 디지털 명함 서비스입니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
CardLandingPath.cs
이 파일의 문서화 페이지로 가기
1
using
Codemaru.Models
;
2
using
System.Globalization;
3
using
System.Text;
4
5
namespace
Codemaru.Services
;
6
15
public
static
class
CardLandingPath
16
{
49
public
static
string
NormalizeForTenant
(
string
slug,
CardHybridUser
user)
50
{
51
var segments =
Split
(slug);
52
if
(segments.Length == 0)
53
{
54
return
$
"card/{TenantSlug(user)}/me"
;
55
}
56
57
if
(!
string
.Equals(segments[0],
"card"
, StringComparison.OrdinalIgnoreCase))
58
{
59
return
string
.Join(
"/"
, segments.Select(
Slugify
));
60
}
61
62
if
(segments.Length == 1)
63
{
64
return
$
"card/{TenantSlug(user)}/me"
;
65
}
66
67
if
(segments.Length == 2)
68
{
69
return
$
"card/{TenantSlug(user)}/{Slugify(segments[1])}"
;
70
}
71
72
return
string
.Join(
"/"
, segments.Select(
Slugify
));
73
}
74
99
public
static
string
TenantSlug
(
CardHybridUser
user)
100
{
101
var idSlug =
Slugify
(user.Id);
102
return
string
.IsNullOrWhiteSpace(idSlug) ?
"guest"
: idSlug;
103
}
104
129
public
static
string
[]
Split
(
string
slug) =>
130
(slug ??
string
.Empty)
131
.Replace(
"\\"
,
"/"
, StringComparison.Ordinal)
132
.Split(
'/'
, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries)
133
.Where(
static
segment => segment is not
"."
and not
".."
)
134
.ToArray();
135
160
public
static
string
Slugify
(
string
value)
161
{
162
if
(
string
.IsNullOrWhiteSpace(value))
163
{
164
return
string
.Empty;
165
}
166
167
var builder =
new
StringBuilder(value.Length);
168
var previousDash =
false
;
169
170
foreach
(var rune
in
value.Trim().Normalize(NormalizationForm.FormD).EnumerateRunes())
171
{
172
if
(Rune.GetUnicodeCategory(rune) == UnicodeCategory.NonSpacingMark)
173
{
174
continue
;
175
}
176
177
if
(rune.Value is >=
'A'
and <=
'Z'
)
178
{
179
builder.Append((
char
)(rune.Value + 32));
180
previousDash =
false
;
181
}
182
else
if
(rune.Value is >=
'a'
and <=
'z'
or >=
'0'
and <=
'9'
)
183
{
184
builder.Append((
char
)rune.Value);
185
previousDash =
false
;
186
}
187
else
if
(!previousDash)
188
{
189
builder.Append(
'-'
);
190
previousDash =
true
;
191
}
192
}
193
194
return
builder.ToString().Trim(
'-'
);
195
}
196
}
Codemaru.Models
Definition
CardHistoryEntry.cs:1
Codemaru.Models.CardHybridUser
record CardHybridUser(string Id, string Email, string DisplayName, DateTime SignedInAt)
Definition
CardHybridUser.cs:19
Codemaru.Services
Definition
CardHybridCircuitSession.cs:8
Codemaru.Services.CardLandingPath
Definition
CardLandingPath.cs:16
Codemaru.Services.CardLandingPath.Split
static string[] Split(string slug)
Definition
CardLandingPath.cs:129
Codemaru.Services.CardLandingPath.Slugify
static string Slugify(string value)
Definition
CardLandingPath.cs:160
Codemaru.Services.CardLandingPath.NormalizeForTenant
static string NormalizeForTenant(string slug, CardHybridUser user)
Definition
CardLandingPath.cs:49
Codemaru.Services.CardLandingPath.TenantSlug
static string TenantSlug(CardHybridUser user)
Definition
CardLandingPath.cs:99
Services
CardLandingPath.cs
다음에 의해 생성됨 :
1.17.0