internal static LarkResult Create(RequestCreContext requestCreContext) { WrapBase wrapBase = requestCreContext.WrapInstance; MethodWrapContext methodWrap = requestCreContext.MethodWrap; if (methodWrap == null) { throw new ArgumentNullException(nameof(methodWrap)); } InterfaceWrapContext interfaceWrap = requestCreContext.InfaceContext; HttpRequestMessage httpRequestMessage = requestCreContext.PreparaRequestMessage(); //todo is it ok? httpRequestMessage.RequestUri = new Uri(requestCreContext.GetRequestUrl()); System.Net.Http.HttpClient httpClient = new System.Net.Http.HttpClient(); //TODO it's need to deal with the http status code Task <HttpResponseMessage> task; switch (requestCreContext.HttpMethod.Method) { case "GET": case "POST": httpRequestMessage.Method = new HttpMethod(requestCreContext.HttpMethod.Method); break; default: throw new NotSupportedException("Not supported Http Method!"); } if (InternalConfig.SaveRequest) { wrapBase.MyClient = httpClient; wrapBase.MyHttpRequestMessagea = httpRequestMessage; wrapBase.MyRequestCreContext = requestCreContext; } if (InternalConfig.NotRequest) { return(LarkResult.GetResult(null, requestCreContext.MethodWrap.ReturnContext));; } task = httpClient.SendAsync(httpRequestMessage); //todo need to try-catch ? task.Wait(); if (InternalConfig.SaveResponse) { requestCreContext.WrapInstance.OriginalResponseMessage = task.Result; } return(LarkResult.GetResult(task.Result, requestCreContext.MethodWrap.ReturnContext)); }
internal override void SaveToMethodContext(MethodWrapContext methodWrapContext) { }
internal override void SaveToMethodContext(MethodWrapContext methodWrapContext) { methodWrapContext.ContentType = HttpContentTypes.xml; }
internal override void SaveToMethodContext(MethodWrapContext methodWrapContext) { methodWrapContext.HeaderAttributes.Add(this); }
internal override void SaveToMethodContext(MethodWrapContext methodWrapContext) { base.SaveToMethodContext(methodWrapContext); methodWrapContext.SerializeType = SerializeTypes.xml; }
internal override void SaveToMethodContext(MethodWrapContext methodWrapContext) { methodWrapContext.HttpMethod = this.Method.ToUpper(); }
internal override void SaveToMethodContext(MethodWrapContext methodWrapContext) { methodWrapContext.Path = this.Path; }
internal virtual void SaveToMethodContext(MethodWrapContext methodWrapContext) { }
internal MethodItem(MethodInfo method, MethodWrapContext wrapContext) { Method = method; WrapContext = wrapContext; }