view SilverlightAsyncRestWcf/SilverlightAsyncRestWcf.Services/CarService.cs @ 117:9eadccc3b46c

REST working, next step unit tests
author stevenh7776
date Sun, 27 May 2012 15:06:35 +0100
parents
children fa4ba8943048
line wrap: on
line source

using System;
using System.Diagnostics.Contracts;
using System.IO;
using System.Runtime.Serialization.Json;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using SilverlightAsyncRestWcf.Common;

namespace SilverlightAsyncRestWcf.Services
{
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class CarService : IService<Car>
    {
        private readonly IRepository<Car> _repo;
        private readonly DataContractJsonSerializer _serializer;

        public CarService()
        {
            _repo = new FakeCarRepository();
            _serializer = new DataContractJsonSerializer(typeof(Car));
        }

        public CarService(IRepository<Car> repo)
        {
            _repo = repo;
        }

        [WebGet(UriTemplate = "Car/{id}")]
        public string Get(string id)
        {
            Contract.Requires((bool)(id != null), "id != null");
            return _repo.GetById(id).ToJSON();
        }

        [WebInvoke(UriTemplate = "Car", Method = "POST")]
        public void Insert(Car car)
        {
            Contract.Requires((bool)(car != null), "car != null");
            _repo.Insert(car);
        }

        [WebInvoke(UriTemplate = "Car/{id}", Method = "PUT")]
        public void Update(string id, Car car)
        {
            Contract.Requires((bool)(car != null), "car != null");
            _repo.Update(car);
        }
     
        [WebInvoke(UriTemplate = "Car({id})", Method = "DELETE")]
        public void Delete(string id)
        {
            Contract.Requires((bool)(id != null), "id != null");
            _repo.Delete(id);
        }
    }
}