public static Client.EvaluationFile ConvertEvaluationFile(EvaluationFile source)
        {
            var target = new Client.EvaluationFile
            {
                FileName    = source.FileName,
                Sha256      = source.Sha256,
                Status      = ConvertEvaluationStatus(source.Status),
                StatusDate  = source.StatusDate,
                IsMalicious = source.Malicious,
                Message     = source.Message,
            };

            return(target);
        }
        /// <summary>
        /// Gets an evaluation file with a specified SHA-256 hash.
        /// </summary>
        /// <param name="hash">the SHA-256 hash of the file</param>
        /// <param name="cancellationToken">the cancellation token</param>
        /// <returns>the task returning the evaluation file</returns>
        /// <exception cref="ArgumentNullException">a required argument is null</exception>
        /// <exception cref="EvaluationFileNotFoundException">an evaluation file with the specified hash does not exist</exception>
        public async Task <EvaluationFile> GetFileBySha256(
            string hash,
            CancellationToken cancellationToken = default)
        {
            if (hash == null)
            {
                throw new ArgumentNullException(nameof(hash));
            }

            try
            {
                API.EvaluationFile serverEvaluationFile = await _client.FileBySha256Async(hash, cancellationToken);

                EvaluationFile evaluationFile = API.Conversion.ConvertEvaluationFile(serverEvaluationFile);

                return(evaluationFile);
            }
            catch (API.ApiClientException ex)
                when(ex.StatusCode == (int)HttpStatusCode.NotFound)
                {
                    throw new EvaluationFileNotFoundException($"An evaluation file with the specified SHA-256 hash `{hash}` was not found.", ex);
                }
            catch (API.ApiClientException ex)
                when(ex.StatusCode == (int)HttpStatusCode.Unauthorized)
                {
                    throw new AuthenticationException($"The request could not be authenticated.", ex);
                }
            catch (API.ApiClientException ex)
                when(ex.StatusCode == (int)HttpStatusCode.Forbidden)
                {
                    throw new AuthorizationException($"The requested operation could not be authorized.", ex);
                }
            catch (API.ApiClientException ex)
                when(ex.StatusCode == (int)HttpStatusCode.InternalServerError)
                {
                    throw new EvaluationServiceException($"An internal server error has occurred.", ex);
                }
            catch (API.ApiClientException ex)
            {
                throw new EvaluationServiceException($"An unexpected result was received.", ex);
            }
        }