Пример #1
0
        public HttpResult Post(CreateCrawler request)
        {
            var crawler = new Crawler().PopulateWith(request.SanitizeDtoHtml());

            // Check for existing UserName
            if (Get(new FetchCrawlers { UserName = request.UserName }).Crawlers.Any())
                throw new HttpError(HttpStatusCode.Conflict,
                    new ArgumentException("UserName {0} already exists. ".Fmt(request.UserName)));

            // Check if division is open for joining
            var divisionResp = ResolveService<DivisionService>().Get(new FetchDivision { Id = request.DivisionId });

            if (!divisionResp.Division.Joinable)
                throw new HttpError(HttpStatusCode.BadRequest,
                    new ArgumentException("Division {0} is not joinable. ".Fmt(request.UserName)));

            // Validate .rc file for the server
            var serverResp = ResolveService<ServerService>().Get(new FetchServer { Id = request.ServerId });

            if (!_validator.ValidateRcInit(new Uri(serverResp.Server.PlayerRcUrl(request.UserName))))
                throw new HttpError(HttpStatusCode.Forbidden,
                    new ArgumentException("UserName {0} does not have a valid .rc file. ".Fmt(request.UserName)));

            var newId = Db.Insert(crawler, selectIdentity: true);

            return new HttpResult(new CrawlerResponse {Crawler = Get(new FetchCrawler {Id = (int) newId}).Crawler})
            {
                StatusCode = HttpStatusCode.Created,
                Headers =
                {
                    {HttpHeaders.Location, Request.AbsoluteUri.CombineWith(newId)}
                }
            };
        }
Пример #2
0
        public HttpResult Put(UpdateCrawler request)
        {
            var crawler = new Crawler().PopulateWith(request.SanitizeDtoHtml());

            int result = Db.UpdateNonDefaults(crawler, c => c.Id == crawler.Id);

            if (result == 0)
                throw new HttpError(HttpStatusCode.NotFound, new ArgumentException("Crawler {0} does not exist. ".Fmt(request.Id)));

            return new HttpResult { StatusCode = HttpStatusCode.NoContent };
        }