Piszę sobie funkcyjnie w C# używając Language-ext https://github.com/louthy/language-ext
jakiekolwiek arty lub ksiazki bylby mile widziane, nie moglem znalezc za duzo informacji na temat tej bibloteki (oprocz githuba czy dokumentacji ktora pobieznie przeczytalem)
Moj brak wiedzy uniemozliwia mi rozwiazania prostych przypadkow. Moze ktos bedzie w stanie mi wytlumaczyc tak bym nie mial z podstawami problemow :)
public static async Task<Either<Error, T>> ToResponse<T>(this HttpResponseMessage message)
{
var content = await message.Content.ReadAsStringAsync();
if (string.IsNullOrEmpty(content))
{
return Error.ServiceUnavailable("Error while handling HttpResponseMessageExt ToResponse");
}
return message.StatusCode.IsError() switch
{
true => DeserializeError(content) ?? Error.ServiceUnavailable("Error while handling HttpResponseMessageExt ToResponse DeserializeError"),
false => DeserializeValue<T>(content) ?? throw new InvalidOperationException("Error while handling HttpResponseMessageExt ToResponse DeserializeValue")
};
}
chcialbym ten fragment
var content = await message.Content.ReadAsStringAsync();
if (string.IsNullOrEmpty(content))
{
return Error.ServiceUnavailable("Error while handling HttpResponseMessageExt ToResponse");
}
napisac takze funkcyjnie, Probowalem zmieninac na Option<T>
czy Match
jednak mam problem z tym by z tego chain
a byl zwrocony T a nie string