Skip to content

Instantly share code, notes, and snippets.

View vbilopav's full-sized avatar
🏠
Working from home

Vedran Bilopavlović vbilopav

🏠
Working from home
View GitHub Profile
// see more at: https://github.com/JeremySkinner/FluentValidation
using FluentValidation;
public class CustomerValidator: AbstractValidator<Customer> {
public CustomerValidator() {
RuleFor(customer => customer.Surname).NotEmpty();
RuleFor(customer => customer.Forename).NotEmpty().WithMessage("Please specify a first name");
RuleFor(customer => customer.Discount).NotEqual(0).When(customer => customer.HasDiscount);
RuleFor(customer => customer.Address).Length(20, 250);
RuleFor(customer => customer.Postcode).Must(BeAValidPostcode).WithMessage("Please specify a valid postcode");
public class MyServiceSample : IMyServiceSample
{
private readonly IMyRequestResponseFactory _factory;
public MyServiceSample(IMyRequestResponseFactory factory) //dependency injection via constructor
{
_factory = factory;
}
public MyServiceSample() // WCF poziva default konstruktor, i koristimo default implementaciju
public class MyRequestResponseFactory : IMyRequestResponseFactory
{
public TResponse ProcessRequest<TResponse>(Request request, Func<TResponse> handler)
where TResponse : Response, new()
{
try
{
// Validacija request poruke (ovisno o tipu)
// Autentifikacija korisnika - podaci iz request poruke
// Autorizacija korisnika - podaci iz request poruke
public interface IMyRequestResponseFactory
{
TResponse ProcessRequest<TResponse>(Request request, Func<TResponse> handler)
where TResponse : Response, new();
}
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class WcfErrorHandler : IErrorHandler
{
public bool HandleError(Exception error)
{
return false;
}
public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
{
if (error == null)
public void LogRequest()
{
if (OperationContext.Current == null) return;
string msg = String.Empty;
if (Properties.ContainsKey(RemoteEndpointMessageProperty.Name))
{
RemoteEndpointMessageProperty remote =
Properties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
if (remote != null)
@vbilopav
vbilopav / s-6_2.cs
Last active September 1, 2015 13:28
[WcfErrorHandler] // custom atribut koji imeplementira IErrorHandler, logiranje sistemskih WCF grešaka
public abstract class WcfBaseService
{
protected WcfBaseService()
{
if (OperationContext.Current == null) return; // ako WCF ne postoji, izađi odmah
WcfUtils.LogRequest();
}
}
public class MyServiceSample : WcfBaseService, IMyServiceSample
{
public DoSomeWorkResponse DoSomeWork(SomeWorkRequest request)
{
return new DoSomeWorkResponse();
}
public DoSomeOtherWorkResponse DoSomeOtherWork(SomeOtherWorkRequest request)
{
return new DoSomeOtherWorkResponse();
[DataContract]
public class Response
{
[DataMember]
public List<ResponseError> Errors { get; set; }
[DataMember]
public List<string> Warnings { get; set; }
[DataMember]