Verifalia fournit une API simple basée sur HTTPS pour valider les adresses e-mail en temps réel et vérifier si elles sont livrables ou non ; cette bibliothèque SDK s'intègre à Verifalia et permet de vérifier les adresses e-mail sous les plateformes suivantes :
Pour en savoir plus sur Verifalia, veuillez consulter https://verifalia.com
Le moyen le meilleur et le plus simple d'ajouter la bibliothèque SDK de vérification des e-mails Verifalia à votre projet .NET consiste à utiliser le gestionnaire de packages NuGet.
Depuis Visual Studio, vous pouvez utiliser l’interface graphique NuGet pour rechercher et installer le package Verifalia NuGet. Ou, comme raccourci, tapez simplement la commande suivante dans la console du gestionnaire de packages :
Install-Package Verifalia
Comme autre moyen d'ajouter le SDK Verifalia à votre solution .NET, vous pouvez télécharger le projet source du SDK depuis github, l'extraire dans un dossier de votre choix et ajouter une référence de votre propre projet au projet SDK Verifalia. Le projet SDK est un projet C# qui peut également être référencé et utilisé avec n'importe quel autre langage .NET, notamment Visual Basic (VB.NET), C++/CLI, J#, IronPython, IronRuby, F# et PowerShell.
En savoir plus sur https://verifalia.com
Tout d'abord : l'authentification à l'API Verifalia s'effectue soit au moyen des informations d'identification de votre compte racine Verifalia, soit de l'un de ses utilisateurs (anciennement appelés sous-comptes) : si vous n'avez pas de compte Verifalia, inscrivez-vous simplement pour un gratuit. Pour des raisons de sécurité, il est toujours conseillé de créer et d'utiliser un utilisateur dédié pour accéder à l'API, car cela permettra de lui attribuer uniquement les autorisations spécifiques nécessaires.
En savoir plus sur l'authentification auprès de l'API Verifalia sur https://verifalia.com/developers#authentication
Une fois que vous avez vos identifiants Verifalia à portée de main, utilisez-les lors de la création d'une nouvelle instance de type VerifaliaRestClient , qui sera le point de départ de toute autre opération sur l'API Verifalia : les identifiants fournis seront automatiquement fournis à l'API à l'aide du HTTP Basic. Méthode d'authentification.
using Verifalia . Api ;
var verifalia = new VerifaliaRestClient ( "username" , "password" ) ;En plus de la méthode HTTP Basic Auth, ce SDK prend également en charge d'autres méthodes d'authentification auprès de l'API Verifalia, comme expliqué dans les sections suivantes.
L'authentification du porteur offre une sécurité plus élevée que l'authentification HTTP Basic, car cette dernière nécessite l'envoi des informations d'identification réelles à chaque appel d'API, tandis que la première ne l'exige que lors d'une première demande d'authentification dédiée. En revanche, la première requête d'authentification nécessaire à l'authentification Bearer prend un temps non négligeable : si vous ne devez effectuer qu'une seule requête, l'utilisation de HTTP Basic Auth offre le même degré de sécurité et est également plus rapide.
using Verifalia . Api ;
using Verifalia . Api . Security ;
var verifalia = new VerifaliaRestClient ( new BearerAuthenticationProvider ( "username" , "password" ) ) ; La gestion de l'authentification multifacteur (MFA) est également possible en définissant une implémentation personnalisée de l'interface ITotpTokenProvider , qui doit être utilisée pour acquérir le mot de passe à usage unique basé sur le temps à partir d'une application ou d'un appareil d'authentification externe : pour ajouter une authentification multifacteur à votre compte racine Verifalia, configurez vos paramètres de sécurité.
using Verifalia . Api ;
using Verifalia . Api . Security ;
class MyTotpProvider : ITotpTokenProvider
{
public Task < string > ProvideTotpTokenAsync ( CancellationToken cancellationToken )
{
// Ask the user to type his or her TOTP token
Console . WriteLine ( "Acquire your TOTP token and type it here:" ) ;
var totpToken = Console . ReadLine ( ) ;
return Task . FromResult ( totpToken ) ;
}
}
// ...
var verifalia = new VerifaliaRestClient ( new BearerAuthenticationProvider ( "username" , "password" , new MyTotpProvider ( ) ) ) ; Cette méthode d'authentification utilise un certificat client cryptographique X.509 pour s'authentifier auprès de l'API Verifalia, via le protocole TLS. Cette méthode, également appelée authentification TLS mutuelle (mTLS) ou authentification bidirectionnelle, offre le plus haut degré de sécurité, car seule une clé dérivée de manière cryptographique (et non les informations d'identification réelles) est envoyée par câble à chaque demande.
using Verifalia . Api ;
using Verifalia . Api . Security ;
var verifalia = new VerifaliaRestClient ( new X509Certificate2 ( "mycertificate.pem" ) ) ; Chaque opération liée à la vérification/validation des adresses e-mail est effectuée via la propriété EmailValidations exposée par l'instance VerifaliaRestClient que vous avez créée ci-dessus. La propriété est remplie de méthodes utiles, chacune ayant de nombreuses surcharges : dans les prochains paragraphes, nous examinons les plus utilisées, il est donc fortement conseillé d'explorer la bibliothèque et de consulter l'aide xmldoc intégrée pour d'autres opportunités.
La bibliothèque attend automatiquement la fin des tâches de vérification des e-mails : si nécessaire, il est possible d'ajuster les options d'attente et d'avoir plus de contrôle sur l'ensemble du processus d'interrogation sous-jacent. Veuillez vous référer à la section Options d'attente ci-dessous pour plus de détails.
Pour valider une adresse email depuis une application .NET vous pouvez invoquer la méthode SubmitAsync() : elle accepte une ou plusieurs adresses email et toutes les éventuelles options de vérification que vous souhaitez transmettre à Verifalia, y compris la qualité des résultats attendus, les préférences de déduplication, la priorité de traitement.
Remarque Dans le cas où vous devez vérifier une liste d'adresses e-mail, il est conseillé de les soumettre toutes en même temps via l'une des surcharges de méthodes
SubmitAsync()dédiées (voir les sections suivantes), au lieu de parcourir l'ensemble source et de soumettre le adresses une par une. Non seulement la méthode tout-en-un serait plus rapide, mais elle permettrait également de détecter et de marquer les éléments en double – une fonctionnalité qui n'est pas disponible lors de la vérification des adresses e-mail une par une.
Dans l'exemple suivant, nous vérifions une adresse e-mail avec cette bibliothèque, en utilisant les options par défaut :
var job = await verifalia
. EmailValidations
. SubmitAsync ( "[email protected]" ) ;
// At this point the address has been validated: let's print its email validation
// result to the console.
var entry = job . Entries [ 0 ] ;
Console . WriteLine ( $ "Classification: { entry . Classification } (status: { entry . Status } )" ) ;
// Classification: Deliverable (status: Success)Comme vous pouvez vous y attendre, chaque entrée peut inclure divers détails supplémentaires sur l'adresse e-mail vérifiée :
| Propriété | Description |
|---|---|
AsciiEmailAddressDomainPart | Obtient la partie domaine de l'adresse e-mail, convertie en ASCII si nécessaire et avec les commentaires et les espaces blancs supprimés. |
Classification | Valeur ValidationEntryClassification pour cette entrée. |
CompletedOn | La date à laquelle cette entrée a été complétée, si disponible. |
Custom | Une chaîne personnalisée et facultative qui est renvoyée une fois la validation terminée. Pour transmettre une valeur personnalisée, utilisez la propriété Custom de ValidationRequestEntry . |
DuplicateOf | L'index de base zéro de la première occurrence de cette adresse e-mail dans le parent Validation , dans le cas où le Status de cette entrée est Duplicate ; les éléments dupliqués n'exposent aucun détail de résultat en dehors de cela et des éventuelles valeurs Custom . |
Index | L'index de cette entrée dans son conteneur Validation ; cette propriété est surtout utile dans le cas où l'API renvoie une vue filtrée des éléments. |
InputData | La chaîne d'entrée en cours de validation. |
EmailAddress | Récupère l'adresse e-mail, sans aucun commentaire éventuel ni espace blanc pliable. Renvoie null si les données d'entrée ne sont pas une adresse e-mail syntaxiquement invalide. |
EmailAddressDomainPart | Récupère la partie domaine de l'adresse e-mail, sans commentaires ni espaces blancs. |
EmailAddressLocalPart | Récupère la partie locale de l'adresse e-mail, sans commentaires ni espaces blancs. |
HasInternationalDomainName | Si c'est vrai, l'adresse e-mail possède un nom de domaine international. |
HasInternationalMailboxName | Si c'est vrai, l'adresse e-mail possède un nom de boîte aux lettres internationale. |
IsDisposableEmailAddress | Si c'est vrai, l'adresse e-mail provient d'un fournisseur d'adresse e-mail jetable (DEA). Qu'est-ce qu'une adresse email jetable ? |
IsFreeEmailAddress | Si c'est vrai, l'adresse e-mail provient d'un fournisseur d'adresses e-mail gratuit (par exemple Gmail, Yahoo, Outlook/Hotmail, ...). |
IsRoleAccount | Si cela est vrai, la partie locale de l’adresse e-mail correspond à un compte de rôle bien connu. |
Status | Valeur ValidationEntryStatus pour cette entrée. |
Suggestions | Les corrections potentielles des données saisies, dans le cas où Verifalia identifierait des fautes de frappe potentielles lors du processus de vérification. |
SyntaxFailureIndex | Position du caractère dans l'adresse e-mail qui a finalement provoqué l'échec de la validation de la syntaxe. |
Voici un autre exemple, montrant certains des détails de résultats supplémentaires fournis par Verifalia :
var job = await verifalia
. EmailValidations
. SubmitAsync ( "bat[[email protected]" ) ;
var entry = job . Entries [ 0 ] ;
Console . WriteLine ( $ "Classification: { entry . Classification } " ) ;
Console . WriteLine ( $ "Status: { entry . Status } " ) ;
Console . WriteLine ( $ "Syntax failure index: { entry . SyntaxFailureIndex } " ) ;
if ( entry . Suggestions != null )
{
Console . WriteLine ( "Suggestions:" ) ;
foreach ( var suggestion in entry . Suggestions )
{
Console . WriteLine ( $ "- { suggestion } " ) ;
}
}
// Classification: Undeliverable
// Status: InvalidCharacterInSequence
// Syntax failure index: 3
// Suggestions:
// - [email protected] Pour vérifier une liste d'adresses email - au lieu d'une seule adresse - il est possible d'utiliser la surcharge de méthode SubmitAsync() qui accepte un IEnumerable<string> ; si les adresses e-mail à vérifier sont initialement stockées dans un fichier, il est également possible de simplement télécharger le fichier et de demander à Verifalia de l'importer et de le vérifier automatiquement - voir la section suivante pour plus de détails.
Voici un exemple montrant comment vérifier un tableau avec certaines adresses e-mail :
var job = await verifalia
. EmailValidations
. SubmitAsync ( new [ ] {
"[email protected]" ,
"[email protected]" ,
"[email protected]"
} ) ;
Console . WriteLine ( $ "Job ID: { job . Overview . Id } " ) ;
foreach ( var entry in job . Entries )
{
Console . WriteLine ( $ "- { entry . InputData } => { entry . Classification } ( { entry . Status } )" ) ;
}
// Job Id: 290b5146-eeac-4a2b-a9c1-61c7e715f2e9
// - [email protected] => Deliverable (Success)
// - [email protected] => Undeliverable (DomainIsMisconfigured)
// - [email protected] => Deliverable (Success)Cette bibliothèque inclut la prise en charge de la soumission et de la validation de fichiers avec des adresses e-mail, notamment :
Pour soumettre et valider des fichiers, on peut toujours utiliser la méthode SubmitAsync() mentionnée ci-dessus, en passant soit une instance Stream ou FileInfo , soit simplement un byte[] avec le contenu du fichier. Parallèlement à cela, il est également possible de spécifier les éventuelles lignes de début et de fin à traiter, la colonne, l'index de la feuille, la fin de ligne et le délimiteur - en fonction bien sûr de la nature du fichier soumis (voir FileValidationRequest dans les sources pour apprendre encore plus).
Voici par exemple comment soumettre et vérifier un fichier Excel :
var job = await verifalia
. EmailValidations
. SubmitAsync ( new FileInfo ( "that-file.xslx" ) ) ; Pour des options plus avancées, transmettez simplement l'instance FileValidationRequest à la méthode SubmitAsync() :
var job = await verifalia
. EmailValidations
. SubmitAsync ( new FileValidationRequest ( new FileInfo ( "that-file.xslx" ) )
{
Sheet = 3 ,
StartingRow = 1 ,
Column = 5
} ,
quality : QualityLevelName . High ) ; Et voici un autre exemple, montrant comment soumettre une instance Stream et spécifiant le type de contenu MIME du fichier, qui est automatiquement déterminé à partir de l'extension du fichier dans le cas où vous transmettez une instance FileInfo :
Stream inputStream = .. . ; // TODO: Acquire the input data somehow
var job = await verifalia
. EmailValidations
. SubmitAsync ( inputStream ,
MediaTypeHeaderValue . Parse ( WellKnownMimeContentTypes . TextPlain ) ) ; // text/plainLors de la soumission d'une ou plusieurs adresses e-mail pour vérification, il est possible de spécifier plusieurs options qui affectent le comportement du moteur de traitement Verifalia ainsi que le flux de vérification du point de vue du consommateur de l'API.
Verifalia propose trois niveaux de qualité distincts - à savoir Standard , Élevé et Extrême - qui excluent la manière dont le moteur de vérification des e-mails doit gérer les problèmes temporaires d'impossibilité de délivrabilité, les échangeurs de courrier plus lents et d'autres problèmes potentiellement transitoires pouvant affecter la qualité des résultats de la vérification. Les surcharges de méthode SubmitAsync() acceptent un paramètre quality qui permet de spécifier le niveau de qualité souhaité ; voici un exemple montrant comment vérifier une adresse e-mail en utilisant le niveau de qualité Élevé :
var job = await verifalia
. EmailValidations
. SubmitAsync ( "[email protected]" , quality : QualityLevelName . High ) ; Les surcharges de la méthode SubmitAsync() acceptant plusieurs adresses e-mail à la fois permettent de spécifier comment traiter les entrées dupliquées appartenant au même ensemble d'entrées ; Verifalia prend en charge un mode de déduplication sécurisé , qui adhère fortement aux anciennes normes IETF, et un mode détendu , plus conforme à ce que l'on retrouve dans la majorité des configurations d'échangeurs de messagerie actuels.
Dans l'exemple suivant, nous montrons comment importer et vérifier une liste d'adresses e-mail et marquer les entrées dupliquées à l'aide du mode de déduplication détendu :
var job = await verifalia
. EmailValidations
. SubmitAsync ( new FileInfo ( "that-file.xslx" ) , deduplication : DeduplicationMode . Relaxed ) ; Verifalia supprime automatiquement les tâches de vérification des e-mails terminées conformément à la politique de conservation des données définie au niveau du compte, qui peut éventuellement être annulée au niveau de l'utilisateur : on peut utiliser la zone clients Verifalia pour configurer ces paramètres.
Il est également possible de spécifier une politique de conservation des données par tâche qui régit la durée de vie d'une tâche de vérification d'e-mail soumise ; pour ce faire, utilisez les surcharges de méthode SubmitAsync() qui accepte une instance ValidationRequest ou FileValidationRequest et initialisez sa propriété Retention en conséquence.
Voici comment, par exemple, on peut définir une politique de conservation des données de 10 minutes lors de la vérification d'une adresse e-mail :
var job = await verifalia
. EmailValidations
. SubmitAsync ( new ValidationRequest ( new [ ]
{
"[email protected]"
} )
{
Retention = TimeSpan . FromMinutes ( 10 )
} ) ; Par défaut, la méthode SubmitAsync() surcharge soumet une tâche de vérification d'e-mail à Verifalia et attend qu'elle soit terminée ; l'ensemble du processus peut prendre un certain temps en fonction du plan du compte Verifalia, du nombre d'adresses e-mail contenues dans la soumission, du niveau de qualité spécifié et d'autres facteurs de réseau, notamment la latence des échangeurs de courrier testés.
En attendant la fin d'une tâche de vérification d'e-mail donnée, la bibliothèque interroge automatiquement l'API Verifalia sous-jacente jusqu'à ce que les résultats soient prêts ; par défaut, il essaie de profiter du mode d'interrogation longue introduit avec l'API Verifalia v2.4, qui permet de minimiser le nombre de requêtes et d'obtenir les résultats de vérification plus rapidement.
Dans certains scénarios (dans une architecture de microservices, par exemple), il peut cependant être préférable d'éviter d'attendre la fin d'une tâche et de demander à l'API Verifalia de simplement la mettre en file d'attente : dans ce cas, la bibliothèque renverrait simplement la tâche. aperçu (et non ses résultats de vérification) et il faudra récupérer les résultats de vérification à l'aide de la méthode GetAsync() .
Pour ce faire, il est possible de spécifier WaitOptions.NoWait comme valeur du paramètre waitOptions des surcharges de méthode SubmitAsync() , comme le montre l'exemple suivant :
var job = await verifalia
. EmailValidations
. SubmitAsync ( new FileInfo ( "that-file.xslx" ) ,
waitOptions : WaitOptions . NoWait ) ;
Console . WriteLine ( $ "Status: { job . Overview . Status } " ) ;
// Status: InProgress Pour les tâches comportant un grand nombre d'adresses e-mail, il peut être utile de suivre la progression au fur et à mesure de leur traitement par le moteur de vérification des e-mails de Verifalia ; pour ce faire, il est possible de créer une instance de la classe WaitOptions et de fournir un gestionnaire qui recevra éventuellement des notifications de progression via la propriété Progress .
Voici comment définir un gestionnaire de notification de progression qui affiche le pourcentage de progression d'un travail soumis dans la fenêtre de la console :
var job = await verifalia
. EmailValidations
. SubmitAsync ( new FileInfo ( "that-other-file.csv" ) ,
waitOptions : new WaitOptions
{
Progress = new Progress < ValidationOverview > ( overview =>
{
Console . WriteLine ( overview . Progress ? . Percentage ) ;
} )
} ) ;Avec chaque tâche de validation d'e-mail, il est possible de spécifier une URL que Verifalia invoquera (POST) une fois la tâche terminée : cette URL doit utiliser le schéma HTTPS ou HTTP et être accessible publiquement sur Internet. Pour en savoir plus sur les rappels d'achèvement, veuillez consulter https://verifalia.com/developers#email-validations-completion-callback
Pour spécifier une URL de rappel d'achèvement, transmettez un ValidationRequest ou un FileValidationRequest à la méthode SubmitAsync() et définissez sa propriété CompletionCallback en conséquence, comme indiqué dans l'exemple ci-dessous :
await verifalia
. EmailValidations
. SubmitAsync ( new ValidationRequest ( new [ ] { "[email protected]" } )
{
CompletionCallback = new CompletionCallback ( "https://your-website-here/foo/bar" )
} ) ;Notez que les rappels d'achèvement sont appelés de manière asynchrone et que l'appel de votre URL de rappel peut prendre jusqu'à plusieurs secondes.
Il est possible de récupérer une tâche via les méthodes GetAsync() et GetOverviewAsync() , qui renvoient respectivement une instance Validation ou une instance ValidationOverview pour la tâche de vérification d'e-mail souhaitée. Ce faisant, la bibliothèque attend automatiquement la fin du travail, et il est possible d'ajuster ce comportement en passant aux méthodes susmentionnées un paramètre waitOptions , exactement de la même manière que celle décrite pour les surcharges de la méthode SubmitAsync() ; veuillez consulter la section Options d'attente pour plus de détails.
Voici un exemple montrant comment récupérer un travail, compte tenu de son identifiant :
var jobId = Guid . Parse ( "ec415ecd-0d0b-49c4-a5f0-f35c182e40ea" ) ;
var job = await verifalia . EmailValidations . GetAsync ( jobId ) ; Cette bibliothèque permet également d'exporter les entrées d'un travail de validation d'e-mail terminé dans différents formats de sortie via la méthode ExportEntriesAsync() , dans le but de générer une représentation lisible par l'homme des résultats de la vérification.
ATTENTION : Bien que le schéma de sortie (colonnes / étiquettes / format de données) soit assez complet, vous devez toujours le considérer comme sujet à changement : utilisez plutôt les méthodes
GetAsync()/GetEntriesAsync()si vous devez vous appuyer sur un schéma de sortie stable.
Voici un exemple montrant comment exporter une tâche de vérification d'e-mail donnée sous forme de fichier CSV :
// Exports the validated entries for the job in the CSV format
var exportedStream = await verifalia
. EmailValidations
. ExportEntriesAsync ( new Guid ( "722c2fd8-8837-449f-ad24-0330c597c993" ) ,
ExportedEntriesFormat . Csv ) ;
// Creates the output file stream
var fileStream = new FileStream ( "my-list.csv" , FileMode . Create ) ;
// Copies the exported stream into the output file stream
await exportedStream . CopyToAsync ( fileStream ) ; Verifalia supprime automatiquement les tâches terminées après une politique de conservation des données configurable (voir la section correspondante), mais il est fortement conseillé de supprimer vos tâches terminées dès que possible, pour des raisons de confidentialité et de sécurité. Pour ce faire, vous pouvez invoquer la méthode DeleteAsync() en passant l'ID de travail dont vous souhaitez vous débarrasser :
await verifalia
. EmailValidations
. DeleteAsync ( job . Id ) ;Une fois supprimé, un travail disparaît et il n'y a aucun moyen de récupérer ses résultats de validation par courrier électronique.
À des fins de gestion et de reporting, vous souhaiterez peut-être obtenir une liste détaillée de vos précédentes tâches de validation d'e-mails. Cette bibliothèque SDK permet de le faire via la méthode ListAsync() , qui permet d'itérer de manière asynchrone sur une collection d'instances ValidationOverview (le même type de la propriété Overview des résultats renvoyés par SubmitAsync() et GetAsync() ).
Voici comment parcourir vos tâches, de la plus récente à la plus ancienne :
var jobOverviews = verifalia
. EmailValidations
. ListAsync ( new ValidationOverviewListingOptions
{
Direction = Direction . Backward
} ) ;
await foreach ( var jobOverview in jobOverviews )
{
Console . WriteLine ( "Id: {0}, status: {2}, entries: {3}" ,
jobOverview . Id ,
jobOverview . Status ,
jobOverview . NoOfEntries ) ;
}
// Prints out something like:
// Id: a7784f9a-86d4-436c-b8e4-f72f2bd377ac, status: InProgress, entries: 9886
// Id: 86d57c00-147a-4736-88cc-c918260c67c6, status: Completed, entries: 1
// Id: 594bbb0f-6f12-481c-926f-606cfefc1cd5, status: Completed, entries: 1
// Id: a5c1cd5b-39cc-43bc-9a3a-ee4a0f80ee6d, status: InProgress, entries: 226
// Id: b6f69e30-60dd-4c21-b2cb-e73ba75fb278, status: Completed, entries: 12077
// Id: 5e5a97dc-459f-4edf-a607-47371c32aa94, status: Deleted, entries: 1009
// ...La méthode
ListAsync()utilise la fonctionnalité énumérable asynchrone C# 8.0 ; pour la prise en charge des langues précédentes, veuillez consulter le groupe de méthodesListSegmentedAsync().
La méthode ListAsync() a également la capacité, via le même argument options , de filtrer les jobs de vérification des emails renvoyés par l'API Verifalia : il est possible de filtrer par date de soumission, propriétaire et statut des jobs.
Voici comment répéter l'opération de listage présentée dans l'exemple ci-dessus, en renvoyant cette fois uniquement les tâches d'un utilisateur donné et pour une plage de dates donnée :
var jobOverviews = verifalia
. EmailValidations
. ListAsync ( new ValidationOverviewListingOptions
{
Direction = Direction . Backward ,
CreatedOn = new DateBetweenPredicate ( new DateTime ( 2024 , 1 , 3 ) ,
new DateTime ( 2024 , 1 , 7 ) ) ,
Owner = new StringEqualityPredicate ( "50173acd-9ed2-4298-ba7f-8ccaeed48deb" )
} ) ;
await foreach ( var jobOverview in jobOverviews )
{
// ...
} Pour gérer les crédits Verifalia pour votre compte, vous pouvez utiliser la propriété Credits exposée par l'instance VerifaliaRestClient créée ci-dessus. Comme pour le sujet précédent, dans les prochains paragraphes, nous examinons les opérations les plus utilisées. Il est donc fortement conseillé d'explorer la bibliothèque et de consulter l'aide xmldoc intégrée pour d'autres opportunités.
L'une des tâches les plus courantes que vous devrez peut-être effectuer sur votre compte consiste à récupérer le nombre disponible de crédits quotidiens gratuits et de packs de crédits. Pour ce faire, vous pouvez utiliser la méthode GetBalanceAsync() , qui renvoie un objet Balance , comme indiqué dans l'exemple suivant :
var balance = await verifalia
. Credits
. GetBalanceAsync ( ) ;
Console . WriteLine ( "Credit packs: {0}, free daily credits: {1} (will reset in {2})" ,
balance . CreditPacks ,
balance . FreeCredits ,
balance . FreeCreditsResetIn ) ;
// Prints out something like:
// Credit packs: 956.332, free daily credits: 128.66 (will reset in 09:08:23)Pour ajouter des packs de crédits à votre compte Verifalia, visitez https://verifalia.com/client-area#/credits/add.
Afin de surveiller et de prévoir la consommation de crédits de votre compte, la méthode ListDailyUsagesAsync() permet de récupérer des statistiques sur l'utilisation historique des crédits, en renvoyant une collection itérable de manière asynchrone d'instances DailyUsage . La méthode permet également de limiter la période d'intérêt en passant une instance DailyUsageListingOptions . Les éléments ne sont restitués que pour les dates auxquelles la consommation (de crédits gratuits, de packs de crédits ou des deux) a eu lieu.
Voici comment récupérer la consommation journalière de crédits des trente derniers jours :
var dailyUsages = verifalia
. Credits
. ListDailyUsagesAsync ( new DailyUsageListingOptions
{
DateFilter = new DateBetweenPredicate
{
Since = DateTime . Now . AddDays ( - 30 )
}
} ) ;
await foreach ( var dailyUsage in dailyUsages )
{
Console . WriteLine ( "{0:yyyyMMdd} - credit packs: {1}, free daily credits: {2}" ,
dailyUsage . Date ,
dailyUsage . CreditPacks ,
dailyUsage . FreeCredits ) ;
}
// Prints out something like:
// 20240201 - credit packs: 1965.68, free daily credits: 200
// 20240126 - credit packs: 0, free daily credits: 185.628
// 20240125 - credit packs: 15.32, free daily credits: 200
// ...La méthode
ListDailyUsagesAsync()utilise la fonctionnalité énumérable asynchrone C# 8.0 ; pour la prise en charge des langues précédentes, veuillez consulter le groupe de méthodesListDailyUsagesSegmentedAsync().
Cette section répertorie le journal des modifications pour la version majeure actuelle de la bibliothèque : pour les anciennes versions, veuillez consulter les versions du projet. Par souci de clarté, les journaux des mises à jour de build et de révision sont exclus.
Sortie le 11 janvier 2024
Sortie le 26 mai 2023
ToAsyncEnumerableAsync() qui entraînait auparavant des listes incomplètes dans des scénarios spécifiquesSortie le 27 février 2023
WaitingStrategy en WaitOptions et refactorisé ce dernier afin qu'il permette désormais d'ajuster les temps d'attente d'interrogation sous-jacentsWaitOptions ).CompletionCallback des classes ValidationRequest et FileValidationRequest pointe désormais vers une classe CompletionCallback à part entière au lieu d'un simple Uri