/// <summary> /// Procesa el sistema de autentificación /// </summary> public void Process(Messages.RequestMessage objRequest) { string strAuthorization = User + ":" + Password; // Codifica en Base64 la cadena de usuario y contraseña strAuthorization = new Encoders.BinayEncoder().Encode(strAuthorization, false); // Añade la cabecera de autorización objRequest.Headers.Add("Authorization", "Basic " + strAuthorization); }
private async Task <ResultDataType> ExecuteScalarAsync <ResultDataType>(Messages.RequestMessage Message) { using (var Socket = new ClientWebSocket()) { await Socket.ConnectAsync(Uri, System.Threading.CancellationToken.None); try { return(await ExecuteScalarAsync <ResultDataType>(Socket, Message)); } finally { await Socket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, null, System.Threading.CancellationToken.None); } } }
private byte[] GetMessageBytes(Messages.RequestMessage Message) { var Json = JsonConvert.SerializeObject(Message); if (UseBinary) { var SB = new StringBuilder(); SB.Append((char)("application/json".Length)); SB.Append("application/json"); SB.Append(Json); return(System.Text.Encoding.UTF8.GetBytes(SB.ToString())); } else { return(System.Text.Encoding.UTF8.GetBytes(Json)); } }
protected override void DoProcessRequestItems(Messages.RequestMessage requestMessage, Messages.ResponseMessage responseMessage) { // 요청작업이 병렬로 처리해서는 안될 경우를 대비 // if (requestMessage.AsParallel == false) { base.DoProcessRequestItems(requestMessage, responseMessage); return; } if (IsDebugEnabled) { log.Debug("요청항목들을 병렬로 처리합니다..."); } // 병렬로 작업을 처리하고, 응답메시지에 추가합니다. requestMessage.Items .AsParallel() .AsOrdered() .ForAll(requestItem => { var responseItem = DoProcessRequestItem(requestItem); responseMessage.Items.Add(responseItem); }); }
private async Task <ResultDataType> ExecuteScalarAsync <ResultDataType>(ClientWebSocket Socket, Messages.RequestMessage Message) { byte[] MessageBytes = GetMessageBytes(Message); await Socket.SendAsync(new ArraySegment <byte>(MessageBytes), UseBinary?WebSocketMessageType.Binary : WebSocketMessageType.Text, true, System.Threading.CancellationToken.None); while (true) { var MS = new System.IO.MemoryStream(); var Buffer = new ArraySegment <byte>(new byte[ReadBufferSize]); while (true) { var Data = await Socket.ReceiveAsync(Buffer, System.Threading.CancellationToken.None); MS.Write(Buffer.Array, 0, Data.Count); if (Data.EndOfMessage) { break; } } var ResponseString = System.Text.Encoding.UTF8.GetString(MS.ToArray()); var Response = JsonConvert.DeserializeObject <Messages.ScriptResponse <ResultDataType> >(ResponseString); if (Response.Result.Data != null && Response.Result.Data.Count > 0) { return(Response.Result.Data[0]); } switch (Response.Status.Code) { case 200: // SUCCESS case 204: // NO CONTENT logger.Info("HTTP 204 NO CONTENT"); return(default(ResultDataType)); case 401: logger.Error("HTTP 401 UNAUTHORIZED"); throw new Exceptions.UnauthorizedException(Response.Status.Message); case 407: // AUTHENTICATE logger.Error("HTTP 407 Proxy Authentication Required"); if (string.IsNullOrEmpty(Username) || string.IsNullOrEmpty(Password)) { throw new Exceptions.UnauthorizedException(Response.Status.Message); } MessageBytes = GetMessageBytes(new Messages.AuthenticationRequestMessage { Arguments = new Messages.AuthenticationRequestArguments(Username, Password) }); await Socket.SendAsync(new ArraySegment <byte>(MessageBytes), UseBinary?WebSocketMessageType.Binary : WebSocketMessageType.Text, true, System.Threading.CancellationToken.None); break; case 498: logger.Error("Malformed Request: " + Response.Status.Message); throw new Exceptions.MalformedRequestException(Response.Status.Message); case 499: logger.Error("Invalid Request Arguments: " + Response.Status.Message); throw new Exceptions.InvalidRequestArgumentsException(Response.Status.Message); case 500: logger.Error("HTTP 500 Server Error"); throw new Exceptions.ServerErrorException(Response.Status.Message); case 597: logger.Error("Script Evaluation Error. Maybe false Gremlin Statement? " + Response.Status.Message); throw new Exceptions.ScriptEvaluationErrorException(Response.Status.Message); case 598: logger.Error("Server Timeout Exception: " + Response.Status.Message); throw new Exceptions.ServerTimeoutException(Response.Status.Message); case 599: logger.Error("Server Serialization Error: " + Response.Status.Message); throw new Exceptions.ServerSerializationError(Response.Status.Message); default: throw new Exception("Unsupported StatusCode (" + Response.Status.Code + "): " + Response.Status.Message); } } }