XFEExtension
【DLL】XFE各类拓展是一个C#的DLL库,旨在优化C#代码中常用语句的使用,并提供更简洁的访问方式,同时提供Xunit测试框架,快速搭建服务器/客户端,免费ChatGPTAPI接口,免费通讯服务器,XFE下载器,新增格式等
关注
0
Fork
0
Star
0
返回提交历史
Modified
XFE各类拓展/CyberComm.cs
+18
-18
Modified
XFE各类拓展/StringExtension.cs
+14
-14
Modified
XFE各类拓展/XFEChatGPT.cs
+28
-28
XFEstudio/XFEExtension
修正多处格式错误 修正多处拼写错误
454a9f7
代码差异
3 个文件
+60
-60
@@ -52,7 +52,7 @@ namespace XFE各类拓展.CyberComm
52
52
/// <summary>
53
53
/// 自动重连最大次数
54
54
/// </summary>
55
public int ReconncetMaxTimes { get; set; } = -1;
55
public int ReconnectMaxTimes { get; set; } = -1;
56
56
/// <summary>
57
57
/// 自动重连尝试间隔
58
58
/// </summary>
@@ -60,7 +60,7 @@ namespace XFE各类拓展.CyberComm
60
60
/// <summary>
61
61
/// 是否自动接收完整消息
62
62
/// </summary>
63
public bool AutoRecevieCompletedMessage { get; set; }
63
public bool AutoReceiveCompletedMessage { get; set; }
64
64
/// <summary>
65
65
/// 收到消息时触发
66
66
/// </summary>
@@ -102,7 +102,7 @@ namespace XFE各类拓展.CyberComm
102
102
IsConnected = false;
103
103
if (AutoReconnect)
104
104
{
105
if (reconnectTimes <= ReconncetMaxTimes || ReconncetMaxTimes == -1)
105
if (reconnectTimes <= ReconnectMaxTimes || ReconnectMaxTimes == -1)
106
106
{
107
107
Thread.Sleep(ReconnectTryDelay);
108
108
goto StartConnect;
@@ -126,7 +126,7 @@ namespace XFE各类拓展.CyberComm
126
126
{
127
127
string receivedMessage = Encoding.UTF8.GetString(receiveBuffer, 0, receiveResult.Count);
128
128
//ReceiveCompletedMessageByUsingWhile
129
if (AutoRecevieCompletedMessage)
129
if (AutoReceiveCompletedMessage)
130
130
{
131
131
while (!receiveResult.EndOfMessage)
132
132
{
@@ -141,7 +141,7 @@ namespace XFE各类拓展.CyberComm
141
141
var bufferList = new List<byte>();
142
142
bufferList.AddRange(receiveBuffer.Take(receiveResult.Count));
143
143
//ReceiveCompletedMessageByUsingWhile
144
if (AutoRecevieCompletedMessage)
144
if (AutoReceiveCompletedMessage)
145
145
{
146
146
while (!receiveResult.EndOfMessage)
147
147
{
@@ -169,7 +169,7 @@ namespace XFE各类拓展.CyberComm
169
169
if (AutoReconnect)
170
170
{
171
171
Thread.Sleep(ReconnectTryDelay);
172
if (reconnectTimes <= ReconncetMaxTimes || ReconncetMaxTimes == -1)
172
if (reconnectTimes <= ReconnectMaxTimes || ReconnectMaxTimes == -1)
173
173
goto StartConnect;
174
174
}
175
175
}
@@ -232,14 +232,14 @@ namespace XFE各类拓展.CyberComm
232
232
/// <summary>
233
233
/// CyberComm客户端
234
234
/// </summary>
235
/// <param name="ServerURL">WS服务器地址</param>
236
/// <param name="AutoReconnect">是否自动重连</param>
237
/// <param name="AutoRecevieCompletedMessage">是否自动接收完整消息</param>
238
public CyberCommClient(string ServerURL, bool AutoReconnect = true, bool AutoRecevieCompletedMessage = true)
235
/// <param name="serverURL">WS服务器地址</param>
236
/// <param name="autoReconnect">是否自动重连</param>
237
/// <param name="autoReceiveCompletedMessage">是否自动接收完整消息</param>
238
public CyberCommClient(string serverURL, bool autoReconnect = true, bool autoReceiveCompletedMessage = true)
239
239
{
240
this.AutoReconnect = AutoReconnect;
241
this.AutoRecevieCompletedMessage = AutoRecevieCompletedMessage;
242
this.ServerURL = ServerURL;
240
this.AutoReconnect = autoReconnect;
241
this.AutoReceiveCompletedMessage = autoReceiveCompletedMessage;
242
this.ServerURL = serverURL;
243
243
}
244
244
/// <summary>
245
245
/// CyberComm客户端
@@ -257,7 +257,7 @@ namespace XFE各类拓展.CyberComm
257
257
/// <summary>
258
258
/// 是否自动接收完整消息
259
259
/// </summary>
260
public bool AutoRecevieCompletedMessage { get; set; }
260
public bool AutoReceiveCompletedMessage { get; set; }
261
261
/// <summary>
262
262
/// 收到消息时触发
263
263
/// </summary>
@@ -322,7 +322,7 @@ namespace XFE各类拓展.CyberComm
322
322
{
323
323
string receivedMessage = Encoding.UTF8.GetString(receiveBuffer, 0, receiveResult.Count);
324
324
//ReceiveCompletedMessageByUsingWhile
325
if (AutoRecevieCompletedMessage)
325
if (AutoReceiveCompletedMessage)
326
326
{
327
327
while (!receiveResult.EndOfMessage)
328
328
{
@@ -335,7 +335,7 @@ namespace XFE各类拓展.CyberComm
335
335
if (receiveResult.MessageType == WebSocketMessageType.Binary)
336
336
{
337
337
//ReceiveCompletedMessageByUsingWhile
338
if (AutoRecevieCompletedMessage)
338
if (AutoReceiveCompletedMessage)
339
339
{
340
340
var bufferList = new List<byte>();
341
341
bufferList.AddRange(receiveBuffer.Take(receiveResult.Count));
@@ -372,7 +372,7 @@ namespace XFE各类拓展.CyberComm
372
372
public CyberCommServer(int ListenPort, bool AutoReceiveCompletedMessage = true)
373
373
{
374
374
this.serverURL = $"http://*:{ListenPort}/";
375
this.AutoRecevieCompletedMessage = AutoReceiveCompletedMessage;
375
this.AutoReceiveCompletedMessage = AutoReceiveCompletedMessage;
376
376
}
377
377
/// <summary>
378
378
/// CyberComm服务器,使用URL创建
@@ -382,7 +382,7 @@ namespace XFE各类拓展.CyberComm
382
382
public CyberCommServer(string ServerURL, bool AutoReceiveCompletedMessage = true)
383
383
{
384
384
this.serverURL = ServerURL;
385
this.AutoRecevieCompletedMessage = AutoReceiveCompletedMessage;
385
this.AutoReceiveCompletedMessage = AutoReceiveCompletedMessage;
386
386
}
387
387
#endregion
388
388
}
@@ -16,24 +16,24 @@ namespace XFE各类拓展.StringExtension
16
16
/// 根据给定的开头和末尾返回查找到的第一个匹配的字符串(全匹配)
17
17
/// </summary>
18
18
/// <param name="str">被匹配的字符串</param>
19
/// <param name="beginstr">匹配开头字符串</param>
20
/// <param name="endstr">匹配结尾字符串</param>
19
/// <param name="beginString">匹配开头字符串</param>
20
/// <param name="endString">匹配结尾字符串</param>
21
21
/// <returns>返回夹在开头和末尾中间的字符串</returns>
22
public static string GetStringBetweenTwoString(this string str, string beginstr, string endstr)
22
public static string GetStringBetweenTwoString(this string str, string beginString, string endString)
23
23
{
24
24
if (str != string.Empty && str != null)
25
25
{
26
int beginindex = str.IndexOf(beginstr, StringComparison.Ordinal);
27
if (beginindex == -1 || beginindex == 0)
26
int beginIndex = str.IndexOf(beginString, StringComparison.Ordinal);
27
if (beginIndex == -1 || beginIndex == 0)
28
28
{
29
29
return string.Empty;
30
30
}
31
int endindex = str.IndexOf(endstr, beginindex, StringComparison.Ordinal);
32
if (endindex == -1 || endindex == 0)
31
int endIndex = str.IndexOf(endString, beginIndex, StringComparison.Ordinal);
32
if (endIndex == -1 || endIndex == 0)
33
33
{
34
34
return string.Empty;
35
35
}
36
return str.Substring(beginindex + beginstr.Length, endindex - beginindex - beginstr.Length);
36
return str.Substring(beginIndex + beginString.Length, endIndex - beginIndex - beginString.Length);
37
37
}
38
38
else
39
39
{
@@ -78,11 +78,11 @@ namespace XFE各类拓展.StringExtension
78
78
/// <summary>
79
79
/// 判断字符串是否为邮政编码
80
80
/// </summary>
81
/// <param name="str_postalcode"></param>
81
/// <param name="postalCode"></param>
82
82
/// <returns></returns>
83
public static bool IsPostalCode(this string str_postalcode)
83
public static bool IsPostalCode(this string postalCode)
84
84
{
85
return Regex.IsMatch(str_postalcode, @"^\d{6}$");
85
return Regex.IsMatch(postalCode, @"^\d{6}$");
86
86
}
87
87
/// <summary>
88
88
/// 判断字符串是否为数字
@@ -96,11 +96,11 @@ namespace XFE各类拓展.StringExtension
96
96
/// <summary>
97
97
/// 判断字符串是否为身份证件号
98
98
/// </summary>
99
/// <param name="str_idcard"></param>
99
/// <param name="Id"></param>
100
100
/// <returns></returns>
101
public static bool IsIDcard(this string str_idcard)
101
public static bool IsIdCard(this string Id)
102
102
{
103
return Regex.IsMatch(str_idcard, @"(^\d{18}$)|(^\d{15}$)");
103
return Regex.IsMatch(Id, @"(^\d{18}$)|(^\d{15}$)");
104
104
}
105
105
/// <summary>
106
106
/// 判断字符串是否为邮箱地址
@@ -443,58 +443,58 @@ namespace XFE各类拓展.XFEChatGPT
443
443
{
444
444
#region 读取消息
445
445
byte[] buffer = new byte[1024];
446
WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);//接收消息
447
string NowreceivedMessage = Encoding.UTF8.GetString(buffer, 0, result.Count);//将消息转换为字符串
446
var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);//接收消息
447
var nowReceivedMessage = Encoding.UTF8.GetString(buffer, 0, result.Count);//将消息转换为字符串
448
448
#endregion
449
449
if (XFEComProtocol == XFEComProtocol.XFEFAST)
450
450
{
451
if (NowreceivedMessage == "[DONE]")
451
if (nowReceivedMessage == "[DONE]")
452
452
{
453
453
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs("[XFEDONE]", messageId, GenerateState.End));
454
454
break;
455
455
}
456
else if (NowreceivedMessage.Contains("[XFERemoteAPIError]"))
456
else if (nowReceivedMessage.Contains("[XFERemoteAPIError]"))
457
457
{
458
458
if (!isStarted)
459
459
{
460
460
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs("[XFESTART]", messageId, GenerateState.Start));
461
461
}
462
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs(NowreceivedMessage.Replace("[XFERemoteAPIError]", string.Empty), messageId, GenerateState.Error));
462
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs(nowReceivedMessage.Replace("[XFERemoteAPIError]", string.Empty), messageId, GenerateState.Error));
463
463
}
464
else if (NowreceivedMessage == "[XFE]")
464
else if (nowReceivedMessage == "[XFE]")
465
465
{
466
466
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs("[XFESTART]", messageId, GenerateState.Start));
467
467
}
468
468
else
469
469
{
470
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs(NowreceivedMessage, messageId, GenerateState.Continue));
470
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs(nowReceivedMessage, messageId, GenerateState.Continue));
471
471
}
472
472
}
473
473
else
474
474
{
475
if (NowreceivedMessage == "[DONE]")
475
if (nowReceivedMessage == "[DONE]")
476
476
{
477
477
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs("[XFEDONE]", messageId, GenerateState.End));
478
478
break;
479
479
}
480
else if (NowreceivedMessage.Contains("[XFERemoteAPIError]"))
480
else if (nowReceivedMessage.Contains("[XFERemoteAPIError]"))
481
481
{
482
482
if (!isStarted)
483
483
{
484
484
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs("[XFESTART]", messageId, GenerateState.Start));
485
485
}
486
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs(NowreceivedMessage.Replace("[XFERemoteAPIError]", string.Empty), messageId, GenerateState.Error));
486
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs(nowReceivedMessage.Replace("[XFERemoteAPIError]", string.Empty), messageId, GenerateState.Error));
487
487
}
488
else if (NowreceivedMessage == "[XFE]")
488
else if (nowReceivedMessage == "[XFE]")
489
489
{
490
490
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs("[XFESTART]", messageId, GenerateState.Start));
491
491
}
492
492
else
493
493
{
494
if (NowreceivedMessage.Contains("[XFE]"))
494
if (nowReceivedMessage.Contains("[XFE]"))
495
495
{
496
NowreceivedMessage = NowreceivedMessage.Replace("[XFE]", string.Empty);
497
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs(NowreceivedMessage, messageId, GenerateState.Continue));
496
nowReceivedMessage = nowReceivedMessage.Replace("[XFE]", string.Empty);
497
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs(nowReceivedMessage, messageId, GenerateState.Continue));
498
498
}
499
499
else
500
500
{
@@ -502,7 +502,7 @@ namespace XFE各类拓展.XFEChatGPT
502
502
{
503
503
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs("[XFESTART]", messageId, GenerateState.Start));
504
504
}
505
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs(NowreceivedMessage.Replace("[XFERemoteAPIError]", string.Empty), messageId, GenerateState.Error));
505
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs(nowReceivedMessage.Replace("[XFERemoteAPIError]", string.Empty), messageId, GenerateState.Error));
506
506
}
507
507
}
508
508
}
@@ -531,22 +531,22 @@ namespace XFE各类拓展.XFEChatGPT
531
531
#region 读取消息
532
532
byte[] buffer = new byte[1024];
533
533
WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);//接收消息
534
string NowreceivedMessage = Encoding.UTF8.GetString(buffer, 0, result.Count);//将消息转换为字符串
534
string nowReceivedMessage = Encoding.UTF8.GetString(buffer, 0, result.Count);//将消息转换为字符串
535
535
#endregion
536
536
if (XFEComProtocol == XFEComProtocol.XFEFAST)
537
537
{
538
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs(NowreceivedMessage, messageId, GenerateState.Start));
538
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs(nowReceivedMessage, messageId, GenerateState.Start));
539
539
}
540
540
else
541
541
{
542
if (NowreceivedMessage.Contains("[XFE]"))
542
if (nowReceivedMessage.Contains("[XFE]"))
543
543
{
544
NowreceivedMessage = NowreceivedMessage.Replace("[XFE]", string.Empty);
545
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs(NowreceivedMessage, messageId, GenerateState.Start));
544
nowReceivedMessage = nowReceivedMessage.Replace("[XFE]", string.Empty);
545
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs(nowReceivedMessage, messageId, GenerateState.Start));
546
546
}
547
547
else
548
548
{
549
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs(NowreceivedMessage.Replace("[XFERemoteAPIError]", string.Empty), messageId, GenerateState.Error));
549
XFEChatGPTMessageReceived.Invoke(this, new PrivateXFEGPTMessageReceivedEventArgs(nowReceivedMessage.Replace("[XFERemoteAPIError]", string.Empty), messageId, GenerateState.Error));
550
550
}
551
551
}
552
552
await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Connection closed.", CancellationToken.None);
@@ -1184,18 +1184,18 @@ namespace XFE各类拓展.XFEChatGPT
1184
1184
#region 读取消息
1185
1185
byte[] buffer = new byte[1024];
1186
1186
WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);//接收消息
1187
string NowreceivedMessage = Encoding.UTF8.GetString(buffer, 0, result.Count);//将消息转换为字符串
1187
string nowReceivedMessage = Encoding.UTF8.GetString(buffer, 0, result.Count);//将消息转换为字符串
1188
1188
#endregion
1189
if (NowreceivedMessage.Contains("[XFE]"))
1189
if (nowReceivedMessage.Contains("[XFE]"))
1190
1190
{
1191
NowreceivedMessage = NowreceivedMessage.Replace("[XFE]", string.Empty);
1192
xFEGPTMemoryDialog.InstanceUpdate(dialogId, messageId + "_Assistant", NowreceivedMessage, true);
1193
XFEChatGPTMessageReceived.Invoke(this, new PrivateMemorableGPTMessageReceivedEventArgs(NowreceivedMessage, messageId, GenerateState.Start, dialogId));
1191
nowReceivedMessage = nowReceivedMessage.Replace("[XFE]", string.Empty);
1192
xFEGPTMemoryDialog.InstanceUpdate(dialogId, messageId + "_Assistant", nowReceivedMessage, true);
1193
XFEChatGPTMessageReceived.Invoke(this, new PrivateMemorableGPTMessageReceivedEventArgs(nowReceivedMessage, messageId, GenerateState.Start, dialogId));
1194
1194
}
1195
1195
else
1196
1196
{
1197
xFEGPTMemoryDialog.InstanceUpdate(dialogId, messageId + "_Assistant", NowreceivedMessage, true);
1198
XFEChatGPTMessageReceived.Invoke(this, new PrivateMemorableGPTMessageReceivedEventArgs(NowreceivedMessage.Replace("[XFERemoteAPIError]", string.Empty), messageId, GenerateState.Error, dialogId));
1197
xFEGPTMemoryDialog.InstanceUpdate(dialogId, messageId + "_Assistant", nowReceivedMessage, true);
1198
XFEChatGPTMessageReceived.Invoke(this, new PrivateMemorableGPTMessageReceivedEventArgs(nowReceivedMessage.Replace("[XFERemoteAPIError]", string.Empty), messageId, GenerateState.Error, dialogId));
1199
1199
}
1200
1200
await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Connection closed.", CancellationToken.None);
1201
1201
}