70 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System.Text.Json;
 | |
| using Phares.Shared.Models;
 | |
| 
 | |
| namespace Phares.Metadata.Models.Stateless;
 | |
| 
 | |
| internal static class Face
 | |
| {
 | |
| 
 | |
|     internal static FaceEncoding? GetFaceEncoding(ExifDirectory? exifDirectory)
 | |
|     {
 | |
|         FaceEncoding? result;
 | |
|         string? json = GetFaceEncoding(exifDirectory?.PngDirectories);
 | |
|         result = string.IsNullOrEmpty(json) ? null : JsonSerializer.Deserialize(json, FaceEncodingGenerationContext.Default.FaceEncoding);
 | |
|         return result;
 | |
|     }
 | |
| 
 | |
|     internal static string? GetFaceEncoding(PngDirectory[]? pngDirectories)
 | |
|     {
 | |
|         string? result = null;
 | |
|         if (pngDirectories is not null)
 | |
|         {
 | |
|             const string comment = "Comment:";
 | |
|             foreach (PngDirectory pngDirectory in pngDirectories)
 | |
|             {
 | |
|                 if (pngDirectory.TextualData is null || !pngDirectory.TextualData.StartsWith(comment))
 | |
|                     continue;
 | |
|                 result = pngDirectory.TextualData[comment.Length..];
 | |
|                 break;
 | |
|             }
 | |
|         }
 | |
|         return result;
 | |
|     }
 | |
| 
 | |
|     internal static FaceFile? GetFaceFile(ExifDirectory? exifDirectory)
 | |
|     {
 | |
|         FaceFile? result;
 | |
|         string? json = GetOutputResolution(exifDirectory?.PngDirectories);
 | |
|         result = string.IsNullOrEmpty(json) ? null : JsonSerializer.Deserialize(json, FaceFileGenerationContext.Default.FaceFile);
 | |
|         return result;
 | |
|     }
 | |
| 
 | |
|     private static string? GetOutputResolution(PngDirectory[]? pngDirectories)
 | |
|     {
 | |
|         string? result = null;
 | |
|         if (pngDirectories is not null)
 | |
|         {
 | |
|             const string artist = "Artist:";
 | |
|             foreach (PngDirectory pngDirectory in pngDirectories)
 | |
|             {
 | |
|                 if (pngDirectory.TextualData is null || !pngDirectory.TextualData.StartsWith(artist))
 | |
|                     continue;
 | |
|                 result = pngDirectory.TextualData[artist.Length..];
 | |
|                 break;
 | |
|             }
 | |
|             if (result is null)
 | |
|             {
 | |
|                 const string author = "Author:";
 | |
|                 foreach (PngDirectory pngDirectory in pngDirectories)
 | |
|                 {
 | |
|                     if (pngDirectory.TextualData is null || !pngDirectory.TextualData.StartsWith(author))
 | |
|                         continue;
 | |
|                     result = pngDirectory.TextualData[author.Length..];
 | |
|                     break;
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         return result;
 | |
|     }
 | |
| 
 | |
| } |