/// <summary> /// Recupera la firma de los datos haciendo uso del servicio de red de firma en la nube. /// </summary> /// <param name="transactionId">Identificador de la transacción.</param> /// <param name="subjectId">Identificador del usuario propietario de los certificados de firma.</param> /// <returns>Firma realizada en servidor.</returns> /// <exception cref="ArgumentException">Cuando se proporciona nulo o vacío un parámetro obligatorio.</exception> /// <exception cref="HttpForbiddenException">Cuando falla la autenticación con el componente central.</exception> /// <exception cref="HttpNetworkException">Cuando se produce un error de conexión con el componente central.</exception> /// <exception cref="InvalidTransactionException">Cuando se intenta operar sobre una transaccion inexistente o ya caducada.</exception> /// <exception cref="HttpOperationException">Cuando se produce un error interno del servidor.</exception> public FireBatchResult recoverBatchResult( string transactionId, string subjectId) { if (String.IsNullOrEmpty(transactionId)) { throw new ArgumentException( "El id de la transaccion no puede ser nulo" ); } if (String.IsNullOrEmpty(subjectId)) { throw new ArgumentException( "El identificador del titular no puede ser nulo" ); } string url = this.config.getFireService(); string urlParameters = URL_PARAMETERS_RECOVER_BATCH_RESULT .Replace(APP_ID, this.appId) .Replace(TRANSACTION, transactionId) .Replace(SUBJECTID, subjectId) .Replace(OP, OP_CODE_RECOVER_BATCH); // El tipo de operacion solicitada es RECOVER_BATCH // realizamos la peticion post al servicio y recibimos los datos de la peticion byte[] bytes = getResponseToPostPetition(url, urlParameters, this.config.getConfig()); FireBatchResult documentList = deserializedBatchResult(System.Text.Encoding.UTF8.GetString(bytes)); // Mostramos los datos obtenidos return(documentList); }
/// <summary> /// Obtiene el resultado de la firma del lote a partir del objeto con la respuesta del /// servicio que devolvió dicho resultado. /// </summary> /// <param name="json">Objeto con el JSON de respuesta serializado.</param> /// <returns>Objeto con el resultado de la firma del lote.</returns> internal static FireBatchResult Parse(BatchResultJson json) { FireBatchResult result = new FireBatchResult(); result.prov = json.prov; if (json.cert != null) { result.cert = new X509Certificate(System.Convert.FromBase64String(json.cert)); } result.batch = new List <FireSingleResult>(); foreach (var singleBatch in json.batch) { FireSingleResult singleSignature = new FireSingleResult(); singleSignature.id = singleBatch.id; singleSignature.ok = singleBatch.ok; singleSignature.dt = singleBatch.dt; if (singleBatch.grace != null) { // Transformamos los milisegundos Java a una fecha .Net DateTime graceDate = new DateTime(new DateTime(1970, 1, 1).Ticks + singleBatch.grace.Date * 10000); singleSignature.gracePeriod = new GracePeriod(singleBatch.grace.Id, graceDate); } result.batch.Add(singleSignature); } return(result); }
/// <summary> /// Recupera la firma de los datos haciendo uso del servicio de red de firma en la nube. /// </summary> /// <param name="appId">Identificador de la aplicación.</param> /// <param name="transactionId">Identificador de la transacción.</param> /// <returns>Firma realizada en servidor.</returns> /// <exception cref="ArgumentException">Cuando se proporciona un parámetro no válido.</exception> /// <exception cref="HttpForbiddenException">Cuando falla la autenticación con el componente central.</exception> /// <exception cref="HttpNetworkException">Cuando se produce un error de conexión con el componente central.</exception> /// <exception cref="HttpOperationException">Cuando se produce un error interno del servidor.</exception> /// <exception cref="ConfigureException">Cuando no se encuentra configurada la URL del servicio.</exception> public static FireBatchResult recoverBatchResult( String appId, String transactionId) { if (string.IsNullOrEmpty(transactionId)) { throw new ArgumentException( "El id de la transaccion no puede ser nulo" ); } string url = ConfigManager.getFireService(); string urlParameters = URL_PARAMETERS_RECOVER_BATCH_RESULT .Replace(APP_ID, appId) .Replace(TRANSACTION, transactionId) .Replace(OP, "8"); // El tipo de operacion solicitada es RECOVER_BATCH (8) // realizamos la peticion post al servicio y recibimos los datos de la peticion byte[] bytes = getResponseToPostPetition(url, urlParameters); BatchResultJson batchResult = getJson(System.Text.Encoding.UTF8.GetString(bytes)); return(FireBatchResult.Parse(batchResult)); }