refactor: toggle between 'http' and 'https' on exchange rate API
This commit is contained in:
@@ -3,22 +3,36 @@
|
|||||||
|
|
||||||
frappe.ui.form.on("Currency Exchange Settings", {
|
frappe.ui.form.on("Currency Exchange Settings", {
|
||||||
service_provider: function (frm) {
|
service_provider: function (frm) {
|
||||||
if (frm.doc.service_provider == "exchangerate.host") {
|
frm.call({
|
||||||
let result = ["result"];
|
method: "erpnext.accounts.doctype.currency_exchange_settings.currency_exchange_settings.get_api_endpoint",
|
||||||
let params = {
|
args: {
|
||||||
date: "{transaction_date}",
|
service_provider: frm.doc.service_provider,
|
||||||
from: "{from_currency}",
|
use_http: frm.doc.use_http,
|
||||||
to: "{to_currency}",
|
},
|
||||||
};
|
callback: function (r) {
|
||||||
add_param(frm, "https://api.exchangerate.host/convert", params, result);
|
if (r && r.message) {
|
||||||
} else if (frm.doc.service_provider == "frankfurter.app") {
|
if (frm.doc.service_provider == "exchangerate.host") {
|
||||||
let result = ["rates", "{to_currency}"];
|
let result = ["result"];
|
||||||
let params = {
|
let params = {
|
||||||
base: "{from_currency}",
|
date: "{transaction_date}",
|
||||||
symbols: "{to_currency}",
|
from: "{from_currency}",
|
||||||
};
|
to: "{to_currency}",
|
||||||
add_param(frm, "https://frankfurter.app/{transaction_date}", params, result);
|
};
|
||||||
}
|
add_param(frm, r.message, params, result);
|
||||||
|
} else if (frm.doc.service_provider == "frankfurter.app") {
|
||||||
|
let result = ["rates", "{to_currency}"];
|
||||||
|
let params = {
|
||||||
|
base: "{from_currency}",
|
||||||
|
symbols: "{to_currency}",
|
||||||
|
};
|
||||||
|
add_param(frm, r.message, params, result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
use_http: function (frm) {
|
||||||
|
frm.trigger("service_provider");
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
"disabled",
|
"disabled",
|
||||||
"service_provider",
|
"service_provider",
|
||||||
"api_endpoint",
|
"api_endpoint",
|
||||||
|
"use_http",
|
||||||
"access_key",
|
"access_key",
|
||||||
"url",
|
"url",
|
||||||
"column_break_3",
|
"column_break_3",
|
||||||
@@ -91,12 +92,19 @@
|
|||||||
"fieldname": "access_key",
|
"fieldname": "access_key",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"label": "Access Key"
|
"label": "Access Key"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "0",
|
||||||
|
"depends_on": "eval: doc.service_provider != \"Custom\"",
|
||||||
|
"fieldname": "use_http",
|
||||||
|
"fieldtype": "Check",
|
||||||
|
"label": "Use HTTP Protocol"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
"issingle": 1,
|
"issingle": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2023-10-04 15:30:25.333860",
|
"modified": "2024-03-18 08:32:26.895076",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Accounts",
|
"module": "Accounts",
|
||||||
"name": "Currency Exchange Settings",
|
"name": "Currency Exchange Settings",
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ class CurrencyExchangeSettings(Document):
|
|||||||
result_key: DF.Table[CurrencyExchangeSettingsResult]
|
result_key: DF.Table[CurrencyExchangeSettingsResult]
|
||||||
service_provider: DF.Literal["frankfurter.app", "exchangerate.host", "Custom"]
|
service_provider: DF.Literal["frankfurter.app", "exchangerate.host", "Custom"]
|
||||||
url: DF.Data | None
|
url: DF.Data | None
|
||||||
|
use_http: DF.Check
|
||||||
# end: auto-generated types
|
# end: auto-generated types
|
||||||
|
|
||||||
def validate(self):
|
def validate(self):
|
||||||
@@ -53,7 +54,7 @@ class CurrencyExchangeSettings(Document):
|
|||||||
self.set("result_key", [])
|
self.set("result_key", [])
|
||||||
self.set("req_params", [])
|
self.set("req_params", [])
|
||||||
|
|
||||||
self.api_endpoint = "https://api.exchangerate.host/convert"
|
self.api_endpoint = get_api_endpoint(self.service_provider, self.use_http)
|
||||||
self.append("result_key", {"key": "result"})
|
self.append("result_key", {"key": "result"})
|
||||||
self.append("req_params", {"key": "access_key", "value": self.access_key})
|
self.append("req_params", {"key": "access_key", "value": self.access_key})
|
||||||
self.append("req_params", {"key": "amount", "value": "1"})
|
self.append("req_params", {"key": "amount", "value": "1"})
|
||||||
@@ -64,7 +65,7 @@ class CurrencyExchangeSettings(Document):
|
|||||||
self.set("result_key", [])
|
self.set("result_key", [])
|
||||||
self.set("req_params", [])
|
self.set("req_params", [])
|
||||||
|
|
||||||
self.api_endpoint = "https://frankfurter.app/{transaction_date}"
|
self.api_endpoint = get_api_endpoint(self.service_provider, self.use_http)
|
||||||
self.append("result_key", {"key": "rates"})
|
self.append("result_key", {"key": "rates"})
|
||||||
self.append("result_key", {"key": "{to_currency}"})
|
self.append("result_key", {"key": "{to_currency}"})
|
||||||
self.append("req_params", {"key": "base", "value": "{from_currency}"})
|
self.append("req_params", {"key": "base", "value": "{from_currency}"})
|
||||||
@@ -103,3 +104,19 @@ class CurrencyExchangeSettings(Document):
|
|||||||
frappe.throw(_("Returned exchange rate is neither integer not float."))
|
frappe.throw(_("Returned exchange rate is neither integer not float."))
|
||||||
|
|
||||||
self.url = response.url
|
self.url = response.url
|
||||||
|
|
||||||
|
|
||||||
|
@frappe.whitelist()
|
||||||
|
def get_api_endpoint(service_provider: str = None, use_http: bool = False):
|
||||||
|
if service_provider and service_provider in ["exchangerate.host", "frankfurter.app"]:
|
||||||
|
if service_provider == "exchangerate.host":
|
||||||
|
api = "api.exchangerate.host/convert"
|
||||||
|
elif service_provider == "frankfurter.app":
|
||||||
|
api = "frankfurter.app/{transaction_date}"
|
||||||
|
|
||||||
|
protocol = "https://"
|
||||||
|
if use_http:
|
||||||
|
protocol = "http://"
|
||||||
|
|
||||||
|
return protocol + api
|
||||||
|
return None
|
||||||
|
|||||||
Reference in New Issue
Block a user