Esempio n. 1
0
        /// <summary>
        /// Updates the named Cadence domain.
        /// </summary>
        /// <param name="name">Identifies the target domain.</param>
        /// <param name="request">The updated domain information.</param>
        /// <returns>The tracking <see cref="Task"/>.</returns>
        public async Task UpdateDomainAsync(string name, UpdateDomainRequest request)
        {
            await SyncContext.Clear;

            Covenant.Requires <ArgumentNullException>(!string.IsNullOrEmpty(name), nameof(name));
            Covenant.Requires <ArgumentNullException>(request != null, nameof(request));
            Covenant.Requires <ArgumentNullException>(request.Options != null, nameof(request));
            Covenant.Requires <ArgumentNullException>(request.DomainInfo != null, nameof(request));
            EnsureNotDisposed();

            var domainUpdateRequest
                = new DomainUpdateRequest()
                {
                Name = name,
                UpdatedInfoDescription     = request.DomainInfo.Description,
                UpdatedInfoOwnerEmail      = request.DomainInfo.OwnerEmail,
                ConfigurationEmitMetrics   = request.Options.EmitMetrics,
                ConfigurationRetentionDays = request.Options.RetentionDays,
                SecurityToken = Settings.SecurityToken
                };

            var reply = await CallProxyAsync(domainUpdateRequest);

            reply.ThrowOnError();
        }
Esempio n. 2
0
        /// <summary>
        /// 修改域名
        /// </summary>
        public async Task UpdateAsync(DomainUpdateRequest request)
        {
            var entity = await DomainRepository.FindAsync(request.DomainId);

            request.MapTo(entity);
            await DomainRepository.UpdateAsync(entity);

            await UnitOfWork.CommitAsync();
        }
Esempio n. 3
0
        public async Task <IActionResult> UpdateAsync(string id, [FromBody] DomainUpdateRequest request)
        {
            if (request == null)
            {
                return(Fail(WebResource.UpdateRequestIsEmpty));
            }
            if (id.IsEmpty() && request.DomainId.IsEmpty())
            {
                return(Fail(WebResource.IdIsEmpty));
            }
            if (request.DomainId.IsEmpty())
            {
                request.DomainId = id.ToGuid();
            }
            await DomainService.UpdateAsync(request);

            DomainDto byIdAsync = await DomainService.GetByIdAsync(request.DomainId);

            return(Success(byIdAsync));
        }
Esempio n. 4
0
        /// <summary>
        /// Put the specified request.
        /// </summary>
        /// <param name="request">Request.</param>
        public object Put(DomainUpdateRequest request)
        {
            var       context = TepWebContext.GetWebContext(PagePrivileges.AdminOnly);
            WebDomain result;

            try {
                context.Open();
                context.LogInfo(this, string.Format("/domain PUT Id='{0}'", request.Id));
                Domain domain = (request.Id == 0 ? null : Domain.FromId(context, request.Id));
                domain = request.ToEntity(context, domain);
                domain.Store();
                context.LogDebug(this, string.Format("Domain {0} updated by user {1}", domain.Identifier, User.FromId(context, context.UserId).Username));
                result = new WebDomain(domain);
                context.Close();
            } catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }
            return(result);
        }
Esempio n. 5
0
        /// <summary>
        /// Handles emulated <see cref="DomainUpdateRequest"/> messages.
        /// </summary>
        /// <param name="request">The received message.</param>
        /// <returns>The tracking <see cref="Task"/>.</returns>
        private async Task OnEmulatedDomainUpdateRequestAsync(DomainUpdateRequest request)
        {
            var reply = new DomainUpdateReply();

            if (string.IsNullOrEmpty(request.Name))
            {
                reply.Error = new CadenceBadRequestException("Domain name is required.").ToCadenceError();

                await EmulatedLibraryClient.SendReplyAsync(request, reply);

                return;
            }

            EmulatedCadenceDomain domain;

            using (await emulationMutex.AcquireAsync())
            {
                if (!emulatedDomains.TryGetValue(request.Name, out domain))
                {
                    domain = null;
                }
            }

            if (domain == null)
            {
                reply.Error = new CadenceEntityNotExistsException($"Domain [name={request.Name}] does not exist.").ToCadenceError();

                await EmulatedLibraryClient.SendReplyAsync(request, reply);

                return;
            }

            domain.Description   = request.UpdatedInfoDescription;
            domain.OwnerEmail    = request.UpdatedInfoOwnerEmail;
            domain.EmitMetrics   = request.ConfigurationEmitMetrics;
            domain.RetentionDays = request.ConfigurationRetentionDays;

            await EmulatedLibraryClient.SendReplyAsync(request, reply);
        }