Report shopify errors to the UI (Fix #3853)

This commit is contained in:
nicolas.dorier 2022-06-15 14:12:47 +09:00
parent f0e013e1f8
commit 0da97c5da3
No known key found for this signature in database
GPG Key ID: 6618763EF09186FE
2 changed files with 13 additions and 8 deletions

View File

@ -48,9 +48,15 @@ namespace BTCPayServer.Plugins.Shopify
using var resp = await _httpClient.SendAsync(req);
var strResp = await resp.Content.ReadAsStringAsync();
if (strResp?.StartsWith("{\"errors\":\"[API] Invalid API key or access token", StringComparison.OrdinalIgnoreCase) == true)
throw new ShopifyApiException("Invalid API key or access token");
if (strResp.StartsWith("{", StringComparison.OrdinalIgnoreCase))
{
if (JObject.Parse(strResp)["errors"]?.Value<string>() is string error)
{
if (error == "Not Found")
error = "Shop not found";
throw new ShopifyApiException(error);
}
}
return strResp;
}
@ -73,7 +79,8 @@ namespace BTCPayServer.Plugins.Shopify
public async Task<string[]> CheckScopes()
{
var req = CreateRequest(_credentials.ShopName, HttpMethod.Get, null, "admin/oauth/access_scopes.json");
return JObject.Parse(await SendRequest(req))["access_scopes"].Values<JToken>()
var c = JObject.Parse(await SendRequest(req));
return c["access_scopes"].Values<JToken>()
.Select(token => token["handle"].Value<string>()).ToArray();
}

View File

@ -236,16 +236,14 @@ namespace BTCPayServer.Plugins.Shopify
TempData[WellKnownTempData.ErrorMessage] = "Please provide valid Shopify credentials";
return View(vm);
}
var apiClient = new ShopifyApiClient(_clientFactory, shopify.CreateShopifyApiCredentials());
try
{
await apiClient.OrdersCount();
}
catch (ShopifyApiException)
catch (ShopifyApiException err)
{
TempData[WellKnownTempData.ErrorMessage] =
"Shopify rejected provided credentials, please correct values and try again";
TempData[WellKnownTempData.ErrorMessage] = err.Message;
return View(vm);
}