mirror of https://github.com/Brazmann/BrazChat.git
Add project files.
This commit is contained in:
parent
34a3d9034e
commit
e423dd6aa1
|
@ -0,0 +1,31 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.2.32616.157
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BrazChatServer", "BrazChat\BrazChatServer.csproj", "{4C021E19-57F4-490E-ADE7-13064329DE7D}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BrazChatClient", "BrazChatClient\BrazChatClient.csproj", "{B21A1847-29C5-4AD2-BE79-ADBA5FA89578}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{4C021E19-57F4-490E-ADE7-13064329DE7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{4C021E19-57F4-490E-ADE7-13064329DE7D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{4C021E19-57F4-490E-ADE7-13064329DE7D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{4C021E19-57F4-490E-ADE7-13064329DE7D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{B21A1847-29C5-4AD2-BE79-ADBA5FA89578}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{B21A1847-29C5-4AD2-BE79-ADBA5FA89578}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{B21A1847-29C5-4AD2-BE79-ADBA5FA89578}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{B21A1847-29C5-4AD2-BE79-ADBA5FA89578}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {0FB81DD0-9A62-4AEA-A1B1-B165821EB7BA}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
|
@ -0,0 +1,73 @@
|
||||||
|
// Copyright 2015 gRPC authors.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
option java_multiple_files = true;
|
||||||
|
option java_package = "io.grpc.examples.brazchat";
|
||||||
|
option java_outer_classname = "BrazChatProto";
|
||||||
|
option objc_class_prefix = "BCH";
|
||||||
|
|
||||||
|
package brazchat;
|
||||||
|
|
||||||
|
|
||||||
|
service Messaging {
|
||||||
|
rpc Greeting (GreetingRequest) returns (GreetingReply) {} //Just a handshake to test connection
|
||||||
|
rpc GetMessages (GetMessagesRequest) returns (GetMessagesReply) {}
|
||||||
|
rpc GetMessageLogs (GetMessageLogsRequest) returns (GetMessageLogsReply) {}
|
||||||
|
rpc SendMessage (SendMessageRequest) returns (SendMessageReply) {}
|
||||||
|
rpc WelcomeMessage (WelcomeMessageRequest) returns (WelcomeMessageReply) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
message GreetingRequest{
|
||||||
|
}
|
||||||
|
|
||||||
|
message GreetingReply{
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetMessagesRequest {
|
||||||
|
string clientUsername = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
message GetMessagesReply {
|
||||||
|
string confirmation = 1;
|
||||||
|
string messages = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetMessageLogsRequest{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetMessageLogsReply{
|
||||||
|
string log = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SendMessageRequest {
|
||||||
|
string clientUsername = 1;
|
||||||
|
string message = 2;
|
||||||
|
string color = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SendMessageReply{
|
||||||
|
string confirmation = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message WelcomeMessageRequest{ //Feels redundant to have this here lol.
|
||||||
|
}
|
||||||
|
|
||||||
|
message WelcomeMessageReply{
|
||||||
|
string WelcomeLogo = 1;
|
||||||
|
string MOTD = 2;
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Figgle" Version="0.4.0" />
|
||||||
|
<PackageReference Include="Google.Protobuf" Version="3.21.5" />
|
||||||
|
<PackageReference Include="Grpc" Version="2.46.3" />
|
||||||
|
<PackageReference Include="Grpc.Auth" Version="2.48.0" />
|
||||||
|
<PackageReference Include="Grpc.Tools" Version="2.48.1">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||||
|
<Protobuf Include="**/*.proto" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Update="config\config.json">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
|
@ -0,0 +1,103 @@
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using Grpc;
|
||||||
|
using Grpc.Core;
|
||||||
|
using Brazchat;
|
||||||
|
using Google.Protobuf;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace BrazChatServer
|
||||||
|
{
|
||||||
|
class MessagingImpl : Messaging.MessagingBase
|
||||||
|
{
|
||||||
|
|
||||||
|
public override Task<SendMessageReply> SendMessage(SendMessageRequest request, ServerCallContext context)
|
||||||
|
{
|
||||||
|
string username = request.ClientUsername;
|
||||||
|
if(request.ClientUsername == null)
|
||||||
|
{
|
||||||
|
username = "Guest";
|
||||||
|
}
|
||||||
|
Console.WriteLine($"Message received: '{request.Message}' from {username}");
|
||||||
|
Utilities.LogNewMessage(request.Message, username);
|
||||||
|
return Task.FromResult(new SendMessageReply { Confirmation = "Successfully sent message to target!" });
|
||||||
|
}
|
||||||
|
public override Task<GetMessageLogsReply> GetMessageLogs(GetMessageLogsRequest request, ServerCallContext context)
|
||||||
|
{
|
||||||
|
return Task.FromResult(new GetMessageLogsReply { Log = File.ReadAllText(@$"{Program.brazChatPath}\log\ChatLog.txt")});
|
||||||
|
}
|
||||||
|
public override Task<GetMessagesReply> GetMessages(GetMessagesRequest request, ServerCallContext context)
|
||||||
|
{
|
||||||
|
List<string> text = File.ReadLines(@$"{Program.brazChatPath}\log\ChatLog.txt").Reverse().Take(20).Reverse().ToList();
|
||||||
|
string messages = string.Join("\n", text);
|
||||||
|
return Task.FromResult(new GetMessagesReply { Confirmation = "Successful!", Messages = messages});
|
||||||
|
}
|
||||||
|
public override Task<WelcomeMessageReply> WelcomeMessage(WelcomeMessageRequest request, ServerCallContext context)
|
||||||
|
{
|
||||||
|
return Task.FromResult(new WelcomeMessageReply {WelcomeLogo = Figgle.FiggleFonts.Banner3D.Render("BrazChat") , MOTD = File.ReadAllText(@$"{Program.brazChatPath}\config\MOTD.txt") }); //Make this read the logo from a file in the future.
|
||||||
|
}
|
||||||
|
public override Task<GreetingReply> Greeting(GreetingRequest request, ServerCallContext context)
|
||||||
|
{
|
||||||
|
return Task.FromResult(new GreetingReply { });
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
class Program
|
||||||
|
{
|
||||||
|
public static string brazChatPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
|
||||||
|
const int Port = 50051;
|
||||||
|
public static void Main(string[] args)
|
||||||
|
{
|
||||||
|
CheckNecessaryFiles();
|
||||||
|
List<Config> configItems = new List<Config>();
|
||||||
|
using (StreamReader r = new StreamReader(@$"{Program.brazChatPath}\config\config.json"))
|
||||||
|
{
|
||||||
|
string json = r.ReadToEnd();
|
||||||
|
configItems = JsonConvert.DeserializeObject<List<Config>>(json);
|
||||||
|
}
|
||||||
|
Server server = new Server
|
||||||
|
{
|
||||||
|
Services = { Messaging.BindService(new MessagingImpl()) },
|
||||||
|
Ports = { new ServerPort(configItems[0].Host, configItems[0].Port, ServerCredentials.Insecure)}
|
||||||
|
};
|
||||||
|
server.Start();
|
||||||
|
Console.WriteLine("Server running. Press any key to stop server.");
|
||||||
|
Console.ReadKey();
|
||||||
|
}
|
||||||
|
public static void CheckNecessaryFiles()
|
||||||
|
{
|
||||||
|
if (File.Exists(@$"{Program.brazChatPath}\config\MOTD.txt") == false)
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory($@"{Program.brazChatPath}\config");
|
||||||
|
File.WriteAllText(@$"{Program.brazChatPath}\config\MOTD.txt", "Default MOTD");
|
||||||
|
}
|
||||||
|
if (File.Exists(@$"{Program.brazChatPath}\config\config.json") == false)
|
||||||
|
{
|
||||||
|
Console.WriteLine("No config file found! Exiting.");
|
||||||
|
Environment.Exit(2);
|
||||||
|
}
|
||||||
|
if (File.Exists(@$"{Program.brazChatPath}\log\ChatLog.txt") == false)
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory($@"{Program.brazChatPath}\log");
|
||||||
|
File.WriteAllText(@$"{Program.brazChatPath}\log\ChatLog.txt", "Say something!\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class Utilities
|
||||||
|
{
|
||||||
|
public static void LogNewMessage(string message, string username)
|
||||||
|
{
|
||||||
|
string path = @$"{Program.brazChatPath}\log\ChatLog.txt";
|
||||||
|
|
||||||
|
File.AppendAllText(path, $"{username}: {message}\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Config
|
||||||
|
{
|
||||||
|
public string Host;
|
||||||
|
public int Port;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
This is a test motd!
|
||||||
|
New linerino!!
|
|
@ -0,0 +1,6 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"host": "localhost",
|
||||||
|
"port": 50051
|
||||||
|
}
|
||||||
|
]
|
|
@ -0,0 +1,73 @@
|
||||||
|
// Copyright 2015 gRPC authors.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
option java_multiple_files = true;
|
||||||
|
option java_package = "io.grpc.examples.brazchat";
|
||||||
|
option java_outer_classname = "BrazChatProto";
|
||||||
|
option objc_class_prefix = "BCH";
|
||||||
|
|
||||||
|
package brazchat;
|
||||||
|
|
||||||
|
|
||||||
|
service Messaging {
|
||||||
|
rpc Greeting (GreetingRequest) returns (GreetingReply) {} //Just a handshake to test connection
|
||||||
|
rpc GetMessages (GetMessagesRequest) returns (GetMessagesReply) {}
|
||||||
|
rpc GetMessageLogs (GetMessageLogsRequest) returns (GetMessageLogsReply) {}
|
||||||
|
rpc SendMessage (SendMessageRequest) returns (SendMessageReply) {}
|
||||||
|
rpc WelcomeMessage (WelcomeMessageRequest) returns (WelcomeMessageReply) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
message GreetingRequest{
|
||||||
|
}
|
||||||
|
|
||||||
|
message GreetingReply{
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetMessagesRequest {
|
||||||
|
string clientUsername = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
message GetMessagesReply {
|
||||||
|
string confirmation = 1;
|
||||||
|
string messages = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetMessageLogsRequest{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetMessageLogsReply{
|
||||||
|
string log = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SendMessageRequest {
|
||||||
|
string clientUsername = 1;
|
||||||
|
string message = 2;
|
||||||
|
string color = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SendMessageReply{
|
||||||
|
string confirmation = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message WelcomeMessageRequest{ //Feels redundant to have this here lol.
|
||||||
|
}
|
||||||
|
|
||||||
|
message WelcomeMessageReply{
|
||||||
|
string WelcomeLogo = 1;
|
||||||
|
string MOTD = 2;
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Figgle" Version="0.4.0" />
|
||||||
|
<PackageReference Include="Google.Protobuf" Version="3.21.5" />
|
||||||
|
<PackageReference Include="Grpc" Version="2.46.3" />
|
||||||
|
<PackageReference Include="Grpc.Auth" Version="2.48.0" />
|
||||||
|
<PackageReference Include="Grpc.Tools" Version="2.48.1">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<Protobuf Include="**/*.proto" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
|
@ -0,0 +1,213 @@
|
||||||
|
using Brazchat;
|
||||||
|
using Grpc.Core;
|
||||||
|
|
||||||
|
namespace BrazChatClient
|
||||||
|
{
|
||||||
|
class Program
|
||||||
|
{
|
||||||
|
public static string username = "";
|
||||||
|
public static string host = "";
|
||||||
|
public static void Main(string[] args)
|
||||||
|
{
|
||||||
|
StartScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void StartScreen()
|
||||||
|
{
|
||||||
|
Console.Clear();
|
||||||
|
Console.WriteLine("Please enter a hostname (ip:port)");
|
||||||
|
host = Console.ReadLine();
|
||||||
|
Console.WriteLine(host);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Channel channel = new Channel(host, ChannelCredentials.Insecure);
|
||||||
|
|
||||||
|
var client = new Messaging.MessagingClient(channel);
|
||||||
|
|
||||||
|
var reply = client.Greeting(new GreetingRequest { });
|
||||||
|
|
||||||
|
channel.ShutdownAsync().Wait();
|
||||||
|
WelcomeScreen();
|
||||||
|
}
|
||||||
|
catch (RpcException)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Invalid host! Press any key to try again.");
|
||||||
|
Console.ReadKey();
|
||||||
|
Console.Clear();
|
||||||
|
StartScreen();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static void WelcomeScreen()
|
||||||
|
{
|
||||||
|
Console.ForegroundColor = ConsoleColor.Green;
|
||||||
|
Console.Clear();
|
||||||
|
string[] WelcomeMessage = GetWelcomeMessage();
|
||||||
|
Console.WriteLine(WelcomeMessage[0]);
|
||||||
|
Console.WriteLine(WelcomeMessage[1]);
|
||||||
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
|
Console.WriteLine("Type in a username please!");
|
||||||
|
username = Console.ReadLine();
|
||||||
|
Console.WriteLine("Press any key to start sending messages!");
|
||||||
|
Console.ReadKey();
|
||||||
|
ChatScreen();
|
||||||
|
}
|
||||||
|
public static void ChatScreen()
|
||||||
|
{
|
||||||
|
Console.Clear();
|
||||||
|
while (!Console.KeyAvailable)
|
||||||
|
{
|
||||||
|
Console.CursorVisible = false;
|
||||||
|
CustomClear();
|
||||||
|
Console.SetCursorPosition(0, 0);
|
||||||
|
var Messages = GetMessages();
|
||||||
|
if (Messages.Confirmation == "Nope!")
|
||||||
|
{
|
||||||
|
ConnectionFailureScreen();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine($"{Messages.Messages}\n");
|
||||||
|
//Console.WriteLine("----------------------");
|
||||||
|
Console.WriteLine("T - Type message \nL - View logs");
|
||||||
|
Thread.Sleep(100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ConsoleKey input = Console.ReadKey(true).Key;
|
||||||
|
switch (input)
|
||||||
|
{
|
||||||
|
case ConsoleKey.T:
|
||||||
|
TypeScreen();
|
||||||
|
break;
|
||||||
|
case ConsoleKey.L:
|
||||||
|
ChatLogScreen();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ChatScreen();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void TypeScreen()
|
||||||
|
{
|
||||||
|
Console.Clear();
|
||||||
|
var Messages = GetMessages();
|
||||||
|
if (Messages.Confirmation == "Nope!")
|
||||||
|
{
|
||||||
|
ConnectionFailureScreen();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine(Messages.Messages);
|
||||||
|
Console.WriteLine("Type your message!");
|
||||||
|
string? message = Console.ReadLine();
|
||||||
|
SendMessage(message);
|
||||||
|
ChatScreen();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ChatLogScreen()
|
||||||
|
{
|
||||||
|
Console.Clear();
|
||||||
|
var Messages = GetMessages();
|
||||||
|
if(GetMessages().Confirmation == "Nope!")
|
||||||
|
{
|
||||||
|
Console.WriteLine("Connection to server lost! Press any key to return to connection menu!");
|
||||||
|
ConnectionFailureScreen();
|
||||||
|
}else{
|
||||||
|
Console.WriteLine("--------------------------");
|
||||||
|
Console.WriteLine(GetMessageLogs().Log);
|
||||||
|
Console.WriteLine("--------------------------");
|
||||||
|
Console.ReadKey();
|
||||||
|
Console.Clear();
|
||||||
|
ChatScreen();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ConnectionFailureScreen()
|
||||||
|
{
|
||||||
|
Console.Clear();
|
||||||
|
Console.WriteLine("Connection to server lost! Press any key to return to connection menu!");
|
||||||
|
Console.ReadKey();
|
||||||
|
StartScreen();
|
||||||
|
}
|
||||||
|
public static string[] GetWelcomeMessage()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Channel channel = new Channel(host, ChannelCredentials.Insecure);
|
||||||
|
|
||||||
|
var client = new Messaging.MessagingClient(channel);
|
||||||
|
|
||||||
|
var reply = client.WelcomeMessage(new WelcomeMessageRequest { });
|
||||||
|
|
||||||
|
string[] WelcomeMessage = { reply.WelcomeLogo, reply.MOTD };
|
||||||
|
|
||||||
|
channel.ShutdownAsync().Wait();
|
||||||
|
return WelcomeMessage;
|
||||||
|
}
|
||||||
|
catch (RpcException)
|
||||||
|
{
|
||||||
|
string[] Fallback = { "Brazchat", "ERRORNOCONNECTION" }; //0 = Logo, 1 = MOTD
|
||||||
|
return Fallback;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static void SendMessage(string? message)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Channel channel = new Channel(host, ChannelCredentials.Insecure);
|
||||||
|
|
||||||
|
var client = new Messaging.MessagingClient(channel);
|
||||||
|
|
||||||
|
var reply = client.SendMessage(new SendMessageRequest { ClientUsername = username, Message = message, Color = "Red" });
|
||||||
|
Console.WriteLine("Message sent. Result:" + reply.Confirmation);
|
||||||
|
|
||||||
|
channel.ShutdownAsync().Wait();
|
||||||
|
}
|
||||||
|
catch (Grpc.Core.RpcException)
|
||||||
|
{
|
||||||
|
ConnectionFailureScreen();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static GetMessagesReply GetMessages()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Channel channel = new Channel(host, ChannelCredentials.Insecure);
|
||||||
|
|
||||||
|
var client = new Messaging.MessagingClient(channel);
|
||||||
|
String clientUsername = "Brazman";
|
||||||
|
|
||||||
|
var reply = client.GetMessages(new GetMessagesRequest { ClientUsername = clientUsername });
|
||||||
|
channel.ShutdownAsync().Wait();
|
||||||
|
return reply;
|
||||||
|
}
|
||||||
|
catch (Grpc.Core.RpcException)
|
||||||
|
{
|
||||||
|
//lord forgive me
|
||||||
|
var Fallback = new GetMessagesReply { Confirmation = "Nope!", Messages = "No connection! Retrying!\n" };
|
||||||
|
return Fallback;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static GetMessageLogsReply GetMessageLogs()
|
||||||
|
{
|
||||||
|
Channel channel = new Channel(host, ChannelCredentials.Insecure);
|
||||||
|
|
||||||
|
var client = new Messaging.MessagingClient(channel);
|
||||||
|
|
||||||
|
var reply = client.GetMessageLogs(new GetMessageLogsRequest { });
|
||||||
|
channel.ShutdownAsync().Wait();
|
||||||
|
return reply;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void CustomClear()
|
||||||
|
{
|
||||||
|
Console.SetCursorPosition(0, 0);
|
||||||
|
for (int y = 0; y < Console.WindowHeight; y++)
|
||||||
|
Console.Write(new String(' ', Console.WindowWidth));
|
||||||
|
Console.SetCursorPosition(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue