Пример #1
0
        public async Task <HttpResponseMessage> Put([FromBody] TokenRenewRequest value)
        {
            Log.InfoFormat("Token renew request deviceId: {0}, IP: {1}", value.Id, Request.GetClientIpAddress());
            using (var gaTracker = _trackingService.StartGaSession(Request, value.Id))
            {
                await gaTracker.TrackPage("Device", "/api/devices");

                await gaTracker.TrackEvent("Device", "Update");
            }
            _deviceService.RenewTokent(value);
            return(Request.CreateResponse(HttpStatusCode.NoContent));
        }
Пример #2
0
        public void RenewTokent(TokenRenewRequest renewRequest)
        {
            var byId = Query <Device> .EQ(e => e.Id, renewRequest.Id);

            var byType = Query <Device> .EQ(e => e.Type, renewRequest.Type);

            var deviceLocator = Query.And(byType, byId);
            var device        = _deviceCollection.FindOne(deviceLocator);

            if (device == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }
            if (device.Token != renewRequest.OldToken)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            //Ok, everuthing looks fine, let's renew it
            var updateFields = new BsonDocument("Token", renewRequest.NewToken);
            var update       = new UpdateDocument("$set", updateFields);

            _deviceCollection.Update(deviceLocator, update);
        }