mirror of
https://github.com/SoPat712/allstarr.git
synced 2026-02-09 23:55:10 -05:00
feat: update RelayToSubsonic method to return byte array and adjust content handling
This commit is contained in:
@@ -62,13 +62,13 @@ public class SubsonicController : ControllerBase
|
|||||||
return parameters;
|
return parameters;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<(string Body, string? ContentType)> RelayToSubsonic(string endpoint, Dictionary<string, string> parameters)
|
private async Task<(object Body, string? ContentType)> RelayToSubsonic(string endpoint, Dictionary<string, string> parameters)
|
||||||
{
|
{
|
||||||
var query = string.Join("&", parameters.Select(kv => $"{Uri.EscapeDataString(kv.Key)}={Uri.EscapeDataString(kv.Value)}"));
|
var query = string.Join("&", parameters.Select(kv => $"{Uri.EscapeDataString(kv.Key)}={Uri.EscapeDataString(kv.Value)}"));
|
||||||
var url = $"{_subsonicSettings.Url}/{endpoint}?{query}";
|
var url = $"{_subsonicSettings.Url}/{endpoint}?{query}";
|
||||||
HttpResponseMessage response = await _httpClient.GetAsync(url);
|
HttpResponseMessage response = await _httpClient.GetAsync(url);
|
||||||
response.EnsureSuccessStatusCode();
|
response.EnsureSuccessStatusCode();
|
||||||
var body = await response.Content.ReadAsStringAsync();
|
var body = await response.Content.ReadAsByteArrayAsync();
|
||||||
var contentType = response.Content.Headers.ContentType?.ToString();
|
var contentType = response.Content.Headers.ContentType?.ToString();
|
||||||
return (body, contentType);
|
return (body, contentType);
|
||||||
}
|
}
|
||||||
@@ -79,7 +79,7 @@ public class SubsonicController : ControllerBase
|
|||||||
{
|
{
|
||||||
var parameters = await ExtractAllParameters();
|
var parameters = await ExtractAllParameters();
|
||||||
var xml = await RelayToSubsonic("ping", parameters);
|
var xml = await RelayToSubsonic("ping", parameters);
|
||||||
var doc = XDocument.Parse(xml.Body);
|
var doc = XDocument.Parse((string)xml.Body);
|
||||||
var status = doc.Root?.Attribute("status")?.Value;
|
var status = doc.Root?.Attribute("status")?.Value;
|
||||||
return Ok(new { status });
|
return Ok(new { status });
|
||||||
}
|
}
|
||||||
@@ -94,7 +94,7 @@ public class SubsonicController : ControllerBase
|
|||||||
{
|
{
|
||||||
var result = await RelayToSubsonic(endpoint, parameters);
|
var result = await RelayToSubsonic(endpoint, parameters);
|
||||||
var contentType = result.ContentType ?? $"application/{parameters.GetValueOrDefault("f", "xml")}";
|
var contentType = result.ContentType ?? $"application/{parameters.GetValueOrDefault("f", "xml")}";
|
||||||
return Content(result.Body, contentType);
|
return File((byte[])result.Body, contentType);
|
||||||
}
|
}
|
||||||
catch (HttpRequestException ex)
|
catch (HttpRequestException ex)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user