public IHttpActionResult PostTypeRequest(TypeRequest typeRequest) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } db.TypeRequests.Add(typeRequest); try { db.SaveChanges(); } catch (DbUpdateException) { if (TypeRequestExists(typeRequest.typeReaquest_id)) { return(Conflict()); } else { throw; } } return(CreatedAtRoute("DefaultApi", new { id = typeRequest.typeReaquest_id }, typeRequest)); }
public override async Task<bool> Execute(Message message, TelegramBotClient botClient) { var endCommand = false; switch (_typeRequest) { case TypeRequest.Start: _typeRequest = TypeRequest.Resource; await botClient.SendTextMessageAsyncNoKeyboard(message.Chat.Id, Base.DEFAULT_MSG); break; case TypeRequest.Resource: var ret = ApiExplorer.Usage(PveHelper.GetClassApiRoot(PveHelper.GetClient()), message.Text.Trim(), ApiExplorer.OutputType.Html, true, null, true); await botClient.SendDocumentAsyncFromText(message.Chat.Id, ret, "Usage.html"); endCommand = true; break; default: break; } return await Task.FromResult(endCommand); }
public IHttpActionResult PutTypeRequest(int id, TypeRequest typeRequest) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != typeRequest.typeReaquest_id) { return(BadRequest()); } // db.Entry(typeRequest).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!TypeRequestExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
public override async Task <bool> Execute(Message message, TelegramBotClient botClient) { var endCommand = false; switch (_typeRequest) { case TypeRequest.Start: _typeRequest = TypeRequest.Resource; await botClient.SendTextMessageAsyncNoKeyboard(message.Chat.Id, "Insert <b>resource</b> (eg nodes)"); break; case TypeRequest.Resource: var ret = ApiExplorer.Usage(PveHelper.GetClassApiRoot(), message.Text.Trim(), true, null, true); await botClient.SendDocumentAsyncFromText(message.Chat.Id, ret, "Usage.txt"); endCommand = true; break; default: break; } return(await Task.FromResult(endCommand)); }
public IHttpActionResult GetTypeRequest(int id) { TypeRequest typeRequest = db.TypeRequests.Find(id); if (typeRequest == null) { return(NotFound()); } return(Ok(typeRequest)); }
public Request(TypeRequest type, EndPoint from, String path, String query, String host, String userAgent, String language) { this.type = type; this.from = from; this.path = path; this.query = query; this.host = host; this.userAgent = userAgent; this.language = language; }
public IHttpActionResult DeleteTypeRequest(int id) { TypeRequest typeRequest = db.TypeRequests.Find(id); if (typeRequest == null) { return(NotFound()); } db.TypeRequests.Remove(typeRequest); db.SaveChanges(); return(Ok(typeRequest)); }
private Type GetRequestType(MultiRootConnector col, string name) { for (int i = 0; i < typeRequests.Count; i++) { TypeRequest typeRequest = typeRequests[i]; if (typeRequest.Name == name) { // 対応する型が見つかった return(col.SelectedVariableType[i]); } } return(null); }
public IStoreConfiguration <TState> UseReducer <TReducerType, TSectionType>(Expression <StateSubSectionSelectionDelegate <TState, TSectionType> > sectionSelector) where TReducerType : IReducer <TSectionType> { Type reducerType = typeof(ReducerSection <TState, TReducerType, TSectionType>); IParameter[] parameters = new IParameter[] { ConstantParameter.Create <ITypeRequest>("subReducer", new TypeRequest(typeof(TReducerType))), ConstantParameter.Create <Expression <StateSubSectionSelectionDelegate <TReducerType, TSectionType> > >(nameof(sectionSelector), sectionSelector) }; TypeRequest typeRequest = new TypeRequest(reducerType, parameters); m_reducers.Add(typeRequest); return(this); }
public static Request InitializeRequest(String msg, TcpClient client, TypeRequest type) { if (String.IsNullOrEmpty(msg)) { return(null); } const char newLine = '\n'; String[] tokents = msg.Split(newLine); var(host, userAgent, language, fullpath) = DefaultParse(tokents); switch (type) { case TypeRequest.GET: { var(path, query) = GetRequest(tokents, fullpath); var request = new Request(type, client.Client.RemoteEndPoint, path, query, host, userAgent, language); var Querys = ParserRequest.GETQuerys(query); request.InitializeGET(Querys); return(request); } case TypeRequest.POST: { var(contentType, contentLength, referer, query) = PostRequest(tokents, client); var request = new Request(type, client.Client.RemoteEndPoint, fullpath, query, host, userAgent, language); var Querys = ParserRequest.GETQuerys(query); request.InitializePOST(referer, contentType, contentLength, Querys); return(request); } default: break; } return(default(Request)); }
private async Task <bool> ExecuteOrChoose(Message message, TelegramBotClient botClient) { var endCommand = false; var cmdArgs = StringHelper.TokenizeCommandLineToList(_messageText); if (cmdArgs.Count == 0) { //request resource _typeRequest = TypeRequest.Resource; await botClient.SendTextMessageAsyncNoKeyboard(message.Chat.Id, "Insert <b>resource</b> (eg nodes)"); } else { var resource = cmdArgs[0]; if (!resource.StartsWith("/")) { resource = "/" + resource; } var requestArgs = StringHelper.GetArgumentTags(resource); var parameters = cmdArgs.ToArray()[1..];
public TStoreType CreateStore <TStoreType>() where TStoreType : IStore <TState> { if (m_activatorTypeRequest == null) { throw new MissingActivatorException(); } List <IReducer <TState> > reducers = new List <IReducer <TState> >(); List <IMiddleware> middlewares = new List <IMiddleware>(); List <IParameter> parameters = new List <IParameter>(); // Create activator IActivator activator = DefaultActivator.Get <IActivator>(m_activatorTypeRequest); parameters.Add(ConstantParameter.Create <IActivator>(nameof(activator), activator)); // Logging ILog logger = activator.Get <ILog>(m_loggerTypeRequest); parameters.Add(new ConstantParameter("log", logger, typeof(ILog))); foreach (ITypeRequest singletonRequest in m_singletonTypeRequests) { object instance = activator.Get(singletonRequest, parameters); IParameter parameter = new ConstantParameter("", instance, singletonRequest.Type); parameters.Add(parameter); } foreach (ITypeRequest reducerTypeRequest in m_reducers) { IReducer <TState> reducer = activator.Get <IReducer <TState> >(reducerTypeRequest, parameters); reducers.Add(reducer); } ReducerMiddleware <TState> rootDispatcher = new ReducerMiddleware <TState>(reducers); ActionDispatchDelegate next = rootDispatcher.InvokeAsync; foreach (ITypeRequest middlewareTypeRequest in m_middleware) { IParameter nextParameter = ConstantParameter.Create <ActionDispatchDelegate>("next", next); IAbstractMiddleware abstractMiddleware = activator.Get <IAbstractMiddleware>(middlewareTypeRequest, parameters.Clone(nextParameter)); switch (abstractMiddleware) { case IMiddleware middleware: next = (p) => middleware.InvokeAsync(p); break; case IMiddleware <TState> typedMiddleware: next = (p) => typedMiddleware.InvokeAsync((ActionContext <TState>)p); break; default: throw new InvalidMiddlewareException(abstractMiddleware.GetType()); } } IList <IParameter> storeParameters = parameters.Clone( ConstantParameter.Create <TState>("state", m_initialState), ConstantParameter.Create <ActionDispatchDelegate>("dispatch", next) ); TypeRequest storeRequest = new TypeRequest(typeof(TStoreType)); TStoreType store = DefaultActivator.Get <TStoreType>(storeRequest, storeParameters); return(store); }
public override async Task RequestUrlAsync(TypeRequest typeRequest) { await CreatorRequestAsync(typeRequest); }
public static Task View(HttpContext context, ViewBag viewBag, ActionCheckLink Model, TypeRequest typeResponse, bool NotCache = false) { #region Код ответа if (viewBag.IsErrorRule) { context.Response.StatusCode = 500; } else { switch (Model) { case ActionCheckLink.allow: { context.Response.StatusCode = 303; break; } case ActionCheckLink.Is2FA: { context.Response.StatusCode = 200; break; } case ActionCheckLink.deny: { context.Response.StatusCode = 403; break; } default: { context.Response.StatusCode = 500; break; } } } #endregion // Данные ответа Trigger.OnResponseView((viewBag.IP, viewBag.UserAgent, viewBag.Referer, viewBag.DomainID, viewBag.method, viewBag.host, viewBag.uri, viewBag.FormData, context.Response.StatusCode, viewBag.IsCacheView)); #region Локальный метод - "RenderTitle" string RenderTitle() { if (viewBag.IsErrorRule) { return("Ошибка"); } else { switch (Model) { case ActionCheckLink.allow: return("303"); case ActionCheckLink.deny: return("Доступ запрещен"); case ActionCheckLink.Is2FA: return("Aвторизация 2FA"); default: return("Неизвестная ошибка"); } } } #endregion #region Локальный метод - "RenderScript" string RenderScript() { if (Model == ActionCheckLink.Is2FA) { string hash = SHA256.Text($"{viewBag.host}:{viewBag.method}:{viewBag.uri}:{viewBag.Referer}:{PasswdTo.salt}"); return(@" <script> function unlock(e) { e.preventDefault(); document.getElementById('unlockError').style.display = 'none'; var password = document.getElementById('unlockPassword').value; $.post('" + viewBag.CoreAPI + "/unlock/2fa', { password: password, host: '" + viewBag.host + "', method: '" + viewBag.method + "', uri: '" + WebUtility.UrlEncode(viewBag.uri) + "', referer: '" + WebUtility.UrlEncode(viewBag.Referer) + "', hash: '" + hash + @"' }, function (data) { var json = JSON.parse(JSON.stringify(data)); if (json.msg) { document.getElementById('unlockError').style.display = 'block'; document.getElementById('unlockError').innerText = json.msg; } else if (json.result) { window.location.reload(); } else { document.getElementById('unlockError').style.display = 'block'; document.getElementById('unlockError').innerText = 'Неизвестная ошибка'; } }) } </script>"); } return(string.Empty); } #endregion #region Локальный метод - "RenderBody" string RenderBody() { if (viewBag.IsErrorRule) { return(@"<div class='code'>500</div> <div class='title'>" + viewBag.ErrorTitleException + @"</div> <pre>" + viewBag.ErrorRuleException + @"</pre>"); } else if (Model == ActionCheckLink.Is2FA) { return(@"<div class='code'>2FA</div> <div class='title'>Aвторизация</div> <pre>Введите пароль безопасности для 2FA</pre> <form method='post' action='/' onsubmit='unlock(event)'> <div class='form-group'> <div class='input-group form'> <span class='input-group-addon'><i class='fa fa-lock'></i></span> <input class='form-control' id='unlockPassword' type='password' name='password'> </div> <button type='submit' class='btn-unlock'>Unlock</button> <div id='unlockError' class='errorMsg'>eroror</div> </div> </form>"); } else if (Model == ActionCheckLink.allow) { return(@"<div class='code'>303</div> <div class='title'>Отправить в backend</div>"); } else if (Model == ActionCheckLink.deny) { return(@"<div class='code'>403</div> <div class='title'>Доступ запрещен</div>"); } else { return(@"<div class='code'>500</div> <div class='title'>Неизвестная ошибка</div>"); } } #endregion #region Локальный метод - "RenderDebug" string RenderDebug() { if (viewBag.DebugEnabled) { #region jsonDomain string jsonDomain() { if (viewBag.jsonDomain == null) { return(string.Empty); } return(Regex.Replace(viewBag.jsonDomain.Replace("\\\\", "\\"), "(<!--|-->|\"Auth2faToPasswd\": \"[^\"]+\")", r => { switch (r.Groups[1].Value) { case "<!--": return "<!--"; case "-->": return "-->"; default: { if (r.Groups[1].Value.StartsWith("\"Auth2faToPasswd\":")) { return "\"Auth2faToPasswd\": \"Используется\""; } } break; } return r.Groups[1].Value; })); } #endregion return(@" <!-- IP: " + viewBag?.IP + @" UserAgent: " + viewBag?.UserAgent + @" method: " + viewBag?.method + @" host: " + viewBag?.host + @" uri: " + viewBag?.uri + @" FormData: " + viewBag?.FormData + @" Referer: " + viewBag?.Referer + @" IsCacheView: " + viewBag.IsCacheView + @" " + viewBag.antiBotToGlobalConf?.Replace("\\\\", "\\")?.Replace("<!--", "<!--")?.Replace("-->", "-->") + @" " + jsonDomain() + @" --> "); } return(string.Empty); } #endregion #region Кешируем ответ if (jsonDB.Cache.Checklink != 0 && !NotCache && !viewBag.IsCacheView && context.Response.StatusCode != 200) { memoryCache.Set(KeyToMemoryCache.CheckLinkToCache(viewBag.method, viewBag.host, viewBag.uri), new ResponseView() { ActionCheckLink = Model, TypeResponse = typeResponse, IsErrorRule = viewBag.IsErrorRule, CacheTime = viewBag.CreateCacheView }, TimeSpan.FromMilliseconds(jsonDB.Cache.Checklink)); } #endregion #region Ответ без html if (!jsonDB.Base.DebugEnabled) { // Отдавать html ненужно if (context.Response.StatusCode == 303 || (Startup.cmd.StatusCode.Checklink && context.Response.StatusCode != 200)) { return(Task.FromResult(true)); } } #endregion // Html ответ return(context.Response.WriteAsync(@"<!DOCTYPE html> <html lang='ru-RU'> <head> <title>" + RenderTitle() + @"</title> <meta http-equiv='Content-Type' content='text/html; charset=utf-8'> <meta http-equiv='X-UA-Compatible' content='IE=edge'> <meta name='viewport' content='width=device-width, initial-scale=1, user-scalable=no'> <link rel='stylesheet' href='/statics/style.css'> " + (Model == ActionCheckLink.Is2FA ? "<script type='text/javascript' src='/statics/jquery.min.js'></script>" : string.Empty) + @" </head> <body> " + RenderScript() + @" <div class='error'> <div class='error-block'> " + RenderBody() + @" <div class='copyright'> <div> © 2018 <strong>ISPCore</strong>. All rights reserved. </div> <div> <a href='/'>Главная сайта</a> / <a href='http://core-system.org/' target='_blank'>Core System</a> </div> </div> </div> </div> </body> </html> " + RenderDebug() + @" ", context.RequestAborted)); }
private async Task CreatorRequestAsync(TypeRequest typeRequest) { _requestType = typeRequest; try { switch (typeRequest) { case TypeRequest.Post: using ( _response = await ClientWeb.PostAsync(new Uri(ClientWeb.BaseAddress, _urlController), new StringContent(_contentPost, Encoding.UTF8, _contentType.MediaType))) { if (_response.IsSuccessStatusCode || _response.StatusCode == HttpStatusCode.Forbidden || _response.StatusCode == HttpStatusCode.BadRequest || _response.StatusCode == HttpStatusCode.InternalServerError) { using (var content = _response.Content) { _responseStream = await content.ReadAsStreamAsync(); using (var srs = new StreamReader(_responseStream)) { _responseString = srs.ReadToEnd(); } } } } break; case TypeRequest.Get: using (_response = await ClientWeb.GetAsync(new Uri(ClientWeb.BaseAddress, _urlController))) { if (_response.IsSuccessStatusCode || _response.StatusCode == HttpStatusCode.Forbidden || _response.StatusCode == HttpStatusCode.BadRequest) { using (var content = _response.Content) { _responseStream = await content.ReadAsStreamAsync(); using (var srs = new StreamReader(_responseStream)) { _responseString = srs.ReadToEnd(); } } } ClientWeb.Dispose(); } break; case TypeRequest.Delete: break; default: throw new ArgumentOutOfRangeException(nameof(typeRequest), typeRequest, null); } } catch { throw; } }
public override string GetResponse(string link, TypeRequest tRequest = TypeRequest.GET, string refererLink = "", string cookie = "") { var bResponce = new byte[512]; string request = string.Empty; string result = string.Empty; string type = string.Empty; string host = Helpers.GetHostOfLink(link); if (!string.IsNullOrEmpty(cookie)) { cookie = "Cookie:" + cookie; } if (string.IsNullOrEmpty(refererLink)) { refererLink = "https://www.google.ru/"; } string reqOption = "Connection: keep-alive\r\n" + "User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)" + "Accept: text/html, application/xhtml+xml, */*\r\n" + // + "Referer: " + refererLink + "\r\n" + "Accept-Encoding: gzip,deflate,sdch\r\n" + "Accept-Language: ru-RU\r\n" + cookie; switch (tRequest) { case TypeRequest.GET: { type = "GET "; break; } case TypeRequest.HEAD: { type = "HEAD "; break; } case TypeRequest.POST: { type = "POST "; break; } } request = type + link + " HTTP/1.1\r\n" + "Host: " + host + "\r\n\r\n" + reqOption; var bytesSent = Encoding.ASCII.GetBytes(request); try { int offset = 0; while (true) { m_socket.Send(bytesSent); while (true) { SocketError er; offset += m_socket.Receive(bResponce, 0, bResponce.Length, SocketFlags.None, out er); result += Encoding.UTF8.GetString(bResponce); if (bResponce[0] == 0x00 || result.Contains("302 Found") || result.Contains("</html>")) { break; } } if (!result.Contains("302 Found")) { break; } break; link = result.Substring(result.IndexOf("Location:") + 9); link = link.Remove(link.IndexOf("\r")); request = type + link + " HTTP/1.1\r\n" + "Host: " + host + "\r\n\r\n" + reqOption; bytesSent = Encoding.ASCII.GetBytes(request); } if (result.Contains("<html")) { result = result.Substring(0, result.IndexOf("</html>") + 7); } } catch (SocketException) { m_socket.Close(); //throw; } return(result); }
public static void SetCountRequestToHour(TypeRequest type, string host, bool EnableCountRequest) { #region Локальный метод - "SetCount" void SetCount(NumberOfRequestHour dt) { switch (type) { case TypeRequest._200: dt.Count200++; break; case TypeRequest._303: dt.Count303++; break; case TypeRequest._403: dt.Count403++; break; case TypeRequest._401: dt.Count401++; break; case TypeRequest._500: dt.Count500++; break; case TypeRequest._2fa: dt.Count2FA++; break; } } #endregion if (EnableCountRequest) { string keyNumberOfRequestToHour = KeyToMemoryCache.IspNumberOfRequestToHour(DateTime.Now); if (memoryCache.TryGetValue(keyNumberOfRequestToHour, out IDictionary <string, NumberOfRequestHour> DataNumberOfRequestDay)) { // Если хост есть в кеше if (DataNumberOfRequestDay.TryGetValue(host, out NumberOfRequestHour dtValue)) { SetCount(dtValue); } // Если хоста нету в кеше else { var dt = new NumberOfRequestHour(); dt.Time = DateTime.Now; SetCount(dt); DataNumberOfRequestDay.Add(host, dt); } } else { // Считаем запрос var dt = new NumberOfRequestHour(); dt.Time = DateTime.Now; SetCount(dt); // Создаем кеш memoryCache.Set(keyNumberOfRequestToHour, new Dictionary <string, NumberOfRequestHour>() { [host] = dt }, TimeSpan.FromHours(2)); } } }
private RequestReturn Request <T>(string url, TypeRequest typerequest, byte[] bytedata = null, string[] moreheader = null) { RequestReturn result = new RequestReturn(); http_request = new HttpRequest_(new Uri(url), typerequest.ToString()); #if DEBUG http_request.debug = Debug; #endif if (typeof(T) == typeof(Stream) && bytedata == null && typerequest != TypeRequest.PUT) { http_request.ReceiveTimeout = this.ReceiveTimeout_; } http_request.AddHeader(Host); http_request.AddHeader("Authorization", "Bearer " + Token.access_token); if (moreheader != null) { foreach (string h in moreheader) { http_request.AddHeader(h); } } else if (bytedata != null && (typerequest == TypeRequest.POST || typerequest == TypeRequest.PATCH)) { http_request.AddHeader(Header_ContentTypeApplicationJson); } if ((typerequest == TypeRequest.POST || typerequest == TypeRequest.DELETE) && bytedata == null) { http_request.AddHeader("Content-Length: 0"); } if (bytedata != null && (typerequest == TypeRequest.POST || typerequest == TypeRequest.PATCH)) { http_request.AddHeader("Content-Length: " + bytedata.Length.ToString()); Stream stream = http_request.SendHeader_And_GetStream(); stream.Write(bytedata, 0, bytedata.Length); stream.Flush(); #if DEBUG Console.WriteLine("DriveAPIHttprequestv2: >>send data: " + Encoding.UTF8.GetString(bytedata)); #endif } try //get response { if (typeof(T) == typeof(string)) { result.DataTextResponse = http_request.GetTextDataResponse(false, true); result.HeaderResponse = http_request.HeaderReceive; } else if (typeof(T) == typeof(Stream)) { if (bytedata != null || typerequest == TypeRequest.PUT) { result.stream = http_request.SendHeader_And_GetStream(); //get stream upload } else { result.stream = http_request.ReadHeaderResponse_and_GetStreamResponse(true); //get stream response } } else { throw new Exception("Error typereturn."); } return(result); } catch (HttpException ex) { result.DataTextResponse = http_request.TextDataResponse; GoogleDriveErrorMessage message; try { message = Newtonsoft.Json.JsonConvert.DeserializeObject <GoogleDriveErrorMessage>(ex.Message); } catch { throw ex; }// other message; switch (message.error.code) { case 204: if (typerequest == TypeRequest.DELETE) { return(result); } break; // delete result case 401: if (Monitor.TryEnter(SyncRefreshToken)) { try { Monitor.Enter(SyncRefreshToken); Token = oauth.RefreshToken(); TokenRenewEvent.Invoke(Token); return(Request <T>(url, typerequest, bytedata, moreheader)); } finally { Monitor.Exit(SyncRefreshToken); } } else { try { Monitor.Enter(SyncRefreshToken); return(Request <T>(url, typerequest, bytedata, moreheader)); } finally { Monitor.Exit(SyncRefreshToken); } } case 403: Error403 err = (Error403)Enum.Parse(typeof(Error403), message.error.errors[0].reason); switch (err) { case Error403.forbidden: case Error403.appNotAuthorizedToFile: case Error403.domainPolicy: case Error403.insufficientFilePermissions: #if DEBUG Console.WriteLine("DriveAPIHttprequestv2 Error403: " + result.DataTextResponse); #endif break; case Error403.dailyLimitExceeded: case Error403.rateLimitExceeded: case Error403.sharingRateLimitExceeded: case Error403.userRateLimitExceeded: if (limit != null) { limit.Invoke(); } #if DEBUG Console.WriteLine("DriveAPIHttprequestv2 LimitExceeded: " + err.ToString()); #endif try { Monitor.Enter(SyncLimitExceeded); Thread.Sleep(5000); } finally { Monitor.Exit(SyncLimitExceeded); } return(Request <T>(url, typerequest, bytedata, moreheader)); case Error403.abuse: //file malware or virut if (acknowledgeAbuse_) { return(Request <T>(url + "&acknowledgeAbuse=true", typerequest, bytedata, moreheader)); } else { break; } default: break; } break; case 308: if (typerequest == TypeRequest.PUT && typeof(T) == typeof(Stream)) { result.stream = http_request.GetStream(); return(result); } else { break; } default: break; } throw ex; } }
public override string GetResponse(string domainName, TypeRequest tRequest = TypeRequest.GET, string refererLink = "", string cookie = "") { throw new NotImplementedException(); }
private async Task <bool> ExecuteOrChoose(Message message, TelegramBotClient botClient) { var endCommand = false; var cmdArgs = ParserExtensions.Parse(new Parser(), _messageText).Tokens.Select(a => a.Value).ToList(); if (cmdArgs.Count == 0) { //request resource _typeRequest = TypeRequest.Resource; await botClient.SendTextMessageAsyncNoKeyboard(message.Chat.Id, DEFAULT_MSG); } else { var resource = cmdArgs[0]; if (!resource.StartsWith("/")) { resource = "/" + resource; } var requestArgs = StringHelper.GetArgumentTags(resource); var parameters = cmdArgs.Skip(1).ToArray(); var parametersArgs = parameters.SelectMany(a => StringHelper.GetArgumentTags(a)).ToList(); if (requestArgs.Count() > 0) { //fix request resource = resource.Substring(0, resource.IndexOf(StringHelper.CreateArgumentTag(requestArgs[0])) - 1); var pveClient = PveHelper.GetClient(); var(Values, Error) = ApiExplorer.ListValues(pveClient, PveHelper.GetClassApiRoot(pveClient), resource); if (!string.IsNullOrWhiteSpace(Error)) { //return error await botClient.SendTextMessageAsyncNoKeyboard(message.Chat.Id, Error); endCommand = true; } else { _typeRequest = TypeRequest.ArgResource; await botClient.ChooseInlineKeyboard(message.Chat.Id, $"Choose {requestArgs[0]}", Values.Select(a => ("", a.Value, a.Value))); } } else if (parametersArgs.Count() > 0) { //request parameter value _typeRequest = TypeRequest.ArgParameter; await botClient.SendTextMessageAsyncNoKeyboard(message.Chat.Id, $"Insert value for parmater <b>{parametersArgs[0]}</b>"); } else if (requestArgs.Count() == 0) { var pveClient = PveHelper.GetClient(); //execute request var(ResultCode, ResultText) = ApiExplorer.Execute(pveClient, PveHelper.GetClassApiRoot(pveClient), resource, MethodType, ApiExplorer.CreateParameterResource(parameters), false, ApiExplorer.OutputType.Html); if (ResultCode != 200) { await botClient.SendTextMessageAsync(message.Chat.Id, $"Error: {ResultText}"); } else { var filename = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(resource).Replace("/", ""); await botClient.SendDocumentAsyncFromText(message.Chat.Id, ResultText, $"{filename}.html"); } endCommand = true; } } if (endCommand) { _messageText = ""; } return(await Task.FromResult(endCommand)); }
public MicroServiceAttribute(string route, TypeRequest action) { this._route = route; this._action = action; }
public abstract Task RequestUrlAsync(TypeRequest typeRequest);
public static void SetCountRequestToMinute(string IP, TypeRequest type, string host, int DomainID, bool EnableCountRequest) { if (type != TypeRequest.All && type != TypeRequest._303) { return; } #region Локальный метод - "SetCount" void SetCount(NumberOfRequestMinute dt) { switch (type) { case TypeRequest._303: dt.Count303++; Trigger.OnRequestToMinute((IP, type, dt.Count303, host, DomainID)); break; case TypeRequest.All: dt.NumberOfRequest++; Trigger.OnRequestToMinute((IP, type, dt.NumberOfRequest, host, DomainID)); break; } } #endregion if (EnableCountRequest) { string keyNumberOfRequestToMinutes = KeyToMemoryCache.IspNumberOfRequestToMinutes(DateTime.Now); if (memoryCache.TryGetValue(keyNumberOfRequestToMinutes, out IDictionary <string, NumberOfRequestMinute> NumberOfRequestsPerMinute)) { // Если хост есть в кеше if (NumberOfRequestsPerMinute.TryGetValue(host, out NumberOfRequestMinute dtValue)) { SetCount(dtValue); } // Если хоста нету в кеше else { var dt = new NumberOfRequestMinute(); dt.DomainID = DomainID; SetCount(dt); NumberOfRequestsPerMinute.Add(host, dt); } } else { // Считаем запрос var dt = new NumberOfRequestMinute(); dt.DomainID = DomainID; SetCount(dt); // Создаем кеш memoryCache.Set(keyNumberOfRequestToMinutes, new Dictionary <string, NumberOfRequestMinute>() { [host] = dt }, TimeSpan.FromMinutes(3)); } } }
public abstract string GetResponse(string domainName, TypeRequest tRequest = TypeRequest.GET, string refererLink = "", string cookie = "");