コード例 #1
0
        private async Task <AOResult <T> > RequestAsync <T>(RequstType requestType, string resource, object requestBody, TimeSpan experation, StorageType storageType, string callMethodName)
        {
            var aoResult = new AOResult <T>();

            T result = default(T);

            try
            {
                switch (requestType)
                {
                case RequstType.Post:
                    result = await RestService.PostAsync <T>(resource, requestBody);

                    break;

                case RequstType.Get:
                    result = await RestService.GetAsync <T>(resource);

                    break;

                case RequstType.GetWithCache:
                    result = await RestService.GetAsyncWithCashe <T>(resource, experation, storageType);

                    break;

                case RequstType.Put:
                    result = await RestService.PutAsync <T>(resource, requestBody);

                    break;

                case RequstType.Delete:
                    result = await RestService.DeleteAsync <T>(resource, requestBody);

                    break;

                default:
                    throw new InvalidOperationException("Wrong request type");
                }
                aoResult.SetSuccess(result);
            }
            catch (WebException ex)
            {
                ErrorsTracker.TrackError(ex, ex.Message);
                aoResult.SetError(callMethodName + "_exception", ex.Message, ex);
                Debug.WriteLine("## Error rest service || " + callMethodName + " **** " + resource);
            }
            catch (HttpRequestException ex)
            {
                ErrorsTracker.TrackError(ex, ex.Message);
                aoResult.SetError(callMethodName + "_exception", ex.Message, ex);
                Debug.WriteLine("## Error rest service || " + callMethodName + " **** " + resource);
            }
            catch (Exception ex)
            {
                ErrorsTracker.TrackError(ex, ex.Message);
                throw;
            }
            return(aoResult);
        }
コード例 #2
0
        public async Task <T> GetAsync <T>(string key, Func <Task <T> > valFunc, TimeSpan experation)
        {
            var isExist = await CanGetObject <T>(key);

            if (isExist)
            {
                return(await Get <T>(key));
            }
            else
            {
                try
                {
                    var res = await valFunc();
                    await Set(key, res, experation);

                    return(res);
                }
                catch (Exception ex)
                {
                    ErrorsTracker.TrackError(ex, ex.Message);
                    throw;
                }
            }
        }