/// <summary> /// Validates an output object accessor request API model /// </summary> /// <param name="apiModel"></param> /// <returns></returns> public static IEnumerable <string> ValidateApiModel(this OutputObjectAccessorRequestApiModel apiModel) { if (string.IsNullOrEmpty(apiModel.ObjectName)) { yield return("[objectName] is required."); } if (string.IsNullOrEmpty(apiModel.ObjectProviderName)) { yield return("[objectProviderName] is required."); } if (string.IsNullOrEmpty(apiModel.SignatureRsaKeyXml)) { yield return("[signatureRsaKeyXml] is required."); } if (apiModel.ObjectMetadata == null) { yield return("[objectMetadata] is required."); } if (apiModel.ExecutionMetadata == null) { yield return("[executionMetadata] is required."); } else { foreach (var emError in apiModel.ExecutionMetadata.ValidateApiModel()) { yield return($"[executionMetadata]: {emError}"); } } }
/// <summary> /// Converts an output object accessor request API model to a core model /// </summary> /// <param name="apiModel"></param> /// <param name="objectName"></param> /// <returns></returns> public static OutputObjectAccessorRequest ToCoreModel(this OutputObjectAccessorRequestApiModel apiModel, string objectName) => new OutputObjectAccessorRequest { ExecutionMetadata = apiModel.ExecutionMetadata.ToCoreModel(), ExpirationPeriod = apiModel.ExpirationPeriod, ObjectMetadata = apiModel.ObjectMetadata.ToCoreModel(objectName), ObjectProviderName = apiModel.ObjectProviderName, SignatureRsaKeyXml = apiModel.SignatureRsaKeyXml };
public async Task <IActionResult> CalculateWritableOutputObjectAccessorAsync([FromBody] OutputObjectAccessorRequestApiModel requestApiModel) { // Validate the output object accessor request API model... var errors = requestApiModel.ValidateApiModel().ToList(); // If we encounter any validation errors, respond with [400 Bad Request] + detailed error description... if (errors.Any()) { return(BadRequest($"[{errors.Count}] error(s) occurred while attempting to process your request: {string.Join(' ', errors)}")); } // Convert the output object accessor request to its core model counterpart and attempt to obtain an object accessor... var ooAccessorRequest = requestApiModel.ToCoreModel(requestApiModel.ObjectName); var ooAccessor = await ooAccessorProvider.GetWritableAccessorAsync(ooAccessorRequest); // Repond with [200 OK] + the accessor... return(Ok(ooAccessor)); }