parseDownloadInfoFromObject :: Yaml.Object -> Yaml.Parser DownloadInfo
parseDownloadInfoFromObject o = do
    url           <- o .: "url"
    contentLength <- o .: "content-length"
    sha1TextMay   <- o .:? "sha1"
    return DownloadInfo
        { downloadInfoUrl = url
        , downloadInfoContentLength = contentLength
        , downloadInfoSha1 = fmap T.encodeUtf8 sha1TextMay
        }
parseDownloadInfoFromObject :: Yaml.Object -> Yaml.Parser DownloadInfo
parseDownloadInfoFromObject o = do
    url           <- o .: "url"
    contentLength <- o .: "content-length"
    sha1TextMay   <- o .:? "sha1"
    return DownloadInfo
        { downloadInfoUrl = url
        , downloadInfoContentLength = contentLength
        , downloadInfoSha1 = fmap T.encodeUtf8 sha1TextMay
        }
parseDownloadInfoFromObject o = do
    url           <- o .: "url"
    contentLength <- o .: "content-length"
    sha1TextMay   <- o .:? "sha1"
    return DownloadInfo
        { downloadInfoUrl = url
        , downloadInfoContentLength = contentLength
        , downloadInfoSha1 = fmap T.encodeUtf8 sha1TextMay
        }