Elastiflix/dotnet-login-otel-manual/Controllers/LoginController.cs (55 lines of code) (raw):
using System;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using Serilog;
using System.Diagnostics;
using OpenTelemetry;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;
using OpenTelemetry.Exporter;
using OpenTelemetry;
using OpenTelemetry.Exporter;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;
namespace login.Controllers
{
[ApiController]
[Route("[controller]")]
public class LoginController : ControllerBase
{
private static readonly List<string> UserNames = new List<string>
{
"Alice",
"Bob",
"Charlie",
"Dave",
"Eva"
};
// Responds to GET requests.
[HttpGet]
public ActionResult Get()
{
using (Activity activity = Telemetry.LoginActivitySource.StartActivity("SomeWork"))
{
var user = GenerateRandomUserResponse();
Log.Information("User logged in: {UserName}", user);
return user;
}
}
// Responds to POST requests.
[HttpPost]
public ActionResult Post([FromBody] dynamic body)
{
using (Activity activity = Telemetry.LoginActivitySource.StartActivity("SomeWork"))
{
var user = GenerateRandomUserResponse();
Log.Information("User logged in: {UserName}", user);
return user;
}
}
private ActionResult GenerateRandomUserResponse()
{
var random = new Random();
var index = random.Next(UserNames.Count);
return Ok(new { userName = UserNames[index] });
}
}
}