コード例 #1
0
        public async Task <ActionResult> CreateOrUpdateAsync(string name, [FromBody] TelemetryDataConnector connector)
        {
            AADAuthHelper.VerifyUserAccess(this.HttpContext, _logger, true);

            if (connector == null)
            {
                throw new LunaBadRequestUserException(LoggingUtils.ComposePayloadNotProvidedErrorMessage(nameof(connector)), UserErrorCode.PayloadNotProvided);
            }

            if (!name.Equals(connector.Name))
            {
                throw new LunaBadRequestUserException(LoggingUtils.ComposeNameMismatchErrorMessage(nameof(name)), UserErrorCode.NameMismatch);
            }

            if (await _telemetryDataConnectorService.ExistsAsync(name))
            {
                await _telemetryDataConnectorService.UpdateAsync(name, connector);

                return(Ok(connector));
            }
            else
            {
                await _telemetryDataConnectorService.CreateAsync(name, connector);

                return(CreatedAtRoute(nameof(GetAsync) + nameof(TelemetryDataConnector), new { name }, connector));
            }
        }
コード例 #2
0
        /// <summary>
        /// Updates a TelemetryDataConnector.
        /// </summary>
        /// <param name="name">The name of the TelemetryDataConnector.</param>
        /// <param name="connector">The updated TelemetryDataConnector.</param>
        /// <returns>The updated TelemetryDataConnector.</returns>
        public async Task <TelemetryDataConnector> UpdateAsync(string name, TelemetryDataConnector connector)
        {
            if (connector is null)
            {
                throw new LunaBadRequestUserException(LoggingUtils.ComposePayloadNotProvidedErrorMessage(typeof(TelemetryDataConnector).Name),
                                                      UserErrorCode.PayloadNotProvided);
            }
            _logger.LogInformation(LoggingUtils.ComposeUpdateResourceMessage(typeof(TelemetryDataConnector).Name,
                                                                             name, payload: JsonSerializer.Serialize(connector)));

            if (!await ExistsAsync(name))
            {
                throw new LunaConflictUserException(LoggingUtils.ComposeNotFoundErrorMessage(typeof(TelemetryDataConnector).Name,
                                                                                             name));
            }

            // Get the customMeter that matches the meterName provided
            var connectorDb = await GetAsync(name);

            // Copy over the changes
            connectorDb.Copy(connector);

            // Update connector values and save changes in db
            _context.TelemetryDataConnectors.Update(connectorDb);
            await _context._SaveChangesAsync();

            _logger.LogInformation(LoggingUtils.ComposeResourceUpdatedMessage(typeof(TelemetryDataConnector).Name, name));

            return(connector);
        }
コード例 #3
0
        /// <summary>
        /// Creates a TelemetryDataConnector.
        /// </summary>
        /// <param name="offerName">The name of the TelemetryDataConnector.</param>
        /// <param name="connector">The TelemetryDataConnector to create.</param>
        /// <returns>The created TelemetryDataConnector.</returns>
        public async Task <TelemetryDataConnector> CreateAsync(string name, TelemetryDataConnector connector)
        {
            if (connector is null)
            {
                throw new LunaBadRequestUserException(LoggingUtils.ComposePayloadNotProvidedErrorMessage(typeof(TelemetryDataConnector).Name),
                                                      UserErrorCode.PayloadNotProvided);
            }
            _logger.LogInformation(LoggingUtils.ComposeCreateResourceMessage(typeof(TelemetryDataConnector).Name, name, payload: JsonSerializer.Serialize(connector)));

            // Check that an TelemetryDataConnector with the same name does not already exist
            if (await ExistsAsync(name))
            {
                throw new LunaConflictUserException(LoggingUtils.ComposeAlreadyExistsErrorMessage(typeof(TelemetryDataConnector).Name,
                                                                                                  name));
            }

            _context.TelemetryDataConnectors.Add(connector);
            await _context._SaveChangesAsync();

            _logger.LogInformation(LoggingUtils.ComposeResourceCreatedMessage(typeof(TelemetryDataConnector).Name, name));

            return(connector);
        }