diff --git a/AppCode/Formatters/Formatters.cs b/AppCode/Formatters/Formatters.cs new file mode 100644 index 0000000..cdcdd6f --- /dev/null +++ b/AppCode/Formatters/Formatters.cs @@ -0,0 +1,28 @@ +using Microsoft.AspNetCore.Mvc.Formatters; + +namespace CA_ANC.Formatters; +public class Formatters { + + + +} + +public class ByteArrayInputFormatter : InputFormatter +{ + public ByteArrayInputFormatter() + { + SupportedMediaTypes.Add(Microsoft.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/octet-stream")); + } + + protected override bool CanReadType(Type type) + { + return type == typeof(byte[]); + } + + public async override Task ReadRequestBodyAsync(InputFormatterContext context) + { + var stream = new MemoryStream(); + await context.HttpContext.Request.Body.CopyToAsync(stream); + return await InputFormatterResult.SuccessAsync(stream.ToArray()); + } +} diff --git a/Controllers/CartController.cs b/Controllers/CartController.cs new file mode 100644 index 0000000..50c3477 --- /dev/null +++ b/Controllers/CartController.cs @@ -0,0 +1,73 @@ +using Microsoft.AspNetCore.Mvc; +using System.Net; +using System.Net.Http; + + + +using CVRLIB.CARTS; +using static CVRLIB.CVSTRINGS.TextFuncs; + +using Newtonsoft.Json; +using CVRLIB; + +namespace VSERVERWS.Controllers { + + //https://vserverws.cvr.cvrco.ca/api/cart/CartStatus + + [Route("api/Cart/[action]")] + [ApiController] + public class CartController : ControllerBase { + + + + [HttpGet] + public IActionResult CartStatus() { + + var rOBJ = new { STATUS = "OK" }; + + return new JsonResult(rOBJ); + } + + + + + [HttpPost] + public async Task SubmitCartData([FromBody] byte[] data) { + + var JSON = await NonSecureDecryptByteAToStringAsync(data); + + var rOBJ = new TryCartOperationResult(); + + try { + var tCART = JsonConvert.DeserializeObject(JSON); + + if (tCART != null) { + + tCART.TrySyncToInventory(CVGlobal.INVENTORY); + + await tCART.SaveToDBAsync(); + + rOBJ.AddResult(true, "CART_SAVE_TO_DB"); + + + } else { + + rOBJ.AddResult(false, "CONVERT_TO_JSON", "Failed to convert to json from byte data."); + + } + + } catch (Exception ex) { + + rOBJ.AddResult(false, "CART_SAVE_TRY", ex.Message, ex); + + } + + + //return new result + return new JsonResult(rOBJ); + } + + + + } +}