public async Task SetWatchExpiration(WatchExpiration watchExpiration)
        {
            WatchExpiration         watchExpirationTemp = null;
            IList <WatchExpiration> watchExpirationList = await this.GetWatchExpiration();

            if (watchExpirationList != null)
            {
                // Check for and remove previous record.
                watchExpirationTemp = watchExpirationList.FirstOrDefault(e => e.FolderId.Equals(watchExpiration.FolderId));
                if (watchExpirationTemp != null)
                {
                    watchExpirationList.Remove(watchExpirationTemp);
                }
            }
            else
            {
                watchExpirationList = new List <WatchExpiration>();
            }

            watchExpirationList.Add(watchExpiration);

            var jsonSerializedExpiration = JsonConvert.SerializeObject(watchExpirationList);

            var request = new HttpRequestMessage
            {
                Method     = HttpMethod.Put,
                RequestUri = new Uri($"http://infra.io.vtex.com/vbase/v2/{this._httpContextAccessor.HttpContext.Request.Headers[DriveImportConstants.VTEX_ACCOUNT_HEADER_NAME]}/{this._environmentVariableProvider.Workspace}/buckets/{this._applicationName}/{DriveImportConstants.BUCKET}/files/{DriveImportConstants.WATCH_EXPIRATION}"),
                Content    = new StringContent(jsonSerializedExpiration, Encoding.UTF8, DriveImportConstants.APPLICATION_JSON)
            };

            string authToken = this._httpContextAccessor.HttpContext.Request.Headers[DriveImportConstants.HEADER_VTEX_CREDENTIAL];

            if (authToken != null)
            {
                request.Headers.Add(DriveImportConstants.AUTHORIZATION_HEADER_NAME, authToken);
                request.Headers.Add(DriveImportConstants.VTEX_ID_HEADER_NAME, authToken);
            }

            var client   = _clientFactory.CreateClient();
            var response = await client.SendAsync(request);

            string responseContent = await response.Content.ReadAsStringAsync();

            _context.Vtex.Logger.Info("SetWatchExpiration", null, $"[{response.StatusCode}] {responseContent}");

            response.EnsureSuccessStatusCode();
        }
        public async Task <WatchExpiration> GetWatchExpiration(string folderId)
        {
            WatchExpiration         watchExpiration     = null;
            IList <WatchExpiration> watchExpirationList = await this.GetWatchExpiration();

            if (watchExpirationList != null)
            {
                watchExpiration = watchExpirationList.FirstOrDefault(e => e.FolderId.Equals(folderId));
            }

            if (watchExpiration == null)
            {
                watchExpiration = new WatchExpiration {
                    ExpiresAt = DateTime.Now, FolderId = folderId
                };
            }

            return(watchExpiration);
        }