public SiteModule(ISiteService siteService): base("/sites")
        {
            if (siteService == null)
            {
                throw new ArgumentNullException(nameof(siteService));
            }

            this.siteService = siteService;

            Get["/"] = _ => siteService.GetAll();

            Get["/{id}"] = parameter => siteService.GetById(parameter.id) ?? HttpStatusCode.NotFound;

            Get["{id}/pages"] = parameter => siteService.GetPages(parameter.id) ?? HttpStatusCode.NotFound;

            Post["/"] = _ =>
            {
                var site = this.Bind<Site>();

                site = siteService.Add(site);

                return site;
            };

            Put["/{id}"] = parameter =>
            {
                var site = this.Bind<Site>();

                site.SiteId = parameter.id;

                bool isUpdated = siteService.Update(site);

                return isUpdated ? HttpStatusCode.OK : HttpStatusCode.NotFound;
            };

            Delete["/{id}"] = parameter =>
            {
                var site = new Site() {SiteId = parameter.id};

                bool isDeleted = siteService.Remove(site);

                return isDeleted ? HttpStatusCode.OK : HttpStatusCode.NotFound;
            };
        }