using System.IO; using System.Net.Http; using System.Security.Claims; using System.Text; using System.Threading.Tasks; namespace ImageRecognition.API { public static class Utilities { public static string GetUsername(ClaimsPrincipal user) { var claim = user.FindFirst("username"); return claim?.Value; } public static async Task CopyStreamAsync(string input, Stream output) { using (var client = new HttpClient()) using (var stream = await client.GetStreamAsync(input)) { CopyStream(stream, output); } } public static void CopyStream(Stream input, Stream output) { var buffer = new byte[8 * 1024]; int len; while ((len = input.Read(buffer, 0, buffer.Length)) > 0) output.Write(buffer, 0, len); } public static string MakeSafeName(string displayName, int maxSize) { var builder = new StringBuilder(); foreach (var c in displayName) if (char.IsLetterOrDigit(c)) builder.Append(c); else builder.Append('-'); var name = builder.ToString(); if (maxSize < name.Length) name = name.Substring(0, maxSize); return name; } } }