public ApiResult Error(ApiResultCode resultCode, string message = null) { return(new ApiResult() { ResultCode = resultCode, Message = message }); }
public void Login_InvalidCredentials_Throws(string email, string password, ApiResultCode expectedErrorCode) { Assert.That( () => this.Client.Login(email, password), Throws.TypeOf <ApiException>() .With.Property <ApiException>(x => x.ApiResultCode).EqualTo(expectedErrorCode)); }
public ApiResult <T> Error <T>(ApiResultCode resultCode, string message = null, dynamic data = null) { return(new ApiResult <T>() { ResultCode = resultCode, Message = message, Data = data }); }
public async Task <HttpResponseMessage> Delete(Guid id) { if (id != null) { await _unit.IItem.Remove(id); ApiResultCode result = await _unit.Complete(); if (result.ResultType == ApiResultType.Success) { HttpResponseMessage response = new HttpResponseMessage() { StatusCode = HttpStatusCode.OK }; return(response); } else { HttpResponseMessage response = new HttpResponseMessage() { StatusCode = HttpStatusCode.BadRequest }; return(response); } } else { HttpResponseMessage response = new HttpResponseMessage() { StatusCode = HttpStatusCode.BadRequest }; return(response); } }
protected ApiResult <T> GetApiResult <T>(ApiResultCode code, T data, string msg) { return(new ApiResult <T>() { Code = (int)code, Data = data, Message = msg }); }
protected ApiResult <T> GetApiResult <T>(ApiResultCode code, T data) { return(new ApiResult <T>() { Code = (int)code, Data = data, Message = code.GetDescription() }); }
internal ApiResult( ApiResultCode code, string message) { this.Code = code; this.Message = message ?? throw new ArgumentNullException(nameof(message)); }
public void Login_InvalidCredentials_Throws(string email, string password, ApiResultCode expectedErrorCode) { Assert.That( () => this.Client.Login(email, password), Throws.TypeOf<ApiException>() .With.Property<ApiException>(x => x.ApiResultCode).EqualTo(expectedErrorCode)); }
private ApiRequestFailedEventArgs(Uri url, int attemptNum, int delayMilliseconds, ApiResultCode apiResult, string responseJson, Exception exception) { ApiUrl = url; AttemptNum = attemptNum; DelayMilliseconds = delayMilliseconds; ApiResult = apiResult; ResponseJson = responseJson; Exception = exception; }
private ApiRequestFailedEventArgs(Uri url, int attemptNum, TimeSpan retryDelay, ApiResultCode apiResult, string responseJson, Exception exception) { ApiUrl = url; AttemptNum = attemptNum; RetryDelay = retryDelay; ApiResult = apiResult; ResponseJson = responseJson; Exception = exception; }
private HttpResponseMessage createResponse(HttpStatusCode statusCode, ApiResultCode resultCode) { var error = new Error(); error.code = (int)resultCode; error.message = _toolUtil.getEnumDescription(resultCode); return new HttpResponseMessage(statusCode) { Content = new StringContent(JsonConvert.SerializeObject(error, Formatting.Indented)) }; }
private TResponse Request <TResponse>(RequestBase request, object context = null) where TResponse : class { string dataRequest = JsonConvert.SerializeObject(new object[] { request }); Uri uri = this.GenerateUrl(); object jsonData = null; int currentAttempt = 0; while (true) { string dataResult = this._webClient.PostRequestJson(uri, dataRequest); jsonData = JsonConvert.DeserializeObject(dataResult); if (jsonData is long || (jsonData is JArray && ((JArray)jsonData)[0].Type == JTokenType.Integer)) { ApiResultCode apiCode = (jsonData is long) ? (ApiResultCode)Enum.ToObject(typeof(ApiResultCode), jsonData) : (ApiResultCode)((JArray)jsonData)[0].Value <int>(); if (apiCode == ApiResultCode.RequestFailedRetry) { if (currentAttempt == ApiRequestAttempts) { throw new NotSupportedException("Api not available"); } Thread.Sleep(ApiRequestDelay); currentAttempt++; continue; } if (apiCode == ApiResultCode.BadSessionId && this._authInfos != null) { this.Logout(); this.Login(this._authInfos); } if (apiCode != ApiResultCode.Ok) { throw new ApiException(apiCode); } } break; } JsonSerializerSettings settings = new JsonSerializerSettings(); settings.Context = new StreamingContext(StreamingContextStates.All, context); string data = ((JArray)jsonData)[0].ToString(); return((typeof(TResponse) == typeof(string)) ? data as TResponse : JsonConvert.DeserializeObject <TResponse>(data, settings)); }
private HttpStatusCode ConvertResultCode(ApiResultCode resultCode) { switch (resultCode) { case ApiResultCode.Success: return HttpStatusCode.OK; case ApiResultCode.InternalError: return HttpStatusCode.InternalServerError; case ApiResultCode.UnknownUri: return HttpStatusCode.NotFound; case ApiResultCode.InvalidBody: return HttpStatusCode.BadRequest; } throw new NotSupportedException(); }
private TResponse RequestCore <TResponse>(RequestBase request, object context = null) where TResponse : class { string dataRequest = JsonConvert.SerializeObject(new object[] { request }); Uri uri = GenerateUrl(request.QueryArguments); object jsonData = null; int requestDelay = options.ApiRequestDelay; int remainingRetry = options.ApiRequestAttempts; while (remainingRetry-- > 0) { string dataResult = webClient.PostRequestJson(uri, dataRequest); if (string.IsNullOrEmpty(dataResult) || (jsonData = JsonConvert.DeserializeObject(dataResult)) == null || jsonData is long || (jsonData is JArray && ((JArray)jsonData)[0].Type == JTokenType.Integer)) { ApiResultCode apiCode = jsonData == null ? ApiResultCode.RequestFailedRetry : jsonData is long ?(ApiResultCode)Enum.ToObject(typeof(ApiResultCode), jsonData) : (ApiResultCode)((JArray)jsonData)[0].Value <int>(); if (apiCode != ApiResultCode.Ok) { ApiRequestFailed?.Invoke(this, new ApiRequestFailedEventArgs(uri, options.ApiRequestAttempts - remainingRetry, requestDelay, apiCode, dataResult)); } if (apiCode == ApiResultCode.RequestFailedRetry) { Thread.Sleep(requestDelay = (int)Math.Round(requestDelay * options.ApiRequestDelayExponentialFactor)); continue; } if (apiCode != ApiResultCode.Ok) { throw new ApiException(apiCode); } } break; } JsonSerializerSettings settings = new JsonSerializerSettings(); settings.Context = new StreamingContext(StreamingContextStates.All, context); string data = ((JArray)jsonData)[0].ToString(); return((typeof(TResponse) == typeof(string)) ? data as TResponse : JsonConvert.DeserializeObject <TResponse>(data, settings)); }
public static ApiResult <T> ToApiResult <T>(this T data, string message = "", ApiResultCode resultCode = ApiResultCode.Success) { var result = new ApiResult <T> { Code = (int)resultCode, Message = message, Data = data }; return(result); }
// Token: 0x06000953 RID: 2387 RVA: 0x0004C440 File Offset: 0x0004A640 private TResponse RequestCore <TResponse>(RequestBase request, byte[] key) where TResponse : class { string jsonData = JsonConvert.SerializeObject(new object[] { request }); Uri url = this.GenerateUrl(request.QueryArguments); object obj = null; int num = 0; TimeSpan retryDelay; while (this.options.ComputeApiRequestRetryWaitDelay(++num, out retryDelay)) { string text = this.webClient.PostRequestJson(url, jsonData); if (!string.IsNullOrEmpty(text) && (obj = JsonConvert.DeserializeObject(text)) != null && !(obj is long) && (!(obj is JArray) || ((JArray)obj)[0].Type != JTokenType.Integer)) { break; } ApiResultCode apiResultCode = (obj == null) ? ApiResultCode.RequestFailedRetry : ((obj is long) ? ((ApiResultCode)Enum.ToObject(typeof(ApiResultCode), obj)) : ((ApiResultCode)((JArray)obj)[0].Value <int>())); if (apiResultCode != ApiResultCode.Ok) { EventHandler <ApiRequestFailedEventArgs> apiRequestFailed = this.ApiRequestFailed; if (apiRequestFailed != null) { apiRequestFailed(this, new ApiRequestFailedEventArgs(url, num, retryDelay, apiResultCode, text)); } } if (apiResultCode == ApiResultCode.RequestFailedRetry) { this.Wait(retryDelay); } else { if (apiResultCode != ApiResultCode.Ok) { throw new ApiException(apiResultCode); } break; } } string text2 = ((JArray)obj)[0].ToString(); if (!(typeof(TResponse) == typeof(string))) { return(JsonConvert.DeserializeObject <TResponse>(text2, new JsonConverter[] { new GetNodesResponseConverter(key) })); } return(text2 as TResponse); }
internal ApiResult( ApiResultCode code, string message, IReadOnlyList <Result> results) : this(code, message) { if (results == null) { throw new ArgumentNullException(nameof(results)); } this.ValidationErrors = results.Select(x => new ValidationErrors(x.Field, x.Error)) .ToList(); }
private HttpStatusCode ConvertResultCode(ApiResultCode resultCode) { switch (resultCode) { case ApiResultCode.Success: return(HttpStatusCode.OK); case ApiResultCode.InternalError: return(HttpStatusCode.InternalServerError); case ApiResultCode.UnknownUri: return(HttpStatusCode.NotFound); case ApiResultCode.InvalidBody: return(HttpStatusCode.BadRequest); } throw new NotSupportedException(); }
private TResponse RequestCore <TResponse>(RequestBase request, byte[] key) where TResponse : class { string dataRequest = JsonConvert.SerializeObject(new object[] { request }); Uri uri = this.GenerateUrl(request.QueryArguments); object jsonData = null; int requestDelay = this.options.ApiRequestDelay; int remainingRetry = this.options.ApiRequestAttempts; while (remainingRetry-- > 0) { string dataResult = this.webClient.PostRequestJson(uri, dataRequest); if (string.IsNullOrEmpty(dataResult) || (jsonData = JsonConvert.DeserializeObject(dataResult)) == null || jsonData is long || (jsonData is JArray && ((JArray)jsonData)[0].Type == JTokenType.Integer)) { ApiResultCode apiCode = jsonData == null ? ApiResultCode.RequestFailedRetry : jsonData is long ?(ApiResultCode)Enum.ToObject(typeof(ApiResultCode), jsonData) : (ApiResultCode)((JArray)jsonData)[0].Value <int>(); if (apiCode != ApiResultCode.Ok) { this.ApiRequestFailed?.Invoke(this, new ApiRequestFailedEventArgs(uri, this.options.ApiRequestAttempts - remainingRetry, requestDelay, apiCode, dataResult)); } if (apiCode == ApiResultCode.RequestFailedRetry) { requestDelay = this.Wait(requestDelay); continue; } if (apiCode != ApiResultCode.Ok) { throw new ApiException(apiCode); } } break; } string data = ((JArray)jsonData)[0].ToString(); return((typeof(TResponse) == typeof(string)) ? data as TResponse : JsonConvert.DeserializeObject <TResponse>(data, new GetNodesResponseConverter(key))); }
internal ApiException(ApiResultCode apiResultCode) { ApiResultCode = apiResultCode; }
public void Login_InvalidCredentials_Throws(string email, string password, ApiResultCode expectedErrorCode) { var exception = Assert.Throws <ApiException>(() => this.context.Client.Login(email, password)); Assert.Equal(expectedErrorCode, exception.ApiResultCode); }
public async Task <HttpResponseMessage> Post([FromBody] ItemViewModel value) { try { if (ModelState.IsValid) { bool isEdit = true; Guid ItemGuid = Guid.Empty; isEdit = value.ItemId > 0 ? true : false; ApiResult <bool> isExist = await _unit.IItem.Exists(t => t.ItemName == value.Name && value.SubcategoryId == value.SubcategoryId); if (isExist.UserObject) { HttpResponseMessage response = new HttpResponseMessage() { StatusCode = HttpStatusCode.Conflict }; return(response); } else { TblItemMaster data = AutoMapper.Mapper.Map <TblItemMaster>(value); if (!isEdit) { data.Id = value.ItemId; data.CreatedDate = DateTime.Now; data.IsDeleted = false; await _unit.IItem.Add(data); ApiResultCode result = await _unit.Complete(); if (result.ResultType == ApiResultType.Success) { HttpResponseMessage response = new HttpResponseMessage() { StatusCode = HttpStatusCode.OK }; return(response); } } else { data = (await _unit.IItem.GetByID(Id: ItemGuid)).UserObject; data.ItemName = value.Name; data.ModifiedDate = DateTime.Now; data.ModifiedBy = null; _unit.IItem.Update(data); ApiResultCode result = await _unit.Complete(); if (result.ResultType == ApiResultType.Success) { HttpResponseMessage response = new HttpResponseMessage() { StatusCode = HttpStatusCode.OK }; return(response); } } } } else { HttpResponseMessage response = new HttpResponseMessage() { StatusCode = HttpStatusCode.BadRequest }; } } catch (Exception ex) { ErrorTrace.Logger(LogArea.ApplicationTier, ex); HttpResponseMessage response = new HttpResponseMessage() { StatusCode = HttpStatusCode.BadRequest }; return(response); } HttpResponseMessage response1 = new HttpResponseMessage() { StatusCode = HttpStatusCode.BadRequest }; return(response1); }
public ApiException(ApiResultCode apiExceptionCode, Exception innerException) : base("", innerException) { this.ApiExceptionCode = apiExceptionCode; }
// Token: 0x060007E0 RID: 2016 RVA: 0x000395D8 File Offset: 0x000377D8 public ApiRequestFailedEventArgs(Uri url, int attemptNum, TimeSpan retryDelay, ApiResultCode apiResult, Exception exception) : this(url, attemptNum, retryDelay, apiResult, null, exception) { }
public INode Upload(Stream stream, string name, INode parent, DateTime?modificationDate = null, CancellationToken?cancellationToken = null) #endif { if (stream == null) { throw new ArgumentNullException("stream"); } if (string.IsNullOrEmpty(name)) { throw new ArgumentNullException("name"); } if (parent == null) { throw new ArgumentNullException("parent"); } if (parent.Type == NodeType.File) { throw new ArgumentException("Invalid parent node"); } this.EnsureLoggedIn(); #if !NET35 if (cancellationToken.HasValue) { stream = new CancellableStream(stream, cancellationToken.Value); } #endif string completionHandle = string.Empty; int requestDelay = this.options.ApiRequestDelay; int remainingRetry = this.options.ApiRequestAttempts; while (remainingRetry-- > 0) { // Retrieve upload URL UploadUrlRequest uploadRequest = new UploadUrlRequest(stream.Length); UploadUrlResponse uploadResponse = this.Request <UploadUrlResponse>(uploadRequest); ApiResultCode apiResult = ApiResultCode.Ok; using (MegaAesCtrStreamCrypter encryptedStream = new MegaAesCtrStreamCrypter(stream)) { var chunkStartPosition = 0; var chunksSizesToUpload = this.ComputeChunksSizesToUpload(encryptedStream.ChunksPositions, encryptedStream.Length).ToArray(); Uri uri = null; for (int i = 0; i < chunksSizesToUpload.Length; i++) { completionHandle = string.Empty; int chunkSize = chunksSizesToUpload[i]; byte[] chunkBuffer = new byte[chunkSize]; encryptedStream.Read(chunkBuffer, 0, chunkSize); using (MemoryStream chunkStream = new MemoryStream(chunkBuffer)) { uri = new Uri(uploadResponse.Url + "/" + chunkStartPosition); chunkStartPosition += chunkSize; try { completionHandle = this.webClient.PostRequestRaw(uri, chunkStream); if (string.IsNullOrEmpty(completionHandle)) { apiResult = ApiResultCode.Ok; continue; } long retCode; if (completionHandle.FromBase64().Length != 27 && long.TryParse(completionHandle, out retCode)) { apiResult = (ApiResultCode)retCode; break; } } catch (Exception ex) { apiResult = ApiResultCode.RequestFailedRetry; this.ApiRequestFailed?.Invoke(this, new ApiRequestFailedEventArgs(uri, remainingRetry, requestDelay, apiResult, ex)); break; } } } if (apiResult != ApiResultCode.Ok) { this.ApiRequestFailed?.Invoke(this, new ApiRequestFailedEventArgs(uri, remainingRetry, requestDelay, apiResult, completionHandle)); if (apiResult == ApiResultCode.RequestFailedRetry || apiResult == ApiResultCode.RequestFailedPermanetly || apiResult == ApiResultCode.TooManyRequests) { // Restart upload from the beginning requestDelay = this.Wait(requestDelay); // Reset steam position stream.Seek(0, SeekOrigin.Begin); continue; } throw new ApiException(apiResult); } // Encrypt attributes byte[] cryptedAttributes = Crypto.EncryptAttributes(new Attributes(name, stream, modificationDate), encryptedStream.FileKey); // Compute the file key byte[] fileKey = new byte[32]; for (int i = 0; i < 8; i++) { fileKey[i] = (byte)(encryptedStream.FileKey[i] ^ encryptedStream.Iv[i]); fileKey[i + 16] = encryptedStream.Iv[i]; } for (int i = 8; i < 16; i++) { fileKey[i] = (byte)(encryptedStream.FileKey[i] ^ encryptedStream.MetaMac[i - 8]); fileKey[i + 16] = encryptedStream.MetaMac[i - 8]; } byte[] encryptedKey = Crypto.EncryptKey(fileKey, this.masterKey); CreateNodeRequest createNodeRequest = CreateNodeRequest.CreateFileNodeRequest(parent, cryptedAttributes.ToBase64(), encryptedKey.ToBase64(), fileKey, completionHandle); GetNodesResponse createNodeResponse = this.Request <GetNodesResponse>(createNodeRequest, this.masterKey); return(createNodeResponse.Nodes[0]); } } throw new UploadException(completionHandle); }
public ApiResultBase(ApiResultCode code = ApiResultCode.Success) { this.code = code; }
public ApiResultBase(ApiResultCode code, string msg) { this.code = code; this.msg = msg; }
public ApiResultBase(ApiResultCode code, string msg, string subMsg) { this.code = code; this.msg = msg; this.sub_msg = subMsg; }
internal ApiException(ApiResultCode apiResultCode) { this.ApiResultCode = apiResultCode; }
public ApiRequestFailedEventArgs(Uri url, int attemptNum, int delayMilliseconds, ApiResultCode apiResult, string responseJson) : this(url, attemptNum, delayMilliseconds, apiResult, responseJson, null) { }
// Token: 0x0600094C RID: 2380 RVA: 0x0004BE18 File Offset: 0x0004A018 public INode Upload(Stream stream, string name, INode parent, DateTime?modificationDate = null, CancellationToken?cancellationToken = null) { if (stream == null) { throw new ArgumentNullException("stream"); } if (string.IsNullOrEmpty(name)) { throw new ArgumentNullException("name"); } if (parent == null) { throw new ArgumentNullException("parent"); } if (parent.Type == NodeType.File) { throw new ArgumentException("Invalid parent node"); } this.EnsureLoggedIn(); if (cancellationToken != null) { stream = new CancellableStream(stream, cancellationToken.Value); } string text = string.Empty; int num = 0; TimeSpan retryDelay; while (this.options.ComputeApiRequestRetryWaitDelay(++num, out retryDelay)) { UploadUrlRequest request = new UploadUrlRequest(stream.Length); UploadUrlResponse uploadUrlResponse = this.Request <UploadUrlResponse>(request, null); ApiResultCode apiResultCode = ApiResultCode.Ok; using (MegaAesCtrStreamCrypter megaAesCtrStreamCrypter = new MegaAesCtrStreamCrypter(stream)) { long num2 = 0L; int[] array = this.ComputeChunksSizesToUpload(megaAesCtrStreamCrypter.ChunksPositions, megaAesCtrStreamCrypter.Length).ToArray <int>(); Uri url = null; for (int i = 0; i < array.Length; i++) { text = string.Empty; int num3 = array[i]; byte[] buffer = new byte[num3]; megaAesCtrStreamCrypter.Read(buffer, 0, num3); using (MemoryStream memoryStream = new MemoryStream(buffer)) { url = new Uri(uploadUrlResponse.Url + "/" + num2); num2 += (long)num3; try { text = this.webClient.PostRequestRaw(url, memoryStream); long num4; if (string.IsNullOrEmpty(text)) { apiResultCode = ApiResultCode.Ok; } else if (text.FromBase64().Length != 27 && long.TryParse(text, out num4)) { apiResultCode = (ApiResultCode)num4; break; } } catch (Exception exception) { apiResultCode = ApiResultCode.RequestFailedRetry; EventHandler <ApiRequestFailedEventArgs> apiRequestFailed = this.ApiRequestFailed; if (apiRequestFailed != null) { apiRequestFailed(this, new ApiRequestFailedEventArgs(url, num, retryDelay, apiResultCode, exception)); } break; } } } if (apiResultCode == ApiResultCode.Ok) { byte[] data = Crypto.EncryptAttributes(new Attributes(name, stream, modificationDate), megaAesCtrStreamCrypter.FileKey); byte[] array2 = new byte[32]; for (int j = 0; j < 8; j++) { array2[j] = (megaAesCtrStreamCrypter.FileKey[j] ^ megaAesCtrStreamCrypter.Iv[j]); array2[j + 16] = megaAesCtrStreamCrypter.Iv[j]; } for (int k = 8; k < 16; k++) { array2[k] = (megaAesCtrStreamCrypter.FileKey[k] ^ megaAesCtrStreamCrypter.MetaMac[k - 8]); array2[k + 16] = megaAesCtrStreamCrypter.MetaMac[k - 8]; } byte[] data2 = Crypto.EncryptKey(array2, this.masterKey); CreateNodeRequest request2 = CreateNodeRequest.CreateFileNodeRequest(parent, data.ToBase64(), data2.ToBase64(), array2, text); return(this.Request <GetNodesResponse>(request2, this.masterKey).Nodes[0]); } EventHandler <ApiRequestFailedEventArgs> apiRequestFailed2 = this.ApiRequestFailed; if (apiRequestFailed2 != null) { apiRequestFailed2(this, new ApiRequestFailedEventArgs(url, num, retryDelay, apiResultCode, text)); } if (apiResultCode != ApiResultCode.RequestFailedRetry && apiResultCode != ApiResultCode.RequestFailedPermanetly) { if (apiResultCode != ApiResultCode.TooManyRequests) { throw new ApiException(apiResultCode); } } this.Wait(retryDelay); stream.Seek(0L, SeekOrigin.Begin); } } throw new UploadException(text); }
public ApiException(ApiResultCode apiExceptionCode) { this.ApiExceptionCode = apiExceptionCode; }
public ApiRequestFailedEventArgs(Uri url, int attemptNum, int delayMilliseconds, ApiResultCode apiResult, Exception exception) : this(url, attemptNum, delayMilliseconds, apiResult, null, exception) { }
// Token: 0x060007DF RID: 2015 RVA: 0x000395C8 File Offset: 0x000377C8 public ApiRequestFailedEventArgs(Uri url, int attemptNum, TimeSpan retryDelay, ApiResultCode apiResult, string responseJson) : this(url, attemptNum, retryDelay, apiResult, responseJson, null) { }