private BaseHttpClient GetClient() { var customHeaders = GetHttpHeaders(); var client = new BaseHttpClient(_httpClient, customHeaders, _applicationParameters.SecureToken); return(client); }
private async Task <string> GetTrafficFromProvider(string code) { using (var _httpProvider = new BaseHttpClient()) { return(await _httpProvider.GetRegion(code)); } }
public async Task <IReadOnlyCollection <IViewerMetricAnalytic> > GetViewerMetricsAsync(string channelId, DateTimeOffset from, DateTimeOffset?to = null) { var query = GetAnalyticDateRange(from, to); var path = await BaseHttpClient.GetPathWithQueryAsync($"channels/{channelId}/analytics/tsdb/viewersMetrics", query); return(await RestClient.GetAsync <IReadOnlyCollection <ViewerMetricAnalytic> >(path)); }
private async Task <bool> ProcessException(BaseHttpClient client, Exception e, HttpContentModel model) { var exceptionPip = exceptionPipelines.ToArray(); foreach (var pipeline in exceptionPip) { var rpip = pipeline.Invoke(client, e, model.request, model.response, model.meta); if (rpip is Exception) { e = rpip as Exception; continue; } else if (rpip is RequestEntity) { model.request = rpip as RequestEntity; return(await this.Send(client, model, model.callback)); } else if (rpip is ResponseEntity) { var resp = rpip as ResponseEntity; model.response = resp; model.callback.Invoke(model); return(resp.StatusCode == 200); } } return(false); }
public override object BeforeResponse(BaseHttpClient client, RequestEntity request, ResponseEntity response, MetaModel meta) { if (request.Url.ToString().Contains("11315.com")) { string content = response.GetHtml(); if (content.Contains("系统检测到您的请求存在异常")) { string capthaUrl = "http://www.11315.com/authCode.jpg?t=" + DateHelper.GetTimestamp(DateTime.Now); var newRequest = request; newRequest.Url = new Uri(capthaUrl); var _task = client.SendAsync(newRequest); _task.Wait(); var result = _task.Result; #region 验证码解析 string code = ""; System.IO.FileStream fs = new System.IO.FileStream("capthca.jpg", System.IO.FileMode.OpenOrCreate); fs.Write(result.HtmlContent); fs.Close(); Console.WriteLine("验证码图片已储存,请输入验证码:"); code = Console.ReadLine(); #endregion var document = parser.ParseDocument(content); string url = "http://www.11315.com/validateAccess"; Dictionary <string, string> param = new Dictionary <string, string>(); param.Add("ip", document.QuerySelector("input[name='ip']").GetAttribute("value")); param.Add("last_url", document.QuerySelector("input[name='last_url']").GetAttribute("value")); param.Add("random", code); return(this.http.CreatePostRequest(url, UrlHelper.ConvertUrlParams(param), "application/x-www-form-urlencoded")); } } return(response); }
public BargainsForCouplesProvider(IConfiguration configuration) { var baseUrl = configuration[ApiUrl]; _apiCode = configuration[ApiKey]; // don't forget to register the User Secret _httpClient = new BaseHttpClient(baseUrl); }
public override object BeforeRequest(BaseHttpClient client, RequestEntity request, MetaModel meta) { if (request.Url.ToString().Contains("baidu.com")) { request.Referer = "https://www.baidu.com/s?wd=%E5%A4%B1%E4%BF%A1%E8%A2%AB%E6%89%A7%E8%A1%8C%E4%BA%BA&rsv_spt=1&rsv_iqid=0xe03c5d860001a034&issp=1&f=3&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=1&oq=%25E5%25A4%25B1%25E4%25BF%25A1%25E8%25A2%25AB%25E6%2589%25A7%25E8%25A1%258C&rsv_t=fd58%2BjDTCvnSUCJC1ekbNr77Bsd00piEZw%2BiorTCFAP304oP0zR0axx%2BmDGK44men588&rsv_pq=a0c069fa000b1335&rsv_sug3=24&rsv_sug1=21&rsv_sug7=100&rsv_sug2=1&prefixsug=%25E5%25A4%25B1%25E4%25BF%25A1%25E8%25A2%25AB%25E6%2589%25A7%25E8%25A1%258C&rsp=1&rsv_sug4=1369&rsv_sug=2"; } return(request); }
public override object BeforeException(BaseHttpClient client, Exception e, RequestEntity request, ResponseEntity response, MetaModel meta) { if (e is CatchHttpCodeException) { return(request);//重新请求 } return(base.BeforeException(client, e, request, response, meta)); }
public async Task <IEnumerable <Competition> > GetCompetitions() { BaseHttpClient client = new BaseHttpClient(this.baseUrl, this.competitionsPath, this.headers); var response = await client.Get(); if (response.StatusCode == System.Net.HttpStatusCode.OK) { return(await response.Content.ReadAsAsync <IEnumerable <Competition> >()); } throw new Exception($"Não foi possível retornar as competições: {response.StatusCode} - {response.ReasonPhrase}."); }
public override object BeforeRequest(BaseHttpClient client, RequestEntity request, MetaModel meta) { request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"; request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"; if (request.Url.ToString().Contains("baidu")) { request.Accept = "application/json, text/javascript, */*; q=0.01"; request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"; request.Referer = "https://xin.baidu.com/s?q=%E9%9E%8D%E5%B1%B1%E6%94%AF%E8%B7%AF&t=3&fl=1&castk=LTE%3D"; } return(base.BeforeRequest(client, request, meta)); }
public async Task <League> GetLeague(int id) { BaseHttpClient client = new BaseHttpClient(this.baseUrl, $"{this.competitionsPath}{id}/{this.leagueTablePath}", this.headers); var response = await client.Get(); if (response.StatusCode == System.Net.HttpStatusCode.OK) { return(await response.Content.ReadAsAsync <League>()); } throw new Exception($"Não foi possível retornar as liga: {response.StatusCode} - {response.ReasonPhrase}."); }
/// <summary> /// Gets the response from API /// </summary> /// <returns>HTTP response as string</returns> private static async Task <string> GetDataAsync() { var httpClient = BaseHttpClient.GetClient(); var httpResponse = await httpClient.GetAsync(Configurator.PeopleApi); if (httpResponse.IsSuccessStatusCode) { return(await httpResponse.Content.ReadAsStringAsync()); } return(string.Empty); }
public static Event GetEvent([ActivityTrigger] DurableActivityContext inputs) { (int EventId, string Path)input = inputs.GetInput <(int, string)>(); _client = InitClient(input.Path); var request = new EventIdRequest() { Id = input.EventId }; return(_client.EventsClient.GetEvent(request)); }
public static int?CreateEvent([ActivityTrigger] DurableActivityContext inputs) { (Event @Event, string Path)input = inputs.GetInput <(Event, string)>(); _client = InitClient(input.Path); var request = new PostRequest <Event>() { Payload = input.Event }; return(_client.EventsClient.PostEvent(request)); }
public object UrlFilter(BaseHttpClient client, RequestEntity request, MetaModel meta) { if (meta?.Get <bool>("dontFilter") == true) { return(request); } if (this.bloomFilter.ContainsValue(request.Url.ToString())) { return(null); } this.bloomFilter.AddValue(request.Url.ToString()); return(request); }
public static async Task <bool> RunAsync( [OrchestrationTrigger] DurableOrchestrationContextBase context, ExecutionContext eContext) { _client = Client.InitializeClient(eContext.FunctionAppDirectory); var place = context.GetInput <Place>(); try { log.Information("Calling CreatePlace function"); place.Id = await context.CallActivityAsync <int>(PlacesConstants.CreatePlace, place); } catch (Exception ex) { log.Error(ex, $"Error occured in CreatePlace function {ex.Message} "); } try { log.Information($"Calling UpdatePlace function for Place with Id: {place.Id}"); place = await context.CallActivityAsync <Place>(PlacesConstants.UpdatePlace, place.Id); } catch (Exception ex) { log.Error(ex, $"Error occured in UpdatePlace function {ex.Message}"); } try { log.Information($"Calling DeletePlace function for Place with Id: {place.Id}"); var deleted = await context.CallActivityAsync <bool>(PlacesConstants.DeletePlace, place.Id); } catch (Exception ex) { log.Error(ex, $"Error occured in DeletePlace function {ex.Message}"); } try { log.Information($"Calling GetPlace function with palceId : {place.Id}"); place = await context.CallActivityAsync <Place>(PlacesConstants.GetPlace, place.Id); } catch (Exception ex) { log.Error(ex, $"Error occured in GetPlace function {ex.Message}"); } return(place != null); }
/// <summary> /// Generic method used to send a request to the Api /// </summary> /// <param name="requestUri">Request Uri</param> /// <param name="requestMessage">Request Message</param> /// <returns>Request response message</returns> private static T Post <T>(string requestUri, object requestMessage) where T : BaseResponseMessage { T result; var jsonObject = JsonConvert.SerializeObject(requestMessage); using (var httpClient = new BaseHttpClient()) using (var content = new BaseHttpContent(jsonObject)) using (HttpResponseMessage response = httpClient.PostAsync(requestUri, content).Result) { response.EnsureSuccessStatusCode(); Task <string> responseBody = response.Content.ReadAsStringAsync(); result = JsonConvert.DeserializeObject <T>(responseBody.Result); result.OperationSuccess = true; } return(result); }
public static Event UpdateEvent([ActivityTrigger] DurableActivityContext inputs) { (int EventId, string Path)input = inputs.GetInput <(int, string)>(); _client = InitClient(input.Path); var newEvent = new Event() { City = "Skopje" }; var request = new PutRequest <Event>() { Id = input.EventId, Payload = newEvent }; return(_client.EventsClient.PutEvent(request)); }
public async Task ShouldReturn_Valid_AuthUrlWithScopes() { var credentials = new MixerCredentials("MyClientId", "https://localhost.com", "MyState"); var mockFactory = new Mock <IHttpClientFactory>(); var mockClientLogger = new Mock <ILogger <BaseHttpClient> >(); var mockPolicyProvider = new Mock <IPolicyProvider>(); var client = new BaseHttpClient(mockFactory.Object, mockPolicyProvider.Object, mockClientLogger.Object); client.Initialize(credentials); var url = await client.GetAuthorizeUrlAsync(CompoundScopes.SuperUser); url.Should().Contain("state=MyState"); url.Should().Contain("client_id=MyClientId"); url.Should().Contain("redirect_uri=https%3A%2F%2Flocalhost.com"); url.Should().Contain("response_type=code"); url.Should().Contain("scope=user%3Aact_as+achievement%3Aview%3Aself+channel%3Aanalytics%3Aself+channel%3Aclip%3Acreate%3Aself+channel%3Aclip%3Adelete%3Aself+channel%3Acostream%3Aself+channel%3AdeleteBanner%3Aself+channel%3Adetails%3Aself+channel%3Afollow%3Aself+channel%3AstreamKey%3Aself+channel%3Ateststream%3Aview%3Aself+channel%3Aupdate%3Aself+chat%3Abypass_catbot+chat%3Abypass_filter+chat%3Abypass_links+chat%3Abypass_slowchat+chat%3Acancel_skill+chat%3Achange_ban+chat%3Achange_role+chat%3Achat+chat%3Aclear_messages+chat%3Aconnect+chat%3Aedit_options+chat%3Agiveaway_start+chat%3Apoll_start+chat%3Apoll_vote+chat%3Apurge+chat%3Aremove_message+chat%3Atimeout+chat%3Aview_deleted+chat%3Awhisper+delve%3Aview%3Aself+interactive%3Amanage%3Aself+interactive%3Arobot%3Aself+invoice%3Aview%3Aself+log%3Aview%3Aself+oauth%3Amanage%3Aself+recording%3Amanage%3Aself+redeemable%3Acreate%3Aself+redeemable%3Aredeem%3Aself+redeemable%3Aview%3Aself+resource%3Afind%3Aself+subscription%3Acancel%3Aself+subscription%3Acreate%3Aself+subscription%3Arenew%3Aself+subscription%3Aview%3Aself+team%3Amanage%3Aself+transaction%3Acancel%3Aself+transaction%3Aview%3Aself+user%3Aanalytics%3Aself+user%3Adetails%3Aself+user%3AgetDiscordInvite%3Aself+user%3Alog%3Aself+user%3Anotification%3Aself+user%3Aseen%3Aself+user%3Aupdate%3Aself+user%3AupdatePassword%3Aself"); }
public object DeepControl(BaseHttpClient client, RequestEntity request, MetaModel meta) { if (meta == null) { meta = new MetaModel(); } if (meta["deep"] != null) { if (meta["deep"].GetType() == typeof(int)) { meta["deep"] = (int)meta["deep"] + 1; } else if (meta["deep"].GetType() == typeof(int)) { meta["deep"] = Convert.ToInt32(meta["deep"]) + 1; } else { meta["deep"] = (int)0; } } else { meta["deep"] = (int)0; } if (this.spider.maxDeep >= 0) { int _deep = 0; if (meta["deep"].GetType() == typeof(int)) { _deep = (int)meta["deep"]; } else { _deep = Convert.ToInt32(meta["deep"]); } if (_deep > this.spider.maxDeep) { return(null); } } return(request); }
/// <summary> /// Generic method used to send a request to the Api /// </summary> /// <param name="requestUri">Request Uri</param> /// <param name="requestMessage">Request Message</param> /// <returns>Request response message</returns> private async Task <T> Post <T>(string requestUri, object requestMessage) where T : BaseResponseMessage, new() { T result; try { var jsonObject = JsonConvert.SerializeObject(requestMessage); using (var httpClient = new BaseHttpClient() { Timeout = _configuration.Timeout }) using (var content = new BaseHttpContent(jsonObject)) { HttpResponseMessage response = await httpClient.PostAsync(requestUri, content); if (response.IsSuccessStatusCode) { string responseBody = await response.Content.ReadAsStringAsync(); result = JsonConvert.DeserializeObject <T>(responseBody); result.OperationSuccess = true; } else { result = new T(); result.ErrorMessage = string.Format("StatusCode: {0}, ReasonPhrase: '{1}'", (int)response.StatusCode, response.ReasonPhrase); } } } catch (Exception ex) { result = new T(); result.ErrorMessage = ex.Message; } return(result); }
public PlacesTests(BaseHttpClient client) { _client = client; }
public NubankProvider() { _httpClient = new HttpClient(); _endpoints = new Endpoints(_httpClient); }
static void Main(string[] args) { var mClient = new BaseHttpClient(); string json = string.Empty; ApiResultModel ar; object content; //登录 Dictionary <string, string> dic = new Dictionary <string, string>() { { "clientNo", "1001" }, { "key", "K1001" }, { "userNo", "1001" }, { "password", "1" } }; mClient.Seg = "api/login"; json = dic.SerializeObject(); var r = mClient.Get(json, "", true); if (!r.TryParseResult(out content)) { p(r.Err); return; } JObject entity = r.Content as JObject; GlobalVar.AccessToken = entity["AccessToken"].ToString(); GlobalVar.RefreshToken = entity["RefreshToken"].ToString(); //p(GlobalVar.AccessToken); //刷新 dic.Clear(); dic.Add("refreshToken", GlobalVar.RefreshToken); json = dic.SerializeObject(); mClient.Seg = "api/refreshToken"; r = mClient.Get(json, ""); if (r.Status != System.Net.HttpStatusCode.OK) { p(r.Err); return; } entity = r.Content as JObject; GlobalVar.AccessToken = entity["AccessToken"].ToString(); GlobalVar.RefreshToken = entity["RefreshToken"].ToString(); //p(GlobalVar.AccessToken); //添加,普通HTTPGet方式 dic.Clear(); dic.Add("token", GlobalVar.AccessToken); dic.Add("key", "k1"); dic.Add("value", "v1"); mClient.Seg = "api/option"; ar = mClient.GetByQureyString(dic, "SetKeyValue"); ar = mClient.GetByQureyString(dic); ar = mClient.GetByQureyString(dic, "GetByKey"); //添加,Json方式 dic.Clear(); dic.Add("key", "k2"); dic.Add("value", "v2"); ar = mClient.Post(JsonConvert.SerializeObject(new { model = dic })); //批量添加 List <Option> list = new List <Option>(); for (int i = 0; i < 3; i++) { Option op = new Option() { Key = "K1", Value = "V1" }; list.Add(op); } ar = mClient.Post(JsonConvert.SerializeObject(new { model = list })); ar = mClient.Post((new { model = list }).JsonSerial()); //查询 ar = mClient.Get(); ar = mClient.Get(JsonConvert.SerializeObject(new { id = 22 })); ar = mClient.Get(JsonConvert.SerializeObject(new { id = 999 })); ar = mClient.Get(JsonConvert.SerializeObject(new { ids = new int[] { 22, 23, 24 } })); ar = mClient.LogicDelete(JsonConvert.SerializeObject(new { id = 22 })); ar = mClient.LogicDelete(JsonConvert.SerializeObject(new { id = 999 })); ar = mClient.LogicDelete(JsonConvert.SerializeObject(new { id = new int[] { 22, 23, 24 } })); ar = mClient.Delete(JsonConvert.SerializeObject(new { id = 22 })); ar = mClient.Delete(JsonConvert.SerializeObject(new { id = 999 })); ar = mClient.Delete(JsonConvert.SerializeObject(new { ids = new int[] { 22, 23, 24 } })); ar = mClient.Delete(JsonConvert.SerializeObject(new { ids = new int[] { 25, 23, 24 } })); //修改 dic.Clear(); dic.Add("ID", "42"); dic.Add("Key", "K123"); ar = mClient.Modify(JsonConvert.SerializeObject(new { model = dic })); Option option = JsonConvert.DeserializeObject <Option>(mClient.Get(JsonConvert.SerializeObject(new { id = 42 })).Content.ToString()); option.Value1 = "value1"; ar = mClient.Modify(JsonConvert.SerializeObject(new { model = option })); return; }
/// <summary> /// 在异常发生时执行 /// </summary> /// <param name="client"></param> /// <param name="e"></param> /// <param name="request"></param> /// <param name="response"></param> /// <returns>返回Exception继续处理该异常,返回request重新请求,返回response则正常返回,返回NULL放弃该任务</returns> public virtual object BeforeException(BaseHttpClient client, Exception e, RequestEntity request, ResponseEntity response, MetaModel meta) { return(e); }
/// <summary> /// 在执行Response之前执行,可修改Response的内容 /// </summary> /// <param name="client"></param> /// <param name="request"></param> /// <param name="response"></param> /// <returns>返回request则重新请求,返回response则继续,返回null则放弃</returns> public virtual object BeforeResponse(BaseHttpClient client, RequestEntity request, ResponseEntity response, MetaModel meta) { return(response); }
private async Task <bool> Send(BaseHttpClient client, HttpContentModel model, Action <HttpContentModel> callback) { try { var _requestPip = requestPipelines.ToArray(); foreach (var pipeline in _requestPip) { var _request = pipeline.Invoke(client, model.request, model.meta); model.request = _request is RequestEntity ? _request as RequestEntity : null; if (model.request == null) { break; } } if (model.request == null) { //freeClientsQueue.Push(client); return(false); } ResponseEntity r = null; if (client == null) { #if DEBUG Console.WriteLine("HttpClient is null"); #endif return(false); } r = await client.CreateHttpRequestSend(model); //针对StatusCode 做异常处理 if (this.CatchHttpCode.Contains(r.StatusCode)) { model.response = r; throw new CatchHttpCodeException(r.StatusCode); } Func <BaseHttpClient, RequestEntity, ResponseEntity, MetaModel, object>[] _responsePip = responsePipelines.ToArray(); foreach (var pipeline in _responsePip) { var rpip = pipeline.Invoke(client, model.request, r, model.meta); if (rpip is RequestEntity) { model.request = rpip as RequestEntity; return(await this.Send(client, model, callback)); } else if (rpip is null) { //freeClientsQueue.Push(client); return(false); } } model.response = r; callback.Invoke(model); //freeClientsQueue.Push(client);//放在此处添加队列,解析过程也在线程限制数里 return(r.StatusCode == 200); } catch (Exception e) { Console.WriteLine(e.Message); return(await ProcessException(client, e, model)); } finally { freeClientsQueue.Push(client);//放在此处添加队列,解析过程也在线程限制数里 } }
public static async Task <bool> Run([OrchestrationTrigger] DurableOrchestrationContext context, ExecutionContext eContext) { _client = InitClient(eContext.FunctionAppDirectory); var newEvent = context.GetInput <Event>(); try { _logger.Information("Calling CreateEvent function"); newEvent.Id = await context.CallActivityAsync <int>("CreateEvent", (newEvent, eContext.FunctionAppDirectory)); } catch (Exception ex) { _logger.Error(ex, $"Error occured in CreateEvent function {ex.Message} "); throw; } finally { _client.EventsClient.Dispose(); } try { _logger.Information($"Calling UpdateEvent function for Event with Id: {newEvent.Id}"); newEvent = await context.CallActivityAsync <Event>("UpdateEvent", (newEvent.Id, eContext.FunctionAppDirectory)); } catch (Exception ex) { _logger.Error(ex, $"Error occured in UpdateEvent function {ex.Message}"); } finally { _client.EventsClient.Dispose(); } try { _logger.Information($"Calling DeleteEvent function for Event with Id: {newEvent.Id}"); var isDeleted = await context.CallActivityAsync <bool>("DeleteEvent", (newEvent.Id, eContext.FunctionAppDirectory)); } catch (Exception ex) { _logger.Error(ex, $"Error occured in DeleteEvent function {ex.Message}"); } finally { _client.EventsClient.Dispose(); } try { _logger.Information($"Calling GetEvent function with eventId : {newEvent.Id}"); newEvent = await context.CallActivityAsync <Event>("GetEvent", (newEvent.Id, eContext.FunctionAppDirectory)); } catch (Exception ex) { _logger.Error(ex, $"Error occured in GetPlace function {ex.Message}"); } finally { _client.EventsClient.Dispose(); } return(newEvent != null); }
/// <summary> /// Sends notification. /// </summary> /// <param name="message">Body of the message</param> /// <returns>Returns a value that indicates if the request was successful.</returns> public virtual async Task <HttpResponseMessage> NotifyAsync(string message) => await BaseHttpClient.SendMessageAsync(AppriseUrl, ServiceUrl, message, null, NotificationType.Info);
/// <summary> /// Sends notification. /// </summary> /// <param name="messageBody">Body of the message</param> /// <param name="messageTitle">Title of the message</param> /// <param name="notificationType">Notification type</param> /// <returns>Returns a value that indicates if the request was successful.</returns> public virtual async Task <HttpResponseMessage> NotifyAsync(string messageBody, string messageTitle, NotificationType notificationType) => await BaseHttpClient.SendMessageAsync(AppriseUrl, ServiceUrl, messageBody, messageTitle, notificationType);