Ejemplo n.º 1
0
        /// <summary>
        /// Получает данные LongPollServer'a
        /// </summary>
        /// <param name="accessToken">Token</param>
        /// <returns>Возвращает объект LongPollServer'a</returns>
        public ILongPollServer Get(string accessToken)
        {
            var urlBuilder = new ApiBuilder(MessagesMethods.MessagesGetLongPollServer, ApiSettings, accessToken);
            var url = urlBuilder.GenerateUrl();

            var requestBuilder = new RequestBuilder<LongPollServer>("response", false);
            var response = requestBuilder.GetResponse(url);

            Exception = requestBuilder.Exception;

            return response;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Помечает сообщения как прочитанные
        /// </summary>
        /// <param name="friendId">Идентификатор отправителя сообщения</param>
        /// <param name="accessToken">Token</param>
        /// <param name="messageIds">Идентификаторы непрочитанных сообщений</param>
        public int MarkAsRead(int friendId, string accessToken, IEnumerable<int> messageIds)
        {
            var urlBulider = new ApiBuilder(MessagesMethods.MessagesMarkAsRead, ApiSettings, accessToken);
            var url = urlBulider.GenerateUrl(
                MessagesMarkAsReadParameters.Instance.UserId(friendId),
                MessagesMarkAsReadParameters.Instance.MessageIds(messageIds)
                );

            var requestBuilder = new RequestBuilder<int>("response", false);
            var response = requestBuilder.GetResponse(url);

            Exception = requestBuilder.Exception;
            return response;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Отправляет сообщение пользователю
        /// </summary>
        /// <param name="userId">Id пользователя вконтакте</param>
        /// <param name="accessToken">Token</param>
        /// <param name="message">Текст сообщения</param>
        /// <returns>Возвращает id сообщения</returns>
        public int Send(int userId, string accessToken, string message)
        {
            var urlBulider = new ApiBuilder(MessagesMethods.MessagesSend, ApiSettings, accessToken);
            var url = urlBulider.GenerateUrl(
                MessagesSendParameters.Instance.UserId(userId),
                MessagesSendParameters.Instance.Message(message)
                );

            var requestBuilder = new RequestBuilder<int>("response", false);
            var response = requestBuilder.GetResponse(url);

            Exception = requestBuilder.Exception;
            return response;
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Получает список id пользователей, которые онлайн
        /// </summary>
        /// <param name="userId">Id авторизованного пользователя</param>
        /// <param name="accessToken">Token</param>
        /// <returns>Возвращает список id пользователей, которые онлайн. Пустой список, если ошибка</returns>
        public List<int> Get(int userId, string accessToken)
        {
            var urlBuilder = new ApiBuilder(FriendsMethods.FriendsGetOnline, ApiSettings, accessToken);
            var url = urlBuilder.GenerateUrl(
                FriendsGetOnlineParameters.Instance.UserId(userId)
                );

            var requestBuilder = new RequestBuilder<int>("response", false);
            var response = requestBuilder.GetResponseArray(url);

            Exception = requestBuilder.Exception;

            return response;
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Получае последние сообщения
        /// </summary>
        /// <param name="accessToken">Token</param>
        /// <param name="count">Количество последних сообщений</param>
        public IEnumerable<IDialogMessage> GetLast(string accessToken, int count = 20)
        {
            var urlBuilder = new ApiBuilder(MessagesMethods.MessagesGet, ApiSettings, accessToken);
            var url = urlBuilder.GenerateUrl(
                MessagesGetParameters.Instance.Count(count)
                );

            var requestBuilder = new RequestBuilder<Message>("items");
            var response = requestBuilder.GetResponseArray(url);

            Exception = requestBuilder.Exception;

            foreach (var message in response)
                message.VkUserId = _vkUserId;

            return response.Cast<IDialogMessage>().OrderBy(x => x.Date).ToList();
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Получает список всех друзей пользователя
        /// </summary>
        /// <param name="userId">Id авторизованного пользователя</param>
        /// <param name="accessToken">Token</param>
        /// <returns>Возвращает список друзей пользователя. Пустой список если ошибка</returns>
        public List<IFriend> Get(int userId, string accessToken)
        {
            var urlBuilder = new ApiBuilder(FriendsMethods.FriendsGet, ApiSettings, accessToken);
            var url = urlBuilder.GenerateUrl(
                FriendsGetParameters.Instance.Order(Orders.Name),
                FriendsGetParameters.Instance.Fields(new List<string>
                {
                    UserFields.Photo50
                }));

            var requestBuilder = new RequestBuilder<Friend>("items");
            var response = requestBuilder.GetResponseArray(url);

            foreach (var friend in response)
            {
                friend.ParentVkId = userId;
                friend.Position = response.IndexOf(friend);
            }

            Exception = requestBuilder.Exception;

            return response.Cast<IFriend>().ToList();
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Возвращает историю сообщений с указанным собеседником.
        /// </summary>
        /// <param name="friendId">Id собеседника</param>
        /// <param name="accessToken">Token</param>
        /// <param name="count">Количество сообщений</param>
        /// <param name="offset">Смещение</param>
        /// <returns>Возвращает список сообщений</returns>
        public IEnumerable<IDialogMessage> GetHistory(int friendId, string accessToken, int count = 20, int offset = 0)
        {
            var urlBuilder = new ApiBuilder(MessagesMethods.MessagesGetHistory, ApiSettings, accessToken);
            var url = urlBuilder.GenerateUrl(
                MessagesGetHistoryParameters.Instance.Offset(offset),
                MessagesGetHistoryParameters.Instance.Count(count),
                MessagesGetHistoryParameters.Instance.UserId(friendId)
                );

            var requestBuilder = new RequestBuilder<DialogMessage>("items");
            var response = requestBuilder.GetResponseArray(url);

            Exception = requestBuilder.Exception;

            //Задаем, кому было отправлено сообщение
            foreach (var message in response)
            {
                message.VkUserId = _vkUserId;
                message.VkFriendId = friendId;
            }

            var messages = response.Cast<IDialogMessage>().OrderBy(x => x.Date).ToList();
            return messages;
        }
Ejemplo n.º 8
0
        public void GivenAddititveApiChangeThenMinorVersionIncreases()
        {
            var oldApi     = ApiBuilder.CreateApi("1");
            var comparison = ApiNodeComparison.Compare(new[] { oldApi }, new[] { oldApi, ApiBuilder.CreateApi("") });

            Assert.That(comparison.GetNewSemanticVersion(new Version(1, 0, 0, 0)).AssemblyFileVersion, Is.EqualTo(new Version(1, 1, 0, 0)));
        }
Ejemplo n.º 9
0
        static void ASRRecord()
        {
            try
            {
                Stopwatch sw = new Stopwatch();
                sw.Start();

                #region ASRApi

                ASRApi iat = new ApiBuilder()
                             .WithAppSettings(new AppSettings()
                {
                    ApiKey    = "7b845bf729c3eeb97be6de4d29e0b446",
                    ApiSecret = "50c591a9cde3b1ce14d201db9d793b01",
                    AppID     = "5c56f257"
                })
                             .WithVadEos(5000) //将静默检测超时设置为5s
                             .UseError((sender, e) =>
                {
                    Console.WriteLine("错误:" + e.Message);
                })
                             .UseMessage((sender, e) =>
                {
                    Console.WriteLine("实时结果:" + e);
                })
                             .BuildASR();

                #endregion

                #region Record

                using WaveInEvent wave  = new WaveInEvent();
                wave.WaveFormat         = new WaveFormat(16000, 1);
                wave.BufferMilliseconds = 50;
                wave.DataAvailable     += (s, a) =>
                {
                    byte[] buffer = SubArray(a.Buffer, 0, a.BytesRecorded);
                    iat.Convert(buffer);

                    if (sw.ElapsedMilliseconds / 1000 > 60)
                    {
                        wave.StopRecording();
                    }
                };
                wave.RecordingStopped += (s, a) =>
                {
                    Console.WriteLine("退出...");
                };
                Console.WriteLine("开始识别...");
                wave.StartRecording();

                //注册退出事件
                Console.CancelKeyPress += (object sender, ConsoleCancelEventArgs eventArgs) =>
                {
                    bool state = iat.Stop();
                    if (state)
                    {
                        Console.WriteLine("语音识别已退出...");
                    }
                    wave.StopRecording();

                    Console.WriteLine("`C");
                };

                //等待识别开始
                while (iat.Status != ServiceStatus.Running)
                {
                    Thread.Sleep(10);
                }

                #endregion

                //等待本次会话结束
                while (iat.Status != ServiceStatus.Stopped)
                {
                    Thread.Sleep(10);  //注意:此处不能使用Task.Delay();
                }
                wave.Dispose();
                sw.Stop();
                Console.WriteLine($"总共花费{Math.Round(sw.Elapsed.TotalSeconds, 2)}秒。");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Ejemplo n.º 10
0
        static async void TTS()
        {
            string str = @"正在为您查询合肥的天气情况。今天是2020年2月24日,合肥市今天多云,最低温度9摄氏度,最高温度15摄氏度,微风。";

            try
            {
                TTSApi tts = new ApiBuilder()
                             .WithAppSettings(new AppSettings()
                {
                    ApiKey    = "7b845bf729c3eeb97be6de4d29e0b446",
                    ApiSecret = "50c591a9cde3b1ce14d201db9d793b01",
                    AppID     = "5c56f257"
                })
                             //设置发音人
                             .WithVcn("xiaoyan")
                             //设置音量
                             .WithVolume(50)
                             //设置语速
                             .WithSpeed(50)
                             .UseError((sender, e) =>
                {
                    Console.WriteLine(e.Message);
                })
                             .UseMessage((sender, e) =>
                {
                    Console.WriteLine("结果:" + e.Substring(0, 20) + "...");      //Base64的结果。没显示完
                })
                             .BuildTTS();

                ResultModel <byte[]> result = await tts.Convert(str);

                if (result.Code == IflySdk.Enum.ResultCode.Success)
                {
                    //注意:转换后的结果为16K的单声道原始音频,可以使用ffmpeg来测试播放。
                    string path = Path.Combine(Environment.CurrentDirectory, "test.pcm");
                    using (var fs = new FileStream(path, FileMode.Create, FileAccess.Write))
                    {
                        fs.Write(result.Data, 0, result.Data.Length);
                        fs.Flush();
                    }
                    if (File.Exists(path))
                    {
                        //转pcm为wav格式
                        PcmToWav pcm = new PcmToWav();
                        pcm.ConverterToWav(path);

                        Console.WriteLine("保存成功!");
                    }
                    else
                    {
                        Console.WriteLine("保存失败!");
                    }
                }
                else
                {
                    Console.WriteLine("\n错误:" + result.Message);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Ejemplo n.º 11
0
        public async Task UnchangingPartOfApiDoesNotAppearInComparison()
        {
            var sameApi          = ApiBuilder.CreateApi("same");
            var comparison       = ApiNodeComparison.Compare(new [] { sameApi, ApiBuilder.CreateApi("1") }, new [] { sameApi, ApiBuilder.CreateApi("2") });
            var differenceString = await comparison.GetDifferencesString();

            Assert.That(differenceString, Does.Not.Contain("same"));
        }
Ejemplo n.º 12
0
        private static void Run(string[] args)
        {
            _logger.Info("Nethermind starting initialization.");

            AppDomain.CurrentDomain.ProcessExit += CurrentDomainOnProcessExit;
            IFileSystem fileSystem = new FileSystem();;

            PluginLoader pluginLoader = new PluginLoader(
                "plugins", fileSystem, typeof(CliquePlugin), typeof(EthashPlugin), typeof(NethDevPlugin));

            pluginLoader.Load(SimpleConsoleLogManager.Instance);

            Type configurationType         = typeof(IConfig);
            IEnumerable <Type> configTypes = new TypeDiscovery().FindNethermindTypes(configurationType)
                                             .Where(ct => ct.IsInterface);

            CommandLineApplication app = new CommandLineApplication {
                Name = "Nethermind.Runner"
            };

            app.HelpOption("-?|-h|--help");
            app.VersionOption("-v|--version", () => ClientVersion.Version, () => ClientVersion.Description);

            GlobalDiagnosticsContext.Set("version", ClientVersion.Version);

            CommandOption configFile         = app.Option("-c|--config <configFile>", "config file path", CommandOptionType.SingleValue);
            CommandOption dbBasePath         = app.Option("-d|--baseDbPath <baseDbPath>", "base db path", CommandOptionType.SingleValue);
            CommandOption logLevelOverride   = app.Option("-l|--log <logLevel>", "log level", CommandOptionType.SingleValue);
            CommandOption configsDirectory   = app.Option("-cd|--configsDirectory <configsDirectory>", "configs directory", CommandOptionType.SingleValue);
            CommandOption loggerConfigSource = app.Option("-lcs|--loggerConfigSource <loggerConfigSource>", "path to the NLog config file", CommandOptionType.SingleValue);

            foreach (Type configType in configTypes.OrderBy(c => c.Name))
            {
                if (configType == null)
                {
                    continue;
                }

                ConfigCategoryAttribute?typeLevel = configType.GetCustomAttribute <ConfigCategoryAttribute>();
                if (typeLevel?.HiddenFromDocs ?? false)
                {
                    continue;
                }

                foreach (PropertyInfo propertyInfo in configType
                         .GetProperties(BindingFlags.Public | BindingFlags.Instance)
                         .OrderBy(p => p.Name))
                {
                    ConfigItemAttribute?configItemAttribute = propertyInfo.GetCustomAttribute <ConfigItemAttribute>();
                    if (!(configItemAttribute?.HiddenFromDocs ?? false))
                    {
                        app.Option($"--{configType.Name.Substring(1).Replace("Config", String.Empty)}.{propertyInfo.Name}", $"{(configItemAttribute == null ? "<missing documentation>" : configItemAttribute.Description + $" (DEFAULT: {configItemAttribute.DefaultValue})" ?? "<missing documentation>")}", CommandOptionType.SingleValue);
                    }
                }
            }

            ManualResetEventSlim appClosed = new ManualResetEventSlim(true);

            app.OnExecute(async() =>
            {
                appClosed.Reset();
                IConfigProvider configProvider = BuildConfigProvider(app, loggerConfigSource, logLevelOverride, configsDirectory, configFile);
                IInitConfig initConfig         = configProvider.GetConfig <IInitConfig>();
                Console.Title           = initConfig.LogFileName;
                Console.CancelKeyPress += ConsoleOnCancelKeyPress;
                NLogManager logManager  = new NLogManager(initConfig.LogFileName, initConfig.LogDirectory);

                _logger = logManager.GetClassLogger();
                if (_logger.IsDebug)
                {
                    _logger.Debug($"Nethermind version: {ClientVersion.Description}");
                }

                ConfigureSeqLogger(configProvider);
                SetFinalDbPath(dbBasePath.HasValue() ? dbBasePath.Value() : null, initConfig);
                LogMemoryConfiguration();

                EthereumJsonSerializer serializer = new EthereumJsonSerializer();
                if (_logger.IsDebug)
                {
                    _logger.Debug($"Nethermind config:{Environment.NewLine}{serializer.Serialize(initConfig, true)}{Environment.NewLine}");
                }

                ApiBuilder apiBuilder        = new ApiBuilder(configProvider, logManager);
                INethermindApi nethermindApi = apiBuilder.Create();
                foreach (Type pluginType in pluginLoader.PluginTypes)
                {
                    if (Activator.CreateInstance(pluginType) is INethermindPlugin plugin)
                    {
                        nethermindApi.Plugins.Add(plugin);
                    }
                }

                nethermindApi.WebSocketsManager = new WebSocketsManager();
                EthereumRunner ethereumRunner   = new EthereumRunner(nethermindApi);
                await ethereumRunner.Start(_processCloseCancellationSource.Token).ContinueWith(x =>
                {
                    if (x.IsFaulted && _logger.IsError)
                    {
                        _logger.Error("Error during ethereum runner start", x.Exception);
                    }
                });

                await Task.WhenAny(_cancelKeySource.Task, _processExit.Task);

                _logger.Info("Closing, please wait until all functions are stopped properly...");
                await ethereumRunner.StopAsync();
                _logger.Info("All done, goodbye!");
                appClosed.Set();

                return(0);
            });

            app.Execute(args);
            appClosed.Wait();
        }
Ejemplo n.º 13
0
        private static async Task SmokeTest(ConfigProvider configProvider, int testIndex, int basePort, bool cancel = false)
        {
            Type type1 = typeof(ITxPoolConfig);
            Type type2 = typeof(INetworkConfig);
            Type type3 = typeof(IKeyStoreConfig);
            Type type4 = typeof(IDbConfig);
            Type type6 = typeof(IKafkaConfig);
            Type type7 = typeof(IEthStatsConfig);
            Type type8 = typeof(ISyncConfig);
            Type type9 = typeof(IBloomConfig);

            Console.WriteLine(type1.Name);
            Console.WriteLine(type2.Name);
            Console.WriteLine(type3.Name);
            Console.WriteLine(type4.Name);
            Console.WriteLine(type6.Name);
            Console.WriteLine(type7.Name);
            Console.WriteLine(type8.Name);
            Console.WriteLine(type9.Name);

            var tempPath = TempPath.GetTempDirectory();

            Directory.CreateDirectory(tempPath.Path);

            Exception exception = null;

            try
            {
                IInitConfig initConfig = configProvider.GetConfig <IInitConfig>();
                initConfig.BaseDbPath    = tempPath.Path;
                initConfig.ChainSpecPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) !, initConfig.ChainSpecPath);

                INetworkConfig networkConfig = configProvider.GetConfig <INetworkConfig>();
                int            port          = basePort + testIndex;
                networkConfig.P2PPort       = port;
                networkConfig.DiscoveryPort = port;

                INethermindApi nethermindApi = new ApiBuilder(configProvider, TestLogManager.Instance).Create();
                nethermindApi.RpcModuleProvider = new RpcModuleProvider(new FileSystem(), new JsonRpcConfig(), TestLogManager.Instance);
                EthereumRunner runner = new EthereumRunner(nethermindApi);

                using CancellationTokenSource cts = new CancellationTokenSource();

                try
                {
                    Task task = runner.Start(cts.Token);
                    if (cancel)
                    {
                        cts.Cancel();
                    }

                    await task;
                }
                catch (Exception e)
                {
                    exception = e;
                }
                finally
                {
                    try
                    {
                        await runner.StopAsync();
                    }
                    catch (Exception e)
                    {
                        if (exception != null)
                        {
                            await TestContext.Error.WriteLineAsync(e.ToString());
                        }
                        else
                        {
                            throw;
                        }
                    }
                }
            }
            finally
            {
                try
                {
                    tempPath.Dispose();
                }
                catch (Exception e)
                {
                    if (exception != null)
                    {
                        await TestContext.Error.WriteLineAsync(e.ToString());
                    }
                    else
                    {
                        throw;
                    }
                }
            }
        }
Ejemplo n.º 14
0
 internal static ApiTypeBuilder Type(ApiBuilder parent, string name, TypeAttributes attributes, Type extends, Type[] interfaces)
 {
     ApiTypeBuilder apiTypeBuilder = new ApiTypeBuilder
       {
     _typeBuilder = parent.ModuleBuilder.DefineType(name, attributes, extends, interfaces),
     _parent = parent
       };
       return apiTypeBuilder;
 }
Ejemplo n.º 15
0
 public HttpRequestBuilder(ApiBuilder apiBuilder)
 {
     _request     = new HttpRequestMessage();
     _apiBuilder  = apiBuilder;
     _baseAddress = _apiBuilder.GetLeftPart();
 }
        public MemoryStream Word2()
        {
            //保存地址
            string savePath = _env.WebRootPath + "/doc/" + $"{DateTime.Now.ToString("yyyyMMddHHmmss")}.doc";
            string fileName = string.Format("{0}", savePath, Encoding.UTF8);


            var xx        = Request.PathBase;
            var er        = SwaggerVersion.v1.ToString();
            var swagger   = _provider.GetSwagger("v1");
            var compoents = swagger.Components;
            var tags      = swagger.Tags;//所有的标题,用于创建导航属性
            var servers   = swagger.Servers;
            var security  = swagger.SecurityRequirements;
            var paths     = swagger.Paths;
            var info      = swagger.Info;


            //遍历所有的组件取出对应返回模型数据
            Dictionary <string, List <ResponeParmeter> > compoentParmeter = new Dictionary <string, List <ResponeParmeter> >();

            foreach (var item in compoents.Schemas)
            {
                //分解参数
                var propertyDetails = GetProperty(item.Value.Properties);
                compoentParmeter.Add(item.Key, propertyDetails);
            }
            //遍历所有的标签,存储在字典集合中
            Dictionary <string, OpenApiTag> tagDic = new Dictionary <string, OpenApiTag>();
            //存放接口信息
            Dictionary <OpenApiTag, List <ApiBuilder> > builderApi = new Dictionary <OpenApiTag, List <ApiBuilder> >();
            OpenApiTag tag = new OpenApiTag()
            {
                Description = "其它",
                Name        = "其它",
            };

            builderApi.Add(tag, new List <ApiBuilder>());
            tagDic.Add("其它", tag);
            foreach (var item in tags)
            {
                List <ApiBuilder> apis = new List <ApiBuilder>();
                builderApi.Add(item, apis);

                tagDic.Add(item.Name, item);
            }

            foreach (var item in paths)
            {
                //实例化一个接口
                ApiBuilder apiBuilder = new ApiBuilder();
                //接口名称
                var apiName = item.Key;
                apiBuilder.Name = apiName;

                //接口的操作(请求方式,请求参数,响应参数,Summary)
                var apiOperations = paths[item.Key].Operations;


                //通过接口操作的所有key值去拿到对应操作的值
                foreach (var operationType in apiOperations.Keys)
                {
                    //某个操作
                    var operation = apiOperations[operationType];
                    //接口的描述
                    apiBuilder.Description = operation.Description;
                    //获取操作的请求方式
                    var menthod = operationType.ToString();
                    apiBuilder.RequestMethod = (RequestMethod)Enum.Parse(typeof(RequestMethod), menthod);
                    //获取接口的请求参数
                    var parmeters = operation.Parameters;
                    foreach (var parameter in parmeters)
                    {
                        RequestParameter reqParmeter = new RequestParameter();
                        reqParmeter.Description   = parameter.Description ?? "";
                        reqParmeter.Name          = parameter.Name;
                        reqParmeter.ParameterType = parameter.Schema.Type;
                        reqParmeter.IsRequried    = parameter.Required;
                        apiBuilder.RequestParameter.Add(reqParmeter);
                    }
                    //获取接口的所有的响应方式
                    var rep = operation.Responses;
                    foreach (var key in rep.Keys)
                    {
                        var repValues = rep[key];
                        var cs        = repValues.Content.Keys;
                        foreach (var c in cs)
                        {
                            var    scheam       = repValues.Content[c].Schema;
                            var    scheamKey    = scheam == null ? "" : (scheam.Reference == null ? "" : scheam.Reference.ReferenceV3);
                            string subScheamKey = scheam == null ? "" : scheamKey.Substring(scheamKey.LastIndexOf("/") + 1);
                            if (compoentParmeter.ContainsKey(subScheamKey))
                            {
                                apiBuilder.ResponeParmeter = compoentParmeter[subScheamKey];
                            }
                        }
                    }
                    //判断属于哪个模块下的
                    var tagName = operation.Tags[0].Name;
                    if (tagDic.ContainsKey(tagName))
                    {
                        var builderKey = tagDic[tagName];
                        builderApi[builderKey].Add(apiBuilder);
                    }
                    else
                    {
                        //如果没有tag属性那么放到其它里面
                        var builderKey = tagDic["其它"];
                        builderApi[builderKey].Add(apiBuilder);
                    }
                }
            }
            MemoryStream ms = new MemoryStream();

            return(ms);
        }