distributed-computing/tasks/voronkova-es/lab_3/worker-2/Program.cs

80 lines
1.8 KiB
C#
Raw Permalink Normal View History

using Microsoft.OpenApi.Models;
var builder = WebApplication.CreateBuilder(args);
// Add Swagger services
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
});
var app = builder.Build();
// Configure the HTTP request pipeline.
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});
List<Medicine> medicines = new List<Medicine>();
app.MapGet("/medicines", () => medicines);
app.MapGet("/medicine/{id}", (Guid id) =>
{
var medicine = medicines.FirstOrDefault(m => m.Id == id);
return medicine is null ? Results.NotFound() : Results.Ok(medicine);
});
app.MapPost("/medicine", (Medicine medicine) =>
{
medicines.Add(medicine);
return Results.Created($"/medicine/{medicine.Id}", medicine);
});
app.MapPut("/medicine/{id}", (Guid id, Medicine inputMedicine) =>
{
var medicine = medicines.FirstOrDefault(m => m.Id == id);
if (medicine is null) return Results.NotFound();
medicine.Name = inputMedicine.Name;
medicine.Dose = inputMedicine.Dose;
medicine.ExpirationDate = inputMedicine.ExpirationDate;
return Results.NoContent();
});
app.MapDelete("/medicine/{id}", (Guid id) =>
{
var medicine = medicines.FirstOrDefault(m => m.Id == id);
if (medicine is null) return Results.NotFound();
medicines.Remove(medicine);
return Results.Ok(medicine);
});
app.MapGet("/Requests/", async () =>
{
var httpClient = new HttpClient();
var secondWorkerResponse = await httpClient.GetStringAsync("http://worker-1:8085/");
return secondWorkerResponse;
});
app.Run();
public class Medicine
{
public Guid Id { get; set; }
public string Name { get; set; }
public int Dose { get; set; }
public DateTime ExpirationDate { get; set; }
}