예제 #1
0
        public async Task <ChatConfig> Get()
        {
            var secret   = Configuration.GetSection("ClientDirectLineSecret")?.Value;
            var endpoint = Configuration.GetSection("ClientDirectLineEndpoint")?.Value;

            var userId = "dl_" + Guid.NewGuid().ToString();

            HttpClient         client  = new HttpClient();
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, $"{endpoint}/tokens/generate");

            request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", secret);
            request.Content = new StringContent(JsonConvert.SerializeObject(new
            {
                User           = new { Id = userId },
                TrustedOrigins = new string[]
                {
                    "http://localhost:2978",
                    "https://catering.azurewebsites.net/",
                }
            }),
                                                Encoding.UTF8,
                                                "application/json");

            var response = await client.SendAsync(request);

            string token = String.Empty;

            if (response.IsSuccessStatusCode)
            {
                var body = await response.Content.ReadAsStringAsync();

                token = JsonConvert.DeserializeObject <DirectLineToken>(body).token;
            }

            var config = new ChatConfig()
            {
                Token  = token,
                Domain = endpoint,
                UserId = userId
            };

            return(config);
        }
예제 #2
0
        public async Task <IActionResult> RunAsyncToken([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "directlinetoken")] HttpRequest req, ILogger log)
        {
            log.LogInformation("Enttering RunAsyncToken");

            var pp = new PostPayload()
            {
                user = new User()
                {
                    id   = "dl_" + Guid.NewGuid().ToString(),
                    name = "You"
                }
            };

            HttpRequestMessage request = new HttpRequestMessage(
                HttpMethod.Post,
                Environment.GetEnvironmentVariable("DirectLineConversationEndpoint"));

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer",
                                                                          Environment.GetEnvironmentVariable("DirectLineSecret"));

            //
            request.Content = new StringContent(JsonConvert.SerializeObject(pp), Encoding.UTF8, "application/json");

            var response = await htc.SendAsync(request);

            var cnt = await response.Content.ReadAsStringAsync();

            if (response.IsSuccessStatusCode)
            {
                string token = JsonConvert.DeserializeObject <DirectLineToken>(cnt).token;

                var config = new ChatConfig()
                {
                    Token = token, UserId = pp.user.id
                };

                return((IActionResult) new OkObjectResult(config));
            }
            else
            {
                throw new Exception("");
            }
        }
예제 #3
0
        public static CommandProcessor SetUpCommandProcessor(
            ILoggerFactory loggerFactory,
            ArgsParser argsParser,
            Databases databases,
            StopToken stopToken,
            ChatConfig chatConfig,
            IMessageSender messageSender,
            IChatModeChanger chatModeChanger,
            IImmutableSet <Common.PkmnSpecies> knownSpecies)
        {
            var commandProcessor = new CommandProcessor(
                loggerFactory.CreateLogger <CommandProcessor>(),
                databases.CommandLogger, argsParser);

            IEnumerable <Command> commands = new[]
            {
                new EasterEggCommands().Commands,
                new StaticResponseCommands().Commands,
                new UserCommands(
                    databases.UserRepo, pokeyenBank: databases.PokeyenBank, tokenBank: databases.TokensBank,
                    messageSender
                    ).Commands,
                new BadgeCommands(databases.BadgeRepo, databases.UserRepo, messageSender, knownSpecies).Commands,
                new OperatorCommands(
                    stopToken, chatConfig.OperatorNames, databases.PokeyenBank, databases.TokensBank,
                    messageSender: messageSender, databases.BadgeRepo
                    ).Commands,
                new ModeratorCommands(chatConfig.ModeratorNames, chatConfig.OperatorNames, chatModeChanger).Commands,
                new MiscCommands().Commands,
            }.SelectMany(cmds => cmds).Concat(new[]
            {
                new HelpCommand(commandProcessor).Command
            });

            foreach (Command command in commands)
            {
                commandProcessor.InstallCommand(command);
            }
            return(commandProcessor);
        }
예제 #4
0
        public async Task <ChatConfig> Index()
        {
            var secret = GetSecret();

            HttpClient client = new HttpClient();

            HttpRequestMessage request = new HttpRequestMessage(
                HttpMethod.Post,
                $"https://directline.botframework.com/v3/directline/tokens/generate");

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", secret);

            var userId = $"dl_{Guid.NewGuid()}";

            request.Content = new StringContent(
                JsonConvert.SerializeObject(
                    new { User = new { Id = userId } }),
                Encoding.UTF8,
                "application/json");

            var response = await client.SendAsync(request);

            string token = String.Empty;

            if (response.IsSuccessStatusCode)
            {
                var body = await response.Content.ReadAsStringAsync();

                token = JsonConvert.DeserializeObject <DirectLineToken>(body).token;
            }

            var config = new ChatConfig()
            {
                Token  = token,
                UserId = userId
            };

            return(config);
        }
예제 #5
0
        public async Task <ActionResult> Index()
        {
            var secret = "HHSO6aN78Sk.cwA.C-w.dzpNU1mb5U0GlZqqwe65OxYb9y2GHf4q2ypnlsF4D-8"; // DirectLinet();
            //var secret = "FVtv5gqJRwY.cwA.tUw.n1yC9moSsCzFMUhp1mpIYXnFbVl1VPM3LWXHeOTsHAw"; // WebChat

            HttpClient client = new HttpClient();

            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, $"https://directline.botframework.com/v3/directline/tokens/generate");

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", secret);

            var userId = $"dl_{Guid.NewGuid()}";

            request.Content = new StringContent(JsonConvert.SerializeObject(new { User = new { Id = userId } }),
                                                Encoding.UTF8,
                                                "application/json");

            var response = await client.SendAsync(request);

            string token = String.Empty;

            if (response.IsSuccessStatusCode)
            {
                var body = await response.Content.ReadAsStringAsync();

                token = JsonConvert.DeserializeObject <DirectLineToken>(body).token;
            }

            var config = new ChatConfig()
            {
                Token  = token,
                UserId = userId
            };

            return(View(config));
        }
예제 #6
0
        public void Setup()
        {
            Config1 = new ChatConfig
            {
                FirstString  = "Расписание на {OddEvenDayVinPod}:",
                SecondString = "Группа {Target}:",
                LessonString = "{NumberInTimetable}) {Time} {Subject} ({Type}) {Teacher} {Place}",
                NoLessons    = "Нет пар",
                PeerId       = 0,
                Targets      = new List <string>(new[] { "КИ18-17/1б" })
            };
            Compiler1 = new Compiler(Config1);

            Config2 = new ChatConfig
            {
                FirstString  = "Расписание на {OddEvenDayVinPod}:",
                SecondString = "Группа {Target}:",
                LessonString = "{NumberInTimetable}) {Time} {Subject} ({Type}) {Teacher} {Place}",
                NoLessons    = "Нет пар",
                PeerId       = 0,
                Targets      = new List <string>(new[] { "КИ18-17/1б", "КИ18-17/2б" })
            };
            Compiler2 = new Compiler(Config2);
        }
 private void ChatConfigChanged(ChatConfig config)
 {
     _configChanged = true;
 }
예제 #8
0
 public new void LoadConfig()
 {
     if (!configFile.Exists())
     {
         configFile.WriteObject(config = new ChatConfig()
         {
             CapsBlock               = true,
             PrivateSoundMessage     = true,
             PrivateSoundMessagePath = "assets/bundled/prefabs/fx/notice/stack.world.fx.prefab",
             prefixes = new List <ChatPrivilege>()
             {
                 new ChatPrivilege()
                 {
                     Perm   = "chatmanager.default",
                     Arg    = "default",
                     Format = "",
                 },
                 new ChatPrivilege()
                 {
                     Perm   = "chatmanager.admin",
                     Arg    = "admin",
                     Format = "<color=#a5e664>[Админ]</color>",
                 },
                 new ChatPrivilege()
                 {
                     Perm   = "chatmanager.premium",
                     Arg    = "premium",
                     Format = "<color=#a5e664>[Премиум]</color>",
                 }
             },
             names = new List <ChatPrivilege>()
             {
                 new ChatPrivilege()
                 {
                     Perm   = "chatmanager.default",
                     Arg    = "default",
                     Format = "<color=#ffffff>{0}</color>",
                 },
                 new ChatPrivilege()
                 {
                     Perm   = "chatmanager.purple",
                     Arg    = "purple",
                     Format = "<color=#a5e664>{0}</color>",
                 },
                 new ChatPrivilege()
                 {
                     Perm   = "chatmanager.orange",
                     Arg    = "orange",
                     Format = "<color=#e6a564>{0}</color>",
                 }
             },
             messages = new List <ChatPrivilege>()
             {
                 new ChatPrivilege()
                 {
                     Perm   = "chatmanager.default",
                     Arg    = "default",
                     Format = "<color=#ffffff>{0}</color>>",
                 },
                 new ChatPrivilege()
                 {
                     Perm   = "chatmanager.blue",
                     Arg    = "blue",
                     Format = "<color=#64a5e6>{0}</color>>",
                 },
                 new ChatPrivilege()
                 {
                     Perm   = "chatmanager.black",
                     Arg    = "black",
                     Format = "<color=#000000>{0}</color>>",
                 }
             },
             badWords = new Dictionary <string, List <string> >()
             {
                 { "ебля", new List <string>() },
                 { "сука", new List <string>() },
                 { "пидор", new List <string>() },
             }
         });
     }
     else
     {
         config = configFile.ReadObject <ChatConfig>();
     }
     config.RegisterPerms();
 }
예제 #9
0
 public ChatCommands(ChatConfig config)
 {
     _config = config;
 }
예제 #10
0
 public ChatConfig Update(ChatConfig config)
 {
     return(Update(CurrentAccount, config));
 }
예제 #11
0
        public ChatConfig Update(int accountId, ChatConfig config)
        {
            var rval = TDClient.Update <ChatConfig>(ITEM, new { accountId }, config);

            return(rval);
        }
예제 #12
0
        public async void Awake()
        {
            await HttpReqUtil.Req(NetConfig.getInstance().getWebUrl() + "files/chat.json", ChatConfig.getInstance().init);

            ReferenceCollector rc = this.GetParent <UI>().GameObject.GetComponent <ReferenceCollector>();

            ExpressionBtn  = rc.Get <GameObject>("ExpressionBtn").GetComponent <Button>();
            ShortBtn       = rc.Get <GameObject>("ShortBtn").GetComponent <Button>();
            Mask           = rc.Get <GameObject>("Mask").GetComponent <Button>();
            ExceptionTxt   = rc.Get <GameObject>("ExceptionTxt").GetComponent <Text>();
            ExpressionGrid = ExpressionBtn.transform.Find("Select_Btn/Scroll/ExpressionGrid").gameObject;
            ShortGrid      = ShortBtn.transform.Find("Select_Btn/Scroll/ShortGrid").gameObject;

            ExpressionBtn.onClick.Add(() => { CreatExpressions(); });

            CommonUtil.SetTextFont(this.GetParent <UI>().GameObject);

            Mask.onClick.Add(() =>
            {
                CloseOrOpenChatUI(false);
            });

            ShortBtn.onClick.Add(() => { CreateChatItems(); });

            ExpressionItem = CommonUtil.getGameObjByBundle(UIType.UIExpression);
            ChatItem       = CommonUtil.getGameObjByBundle(UIType.UIChatItem);
            isOpen         = false;

            //选中表情包界面
            CreatExpressions();
        }
예제 #13
0
 /// <summary>
 /// Инициализирует новый экземпляр класса <see cref="Compiler"/> используя заданную конфигурацию чата.
 /// </summary>
 /// <param name="config">Конфигурация чата.</param>
 public Compiler(ChatConfig config)
 {
     Config = config;
 }
예제 #14
0
        /// <summary>
        /// Главная функция программы.
        /// </summary>
        /// <param name="args">Аргументы командной строки.</param>
        public static void Main(string[] args)
        {
            LogManager.Configuration.Variables["starttime"] = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss-ffff");
            OutputEncoding  = Encoding.UTF8;
            CancelKeyPress += Program_CancelKeyPress;
            Log.Trace("1234");
            Log.Info("1234");
            Log.Debug("1234");
            Log.Warn("1234");
            Log.Error("1234");
            Log.Fatal("1234");
            if (String.Join("; ", Directory.GetFiles(".")).Contains("config.json"))
            {
                Log.Info("Загружается конфирурация");
                Config = JsonConvert.DeserializeObject <Config>(new StreamReader("config.json").ReadToEnd());
                Log.Info("Загружена конфигурация");
            }
            else
            {
                Log.Info("Создаётся конфигурция");
                var token   = "access_token";
                var groupid = 1234ul;
                var target  = "КИ18-17/1б";

                bool Dialog()
                {
                    WriteLine("Ввести AccessToken, GroupId и Target? [Y/n]");
                    var ans1 = ReadLine();

                    if (!string.IsNullOrEmpty(ans1) && ans1[0].ToString().ToLower() != "y")
                    {
                        return(false);
                    }
                    Write("AccessToken: ");
                    token = ReadLine();
                    Write("GroupId: ");
                    groupid = UInt64.Parse(ReadLine());
                    Write("Target: ");
                    target = ReadLine();
                    return(true);
                }

                Log.Info("Открывается диалог введения параметров");
                var ret = Dialog();

                var config1 = new ChatConfig
                {
                    FirstString  = "Расписание на {OddEvenDayVinPod}:",
                    SecondString = "Группа {TargetsList}:",
                    LessonString = "{NumberInTimetable}) {Time} {Subject} ({Type}) {Teacher} {Place}",
                    NoLessons    = "Нет пар",
                    PeerId       = 0,
                    Targets      = new List <string>(new[] { target })
                };
                Config = new Config
                {
                    AccessToken = token,
                    GroupId     = groupid,
                    ChatConfigs = new List <ChatConfig>(new[] { config1 })
                };

                Log.Info("Сохраняется конфигурация");
                var json = JsonConvert.SerializeObject(Config, Formatting.Indented);
                using (var w = new StreamWriter("config.json"))
                {
                    w.WriteLine(json);
                }

                if (!ret)
                {
                    Log.Fatal("Завершение программы потому что не были введены параметры");
                    return;
                }
            }

            Log.Debug("Авторизация");
            var auth = new Authorizer(Config.AccessToken);

            Log.Debug("Создание и старт LongPollServer");
            var lp = new LongPoller(auth.Api, Config.GroupId);

            lp.Start();
            lp.Run();

            Log.Debug("Создание и старт Answerer");
            var t1 = new Answerer(auth.Api, lp, Config);

            while (true)
            {
                Log.Debug("Приложение работает");
                Thread.Sleep(300000);
            }
        }
예제 #15
0
 public ChatConfig Update(int accountId, ChatConfig config)
 {
     return(Api.Put($"/account/{accountId}/chatconfig/", config));
 }