Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
 internal override void SaveToMethodContext(MethodWrapContext methodWrapContext)
 {
 }
Exemplo n.º 3
0
 internal override void SaveToMethodContext(MethodWrapContext methodWrapContext)
 {
     methodWrapContext.ContentType = HttpContentTypes.xml;
 }
Exemplo n.º 4
0
 internal override void SaveToMethodContext(MethodWrapContext methodWrapContext)
 {
     methodWrapContext.HeaderAttributes.Add(this);
 }
Exemplo n.º 5
0
 internal override void SaveToMethodContext(MethodWrapContext methodWrapContext)
 {
     base.SaveToMethodContext(methodWrapContext);
     methodWrapContext.SerializeType = SerializeTypes.xml;
 }
Exemplo n.º 6
0
 internal override void SaveToMethodContext(MethodWrapContext methodWrapContext)
 {
     methodWrapContext.HttpMethod = this.Method.ToUpper();
 }
Exemplo n.º 7
0
 internal override void SaveToMethodContext(MethodWrapContext methodWrapContext)
 {
     methodWrapContext.Path = this.Path;
 }
Exemplo n.º 8
0
 internal virtual void SaveToMethodContext(MethodWrapContext methodWrapContext)
 {
 }
Exemplo n.º 9
0
 internal MethodItem(MethodInfo method, MethodWrapContext wrapContext)
 {
     Method      = method;
     WrapContext = wrapContext;
 }