FluentValidation integration extensions for TurkishValidators library.
$ dotnet add package TurkishValidators.FluentValidationTurkishValidators, Türkiye'ye özgü veri tipleri (TCKN, Vergi No, IBAN, Telefon, Plaka, Posta Kodu) için geliştirilmiş; performanslı, hafif, API bağımlılığı olmayan ve genişletilebilir bir .NET doğrulama kütüphanesidir.
ValidationAttribute desteği.FluentValidation extension metodları.TurkishValidators.TestData paketi.Projenize NuGet üzerinden ekleyebilirsiniz:
# Core Kütüphane (Temel Doğrulayıcılar)
dotnet add package TurkishValidators
# ASP.NET Core Entegrasyonu (Attributes)
dotnet add package TurkishValidators.AspNetCore
# FluentValidation Entegrasyonu
dotnet add package TurkishValidators.FluentValidation
# Test Verisi Üreticisi (Test Projeleri İçin)
dotnet add package TurkishValidators.TestData
# System.Text.Json Entegrasyonu
dotnet add package TurkishValidators.Json
using TurkishValidators.Validators;
// TC Kimlik No Doğrulama
var tcknValidator = new TcKimlikNoValidator();
var result = tcknValidator.Validate("10000000146");
if (result.IsValid)
{
Console.WriteLine("Geçerli TCKN!");
}
else
{
Console.WriteLine(result.ErrorMessage); // "TC Kimlik Numarası geçersiz."
}
// Statik Kullanım
bool isValid = TcKimlikNoValidator.IsValid("10000000146");
Model sınıflarınızda doğrudan kullanabilirsiniz:
using TurkishValidators.AspNetCore.Attributes;
public class UserDto
{
[TcKimlikNo(ErrorMessage = "Lütfen geçerli bir TC giriniz.")]
public string NationalId { get; set; }
[TurkishPhone]
public string PhoneNumber { get; set; }
[VehiclePlate]
public string CarPlate { get; set; }
}
Mevcut validator sınıflarınızda zincirleme metodlar (chaining) ile kullanın:
using FluentValidation;
using TurkishValidators.FluentValidation.Extensions;
public class CustomerValidator : AbstractValidator<Customer>
{
public CustomerValidator()
{
RuleFor(x => x.TcNo).MustBeTurkishIdentity();
RuleFor(x => x.Iban).MustBeTurkishIban();
RuleFor(x => x.Plate).MustBeVehiclePlate();
// Opsiyonel Ayarlar
RuleFor(x => x.TaxNo).MustBeTurkishTaxNumber(new VergiNoValidationOptions
{
// Ayarlar...
});
}
}
Hassas verileri loglarken veya gösterirken maskeleyin:
using TurkishValidators.Masking;
string maskedTc = TcKimlikNoMasker.Mask("12345678901");
// Çıktı: 123******01 (Varsayılan: İlk 3, Son 2 açık)
string maskedIban = IbanMasker.Mask("TR330006100519786457841326");
// Çıktı: TR********************1326
// Özel Ayarlar
var options = new MaskingOptions { VisibleStart = 0, VisibleEnd = 4, MaskChar = 'X' };
string customMask = TcKimlikNoMasker.Mask("12345678901", options);
// Çıktı: XXXXXXX8901
Testlerinizde kullanmak üzere geçerli rastgele veriler üretin:
using TurkishValidators.TestData.Services;
var provider = new TurkishDataProvider();
string randomTc = provider.GenerateTcKimlikNo();
string randomIban = provider.GenerateTurkishIban();
string istPlate = provider.GenerateVehiclePlate("İstanbul"); // 34 ... ...
// Toplu Veri Üretimi
var bulkData = provider.GenerateBulk(100);
// Toplu Veri Üretimi var bulkData = provider.GenerateBulk(100);
### 6. Kredi Kartı & BIN Sorgulama (Yeni!)
Luhn algoritması kontrolü ve banka BIN analizi (Troy, Visa, Mastercard tespiti):
```csharp
using TurkishValidators.Validators;
using TurkishValidators.Enums;
bool isValid = CreditCardValidator.IsValid("4543600000000003");
var result = CreditCardValidator.GetBinInfo("4543600000000003");
if (result.IsValid)
{
Console.WriteLine($"Bank: {result.BankName}"); // Türkiye İş Bankası
Console.WriteLine($"Type: {result.CardType}"); // Visa
}
JSON çıktısında veriyi otomatik maskelemek için:
TurkishValidators.Json paketini yükleyin.using System.Text.Json;
using System.Text.Json.Serialization;
using TurkishValidators.Json.Converters;
public class UserDto
{
[JsonConverter(typeof(TcknMaskingConverter))]
public string Tckn { get; set; } = "12345678901";
}
// Çıktı: {"Tckn": "123******01"}
Hızlıca mock data üretmek için statik erişim:
using TurkishValidators.TestData;
string tckn = TurkishFaker.GenerateTCKN();
string iban = TurkishFaker.GenerateIBAN();
string mobil = TurkishFaker.GenerateGSM();
Uygulama genelinde hata mesajı dilini veya formatını değiştirebilirsiniz:
using TurkishValidators.Config;
// Uygulama başlangıcında (Program.cs / Startup.cs)
TurkishValidatorConfig.Culture = new System.Globalization.CultureInfo("en-US");
// Artık hata mesajları İngilizce dönecektir.
Varsayılan Türkçe ve İngilizce mesajların yanı sıra, yeni diller ekleyebilir veya mevcut mesajları ezebilirsiniz:
using TurkishValidators.Config;
using TurkishValidators.Resources;
// Almanca için özel mesaj seti tanımlama
var germanMessages = new ValidationMessages
{
TcKimlikNoEmpty = "Die TC-Identitätsnummer darf nicht leer sein.",
TcKimlikNoLength = "Die TC-Identitätsnummer muss 11 Ziffern lang sein.",
// Diğer mesajlar...
};
// "de-DE" kültürü için kaydet
TurkishValidatorConfig.RegisterMessages("de-DE", germanMessages);
// Veya mevcut Türkçe mesajı değiştirme
var customTr = ValidationMessages.CreateDefault();
customTr.TcKimlikNoEmpty = "Lütfen TCKN alanını boş bırakmayınız!";
TurkishValidatorConfig.RegisterMessages("tr-TR", customTr);
Proje .NET Standard 2.0 hedeflemektedir, bu sayede aşağıdaki platformların tamamında sorunsuz çalışır:
src/TurkishValidators: Çekirdek kütüphane.src/TurkishValidators.AspNetCore: ASP.NET Core attribute'ları.src/TurkishValidators.FluentValidation: FluentValidation eklentileri.src/TurkishValidators.TestData: Test verisi üretim kütüphanesi.PR'lar kabul edilir! Lütfen önce bir issue açarak değişikliği tartışın.
Bu proje MIT lisansı ile lisanslanmıştır.