Beispiel #1
0
        public static void MakeRequestTo(
            System.Uri srv,
            string function,
            Method method,
            Dictionary <string, object> parameter,
            WebRequestRespondedCallback callback,
            Context context      = null,
            string parametersStr = "")
        {
            if (context == null)
            {
                context = defaultContext;
            }
            context = context.Clone(srv, function, method, parameter, parametersStr, callback);

            if (srv != null)
            {
                TaskManager.StartUnbreakableCoroutine(MakeRequestTo_(context));
            }
            else
            {
                if (callback != null)
                {
                    callback(WebExceptionStatus.ConnectFailure, HttpStatusCode.Unused, null, null, null, context);
                }
            }
        }
Beispiel #2
0
 public static WebRequestRespondedCallback RetryIfFailed(
     WebRequestRespondedCallback callback,
     int tries = 3,
     System.Func <WebExceptionStatus, HttpStatusCode, bool> cond = null,
     float nextRetryAfter = 0, float retryDurationIncr = 5)
 {
     if (cond == null)
     {
         cond = DefaultRetryCondition;
     }
     return((status, code, _1, _2, _3, context) =>
     {
         if (status == WebExceptionStatus.Success && code == HttpStatusCode.OK)
         {
             callback(status, code, _1, _2, _3, context);
         }
         else
         {
             tries = tries - 1;
             if (tries > 0 && cond(status, code))
             {
                 float delay = nextRetryAfter;
                 nextRetryAfter += retryDurationIncr;
                 Debug.LogWarningFormat("Retry will start in {0} seconds ...", delay);
                 TaskManager.DelayExecute(
                     delay,
                     () => MakeRequestTo(context.srv, context.function, context.method, context.parameters, context.callback, context));
             }
             else
             {
                 callback(status, code, _1, _2, _3, context);
             }
         }
     });
 }
Beispiel #3
0
 public static void Post(System.Uri srv, string function, Dictionary <string, object> parameter, WebRequestRespondedCallback callback, Context context = null, string parametersStr = "")
 {
     MakeRequestTo(srv, function, Method.POST, parameter, callback, context: context, parametersStr: parametersStr);
 }
Beispiel #4
0
 public static void PostWithAuth(System.Uri srv, string function, Dictionary <string, object> parameter, WebRequestRespondedCallback callback, Context context = null)
 {
     MakeRequestTo(srv, function, Method.POST, parameter, callback, context);
 }
Beispiel #5
0
            public Context Clone(System.Uri srv, string function, Method method, Dictionary <string, object> parameters, string parametersStr, WebRequestRespondedCallback callback)
            {
                var cloned = MemberwiseClone() as Context;

                cloned.srv           = srv;
                cloned.function      = function;
                cloned.method        = method;
                cloned.parameters    = parameters;
                cloned.parametersStr = parametersStr;
                cloned.callback      = callback;
                cloned.parent        = this;
                return(cloned);
            }