/// <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; }
/// <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; }
/// <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; }
/// <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; }
/// <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(); }
/// <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(); }
/// <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; }
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))); }
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); } }
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); } }
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")); }
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(); }
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; } } } }
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; }
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); }