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)); }
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); }