diff --git a/F4SDM42WebApi/F4SDM42WebApiController.cs b/F4SDM42WebApi/F4SDM42WebApiController.cs index db3d9fc..feb8374 100644 --- a/F4SDM42WebApi/F4SDM42WebApiController.cs +++ b/F4SDM42WebApi/F4SDM42WebApiController.cs @@ -94,16 +94,52 @@ namespace C4IT.F4SD return GetRequiredService(); } + private string GetQueryValue(string name) + { + return Request?.GetQueryNameValuePairs() + .FirstOrDefault(pair => string.Equals(pair.Key, name, StringComparison.OrdinalIgnoreCase)) + .Value; + } + + private string QueryValue(string value, string name) + { + return GetQueryValue(name) ?? value ?? string.Empty; + } + + private int QueryValue(int value, string name) + { + return int.TryParse(GetQueryValue(name), out var parsed) ? parsed : value; + } + + private Guid QueryValue(Guid value, string name) + { + return Guid.TryParse(GetQueryValue(name), out var parsed) ? parsed : value; + } + + private Guid? QueryValue(Guid? value, string name) + { + return Guid.TryParse(GetQueryValue(name), out var parsed) ? parsed : value; + } + + private TEnum QueryValue(TEnum value, string name) where TEnum : struct + { + return Enum.TryParse(GetQueryValue(name), true, out var parsed) ? parsed : value; + } + [Route("getDirectLinkCreateTicket"), HttpGet] public async Task getDirectLinkCreateTicket([FromUri] string sid = "", [FromUri] string assetname = "") { await Task.Delay(0); + sid = QueryValue(sid, nameof(sid)); + assetname = QueryValue(assetname, nameof(assetname)); return await _f4stHelperService.getDirectLinkCreateTicket(sid, assetname) ?? new F4SDHelperService.DirectLink(); } [Route("getDirectLinkF4SD"), HttpGet] public async Task getDirectLinkF4SD([FromUri] Guid eoid, [FromUri] string type) { + eoid = QueryValue(eoid, nameof(eoid)); + type = QueryValue(type, nameof(type)); return await _f4stHelperService.getDirectLinkF4SD(eoid, type) ?? string.Empty; } @@ -115,6 +151,10 @@ namespace C4IT.F4SD [FromUri] string queues = "" ) { + sid = QueryValue(sid, nameof(sid)); + hours = QueryValue(hours, nameof(hours)); + queueoption = QueryValue(queueoption, nameof(queueoption)); + queues = QueryValue(queues, nameof(queues)); var decodedPairs = ParseQueues(queues); // Nun weiterreichen an Service @@ -130,6 +170,7 @@ namespace C4IT.F4SD [Route("getTicketDetails"), HttpGet] public async Task getTicketDetails([FromUri] Guid objectId) { + objectId = QueryValue(objectId, nameof(objectId)); var tickets = await _f4stHelperService.getTicketDetails(new List() { objectId }); if (tickets?.Count > 0) return tickets[0]; @@ -140,6 +181,7 @@ namespace C4IT.F4SD [Route("getTicketHistory"), HttpGet] public async Task> getTicketHistory([FromUri] Guid objectId) { + objectId = QueryValue(objectId, nameof(objectId)); return await _f4stHelperService.GetJournalEntries(objectId) ?? new List(); } @@ -152,6 +194,11 @@ namespace C4IT.F4SD [FromUri] string queues = "" ) { + sid = QueryValue(sid, nameof(sid)); + scope = QueryValue(scope, nameof(scope)); + keys = QueryValue(keys, nameof(keys)); + queueoption = QueryValue(queueoption, nameof(queueoption)); + queues = QueryValue(queues, nameof(queues)); var parsedKeys = (keys ?? string.Empty) .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(key => key.Trim()) @@ -197,6 +244,12 @@ namespace C4IT.F4SD [FromUri] string queues = "" ) { + sid = QueryValue(sid, nameof(sid)); + scope = QueryValue(scope, nameof(scope)); + key = QueryValue(key, nameof(key)); + count = QueryValue(count, nameof(count)); + queueoption = QueryValue(queueoption, nameof(queueoption)); + queues = QueryValue(queues, nameof(queues)); var decodedQueues = ParseQueues(queues); return await _f4stHelperService.getTicketOverviewRelations(sid, scope, key, count, queueoption, decodedQueues) ?? new List(); @@ -216,6 +269,9 @@ namespace C4IT.F4SD public async Task getPickup([FromUri] string name, [FromUri] EntityEnumerationVisibilityMode mode = EntityEnumerationVisibilityMode.None, [FromUri] Int32 group = -1) { await Task.Delay(0); + name = QueryValue(name, nameof(name)); + mode = QueryValue(mode, nameof(mode)); + group = QueryValue(group, nameof(group)); EntityEnumeration enumerationTemp = GetEnumeration(name, mode); var vals = enumerationTemp.Values; @@ -253,6 +309,9 @@ namespace C4IT.F4SD [Route("getRoleMemberships")] public async Task getRoleMemberships([FromUri] string sid = "", [FromUri] string upn = "", [FromUri] Guid? id = null) { + sid = QueryValue(sid, nameof(sid)); + upn = QueryValue(upn, nameof(upn)); + id = QueryValue(id, nameof(id)); var filter = ""; if (id != null && id.Value != Guid.Empty) @@ -415,6 +474,7 @@ namespace C4IT.F4SD try { await Task.Delay(0); + debug = QueryValue(debug, nameof(debug)); DefaultLogger.Manager.Level = debug == "1" || debug.Equals("true", StringComparison.OrdinalIgnoreCase) ? LogLevels.Debug : LogLevels.Info; return DefaultLogger.Manager.Level.ToString(); } @@ -434,6 +494,9 @@ namespace C4IT.F4SD { try { + download = QueryValue(download, nameof(download)); + count = QueryValue(count, nameof(count)); + filter = QueryValue(filter, nameof(filter)); var response = _f4stHelperService.privGetLog(download, count, Request, filter); if (response == null) return new StatusCodeResult(HttpStatusCode.NoContent);