From 5dcd9bc52d2cf862302dfae31f2c04c5d43a866a Mon Sep 17 00:00:00 2001 From: jingrow Date: Wed, 24 Dec 2025 21:36:51 +0800 Subject: [PATCH] update /api/method/ to /api/action/ --- .../src/components/billing/BillingSummary.vue | 2 +- .../src/components/billing/PaymentDetails.vue | 2 +- .../billing/mpesa/AddPaymentGateway.vue | 2 +- .../billing/mpesa/BuyPrepaidCreditsMpesa.vue | 4 +- .../billing/mpesa/PartnerPaymentPayout.vue | 4 +- .../settings/profile/AccountProfile.vue | 2 +- dashboard/src/controllers/call.js | 2 +- dashboard/src/controllers/fileUploader.js | 2 +- dashboard/src/controllers/s3FileUploader.js | 2 +- dashboard/src/data/team.js | 4 +- dashboard/src/main.js | 2 +- dashboard/src/objects/notification.js | 2 +- dashboard/src/pages/BillingInvoices.vue | 2 +- dashboard/src/pages/BillingMpesaInvoices.vue | 2 +- .../tests-e2e/tests/dashboard/sites.test.ts | 2 +- deployment/nginx.conf | 2 +- jcloude/agent.py | 2 +- jcloude/api/account.py | 2 +- jcloude/api/analytics.py | 12 +-- jcloude/api/billing.py | 2 +- jcloude/api/developer/marketplace.py | 2 +- jcloude/api/developer/saas.py | 2 +- jcloude/api/email.py | 2 +- jcloude/api/marketplace.py | 2 +- jcloude/api/site.py | 2 +- jcloude/auth.py | 84 +++++++++---------- jcloude/commands.py | 2 +- jcloude/hooks.py | 2 +- .../incident_investigator.py | 2 +- .../account_request/account_request.py | 2 +- .../downtime_analysis/generate_metrics.py | 4 +- jcloude/jcloude/pagetype/incident/incident.py | 4 +- jcloude/jcloude/pagetype/invoice/invoice.py | 10 +-- .../jcloude_settings/jcloude_settings.py | 2 +- .../pagetype/release_group/release_group.py | 4 +- jcloude/jcloude/pagetype/site/site.py | 10 +-- jcloude/jcloude/pagetype/team/team.py | 2 +- .../team_deletion_request.py | 4 +- .../test_team_deletion_request.py | 2 +- .../marketplace_app_subscription.py | 2 +- .../certificate_link_request.py | 2 +- .../partner_approval_request.py | 2 +- .../roles/prometheus/templates/prometheus.yml | 4 +- .../roles/sentry/templates/sentry.conf.py | 6 +- jcloude/public/marketplace/js/call.js | 2 +- jcloude/public/migrate | 2 +- jcloude/public/migrate_2 | 2 +- jcloude/saas/api/readme.md | 2 +- jcloude/scripts/migrate.py | 24 +++--- jcloude/templates/marketplace/macros.html | 2 +- jcloude/utils/__init__.py | 6 +- jcloude/www/saas/billing.js | 8 +- libs/fc_cli/fc/authentication/login.py | 6 +- libs/fc_cli/fc/authentication/session.py | 2 +- libs/fc_cli/fc/commands/deploy.py | 2 +- libs/fcrestore/requests.go | 2 +- 56 files changed, 138 insertions(+), 138 deletions(-) diff --git a/dashboard/src/components/billing/BillingSummary.vue b/dashboard/src/components/billing/BillingSummary.vue index 995914d3..1c775013 100644 --- a/dashboard/src/components/billing/BillingSummary.vue +++ b/dashboard/src/components/billing/BillingSummary.vue @@ -113,7 +113,7 @@ function payUnpaidInvoices() { let invoice = _unpaidInvoices; if (invoice.stripe_invoice_url && team.pg.payment_mode === 'Card') { window.open( - `/api/method/jcloude.api.client.run_pg_method?dt=Invoice&dn=${invoice.name}&method=stripe_payment_url`, + `/api/action/jcloude.api.client.run_pg_method?dt=Invoice&dn=${invoice.name}&method=stripe_payment_url`, ); } else { showAddPrepaidCreditsDialog.value = true; diff --git a/dashboard/src/components/billing/PaymentDetails.vue b/dashboard/src/components/billing/PaymentDetails.vue index a90517e8..9e7c63e1 100644 --- a/dashboard/src/components/billing/PaymentDetails.vue +++ b/dashboard/src/components/billing/PaymentDetails.vue @@ -350,7 +350,7 @@ function payUnpaidInvoices() { let invoice = _unpaidInvoices[0]; if (invoice.stripe_invoice_url && team.pg.payment_mode === 'Card') { window.open( - `/api/method/jcloude.api.client.run_pg_method?dt=Invoice&dn=${invoice.name}&method=stripe_payment_url`, + `/api/action/jcloude.api.client.run_pg_method?dt=Invoice&dn=${invoice.name}&method=stripe_payment_url`, ); } else { showAddPrepaidCreditsDialog.value = true; diff --git a/dashboard/src/components/billing/mpesa/AddPaymentGateway.vue b/dashboard/src/components/billing/mpesa/AddPaymentGateway.vue index 2b181ccb..11aa05bb 100644 --- a/dashboard/src/components/billing/mpesa/AddPaymentGateway.vue +++ b/dashboard/src/components/billing/mpesa/AddPaymentGateway.vue @@ -14,7 +14,7 @@ v-model="paymentGatewayDetails.url" name="url" type="text" - placeholder="https://xyz.com/api/method/" + placeholder="https://xyz.com/api/action/" />
{ function getInitialData() { if (import.meta.env.DEV) { return jingrowRequest({ - url: '/api/method/jcloude.www.dashboard.get_context_for_dev', + url: '/api/action/jcloude.www.dashboard.get_context_for_dev', }).then((values) => Object.assign(window, values)); } else { return Promise.resolve(); diff --git a/dashboard/src/objects/notification.js b/dashboard/src/objects/notification.js index a7aecc11..4daf9874 100644 --- a/dashboard/src/objects/notification.js +++ b/dashboard/src/objects/notification.js @@ -66,7 +66,7 @@ export default { async onClick() { toast.promise( jingrowRequest({ - url: '/api/method/jcloude.api.notifications.mark_all_notifications_as_read', + url: '/api/action/jcloude.api.notifications.mark_all_notifications_as_read', }), { success: () => { diff --git a/dashboard/src/pages/BillingInvoices.vue b/dashboard/src/pages/BillingInvoices.vue index bea38551..cf6e8b31 100644 --- a/dashboard/src/pages/BillingInvoices.vue +++ b/dashboard/src/pages/BillingInvoices.vue @@ -191,7 +191,7 @@ export default { e.stopPropagation(); if (row.stripe_invoice_url && row.payment_mode == 'Card') { window.open( - `/api/method/jcloude.api.client.run_pg_method?dt=Invoice&dn=${row.name}&method=stripe_payment_url`, + `/api/action/jcloude.api.client.run_pg_method?dt=Invoice&dn=${row.name}&method=stripe_payment_url`, ); } else { this.showBuyPrepaidCreditsDialog = true; diff --git a/dashboard/src/pages/BillingMpesaInvoices.vue b/dashboard/src/pages/BillingMpesaInvoices.vue index 74c6cfaf..1182fa09 100644 --- a/dashboard/src/pages/BillingMpesaInvoices.vue +++ b/dashboard/src/pages/BillingMpesaInvoices.vue @@ -26,7 +26,7 @@ export default { this.loading = true; try { const response = await jingrowRequest({ - url: '/api/method/jcloude.api.regional_payments.mpesa.utils.display_invoices_by_partner', + url: '/api/action/jcloude.api.regional_payments.mpesa.utils.display_invoices_by_partner', method: 'GET', }); this.invoices = response; diff --git a/dashboard/tests-e2e/tests/dashboard/sites.test.ts b/dashboard/tests-e2e/tests/dashboard/sites.test.ts index 08caf124..b98d4702 100644 --- a/dashboard/tests-e2e/tests/dashboard/sites.test.ts +++ b/dashboard/tests-e2e/tests/dashboard/sites.test.ts @@ -2,7 +2,7 @@ import { expect, test } from './coverage.fixture'; import mockResponse from '../../mocks/sites/get_list.json' assert { type: 'json' }; test('Ensure sites are visible in the list', async ({ page }) => { - await page.route('*/**/api/method/jcloude.api.client.get_list', async route => { + await page.route('*/**/api/action/jcloude.api.client.get_list', async route => { await route.fulfill({ status: 200, contentType: 'application/json', diff --git a/deployment/nginx.conf b/deployment/nginx.conf index 4517ff8d..9e982cba 100644 --- a/deployment/nginx.conf +++ b/deployment/nginx.conf @@ -350,7 +350,7 @@ server { http2_push_preload on; } - location ~ ^/api/method/jcloude.api.developer.saas.* { + location ~ ^/api/action/jcloude.api.developer.saas.* { if ($request_method = 'OPTIONS') { add_header Access-Control-Allow-Origin "*" always; add_header Access-Control-Allow-Methods "GET, POST, OPTIONS"; diff --git a/jcloude/agent.py b/jcloude/agent.py index 153e8121..65350b3e 100644 --- a/jcloude/agent.py +++ b/jcloude/agent.py @@ -497,7 +497,7 @@ class Agent: "site_backup": { "name": site_backup.name, "snapshot_request_key": site_backup.snapshot_request_key, - "snapshot_trigger_url": f"{jcloude_public_base_url}/api/method/jcloude.api.site_backup.create_snapshot", + "snapshot_trigger_url": f"{jcloude_public_base_url}/api/action/jcloude.api.site_backup.create_snapshot", }, } return self.create_agent_job( diff --git a/jcloude/api/account.py b/jcloude/api/account.py index 0a39e3df..324fb5c7 100644 --- a/jcloude/api/account.py +++ b/jcloude/api/account.py @@ -271,7 +271,7 @@ def send_login_link(email): minutes = 10 jingrow.cache().set_value(f"one_time_login_key:{key}", email, expires_in_sec=minutes * 60) - link = get_url(f"/api/method/jcloude.api.account.login_using_key?key={key}") + link = get_url(f"/api/action/jcloude.api.account.login_using_key?key={key}") if jingrow.conf.developer_mode: print() diff --git a/jcloude/api/analytics.py b/jcloude/api/analytics.py index 07f15ddd..fa7fdaa4 100644 --- a/jcloude/api/analytics.py +++ b/jcloude/api/analytics.py @@ -307,7 +307,7 @@ class RequestGroupByChart(StackedGroupByChart): def setup_search_filters(self): super().setup_search_filters() self.search = self.search.filter("match_phrase", json__transaction_type="request").exclude( - "match_phrase", json__request__path="/api/method/ping" + "match_phrase", json__request__path="/api/action/ping" ) if ResourceType(self.resource_type) is ResourceType.SITE: self.search = self.search.filter("match_phrase", json__site=self.name) @@ -891,7 +891,7 @@ class RunDocMethodMethodNames(RequestGroupByChart): def setup_search_filters(self): super().setup_search_filters() self.group_by_field = "json.methodname" - self.search = self.search.filter("match_phrase", json__request__path="/api/method/run_pg_method") + self.search = self.search.filter("match_phrase", json__request__path="/api/action/run_pg_method") def exclude_top_k_data(self, datasets: list[Dataset]): if ResourceType(self.resource_type) is ResourceType.SITE: @@ -914,7 +914,7 @@ class QueryReportRunReports(RequestGroupByChart): super().setup_search_filters() self.group_by_field = "json.report" self.search = self.search.filter( - "match_phrase", json__request__path="/api/method/jingrow.desk.query_report.run" + "match_phrase", json__request__path="/api/action/jingrow.desk.query_report.run" ) def exclude_top_k_data(self, datasets: list[Dataset]): @@ -942,12 +942,12 @@ class CommonSlowPath(TypedDict): COMMONLY_SLOW_PATHS: list[CommonSlowPath] = [ { - "path": "/api/method/run_pg_method", + "path": "/api/action/run_pg_method", "id": "run_pg_method_methodnames", "function": get_run_pg_method_methodnames, }, { - "path": "/api/method/jingrow.desk.query_report.run", + "path": "/api/action/jingrow.desk.query_report.run", "id": "query_report_run_reports", "function": get_query_report_run_reports, }, @@ -1179,7 +1179,7 @@ def request_logs(site, timezone, date, sort=None, start=0): {"match_phrase": {"json.site": site}}, {"range": {"@timestamp": {"gt": f"{date}||-1d/d", "lte": f"{date}||/d"}}}, ], - "must_not": [{"match_phrase": {"json.request.path": "/api/method/ping"}}], + "must_not": [{"match_phrase": {"json.request.path": "/api/action/ping"}}], } }, "sort": sort_value, diff --git a/jcloude/api/billing.py b/jcloude/api/billing.py index cee8936c..9804d42e 100644 --- a/jcloude/api/billing.py +++ b/jcloude/api/billing.py @@ -863,7 +863,7 @@ def generate_stk_push(**kwargs): mpesa_setup = get_mpesa_setup_for_team(partner[0]) try: callback_url = ( - get_request_site_address(True) + "/api/method/jcloude.api.billing.verify_m_pesa_transaction" + get_request_site_address(True) + "/api/action/jcloude.api.billing.verify_m_pesa_transaction" ) env = "production" if not mpesa_setup.sandbox else "sandbox" # for sandbox, business shortcode is same as till number diff --git a/jcloude/api/developer/marketplace.py b/jcloude/api/developer/marketplace.py index ddc26d61..f7a1f572 100644 --- a/jcloude/api/developer/marketplace.py +++ b/jcloude/api/developer/marketplace.py @@ -160,7 +160,7 @@ class DeveloperApiHandler: jingrow.db.commit() return get_url( - f"/api/method/jcloude.api.marketplace.login_via_token?token={token}&team={team}&site={self.app_subscription_pg.site}" + f"/api/action/jcloude.api.marketplace.login_via_token?token={token}&team={team}&site={self.app_subscription_pg.site}" ) diff --git a/jcloude/api/developer/saas.py b/jcloude/api/developer/saas.py index 407b9091..c8eab85f 100644 --- a/jcloude/api/developer/saas.py +++ b/jcloude/api/developer/saas.py @@ -73,7 +73,7 @@ class SaasApiHandler: ).insert(ignore_permissions=True) domain = jingrow.db.get_value("Saas App", self.app_subscription_pg.app, "custom_domain") - return f"https://{domain}/api/method/jcloude.api.saas.login_via_token?token={token}&team={self.app_subscription_pg.team}" + return f"https://{domain}/api/action/jcloude.api.saas.login_via_token?token={token}&team={self.app_subscription_pg.team}" def get_trial_expiry(self): return jingrow.db.get_value("Site", self.app_subscription_pg.site, "trial_end_date") diff --git a/jcloude/api/email.py b/jcloude/api/email.py index b267ab2b..1afd0238 100644 --- a/jcloude/api/email.py +++ b/jcloude/api/email.py @@ -317,7 +317,7 @@ def event_log(): try: host_name = jingrow.db.get_value("Site", site, "host_name") or site requests.post( - f"https://{host_name}/api/method/email_delivery_service.controller.update_status", + f"https://{host_name}/api/action/email_delivery_service.controller.update_status", data=data, ) except requests.exceptions.ConnectionError: diff --git a/jcloude/api/marketplace.py b/jcloude/api/marketplace.py index 3601a988..3fb2d8b9 100644 --- a/jcloude/api/marketplace.py +++ b/jcloude/api/marketplace.py @@ -1184,7 +1184,7 @@ def get_discount_percent(plan, discount=0.0): if team.jerp_partner and jingrow.get_value("Marketplace App Plan", plan, "partner_discount"): client = get_jingrow_io_connection() response = client.session.post( - f"{client.url}/api/method/partner_relationship_management.api.get_partner_type", + f"{client.url}/api/action/partner_relationship_management.api.get_partner_type", data={"email": team.partner_email}, headers=client.headers, ) diff --git a/jcloude/api/site.py b/jcloude/api/site.py index 2cbba8f7..91035a46 100644 --- a/jcloude/api/site.py +++ b/jcloude/api/site.py @@ -1097,7 +1097,7 @@ def get(name): site_name = jingrow.db.get_value("Site Domain", name, "site") if site_name: jingrow.local.response["type"] = "redirect" - jingrow.local.response["location"] = f"/api/method/jcloude.api.site.get?name={site_name}" + jingrow.local.response["location"] = f"/api/action/jcloude.api.site.get?name={site_name}" return None raise rg_info = jingrow.db.get_value("Release Group", site.group, ["team", "version", "public"], as_dict=True) diff --git a/jcloude/auth.py b/jcloude/auth.py index 81f48cf9..36113c9d 100644 --- a/jcloude/auth.py +++ b/jcloude/auth.py @@ -12,50 +12,50 @@ JCLOUDE_AUTH_MAX_ENTRIES = 1000000 ALLOWED_PATHS = [ - "/api/method/create-site-migration", - "/api/method/create-version-upgrade", - "/api/method/migrate-to-private-bench", - "/api/method/find-my-sites", - "/api/method/jingrow.core.pagetype.communication.email.mark_email_as_seen", - "/api/method/jingrow.realtime.get_user_info", - "/api/method/jingrow.realtime.can_subscribe_pg", - "/api/method/jingrow.realtime.can_subscribe_pagetype", - "/api/method/jingrow.realtime.has_permission", - "/api/method/jingrow.www.login.login_via_jingrow", - "/api/method/jingrow.integrations.oauth2.authorize", - "/api/method/jingrow.integrations.oauth2.approve", - "/api/method/jingrow.integrations.oauth2.get_token", - "/api/method/jingrow.integrations.oauth2.openid_profile", - "/api/method/jingrow.integrations.oauth2_logins.login_via_jingrow", - "/api/method/jingrow.website.pagetype.web_page_view.web_page_view.make_view_log", - "/api/method/jingrow.desk.form.utils.add_comment", - "/api/method/get-user-sites-list-for-new-ticket", - "/api/method/ping", - "/api/method/login", - "/api/method/logout", - "/api/method/jcloude.jcloude.pagetype.razorpay_webhook_log.razorpay_webhook_log.razorpay_webhook_handler", - "/api/method/jcloude.jcloude.pagetype.razorpay_webhook_log.razorpay_webhook_log.razorpay_authorized_payment_handler", - "/api/method/jcloude.jcloude.pagetype.stripe_webhook_log.stripe_webhook_log.stripe_webhook_handler", - "/api/method/jcloude.jcloude.pagetype.drip_email.drip_email.unsubscribe", - "/api/method/upload_file", - "/api/method/jingrow.search.web_search", - "/api/method/jingrow.email.queue.unsubscribe", - "/api/method/jcloude.utils.telemetry.capture_read_event", - "/api/method/validate_plan_change", - "/api/method/marketplace-apps", - "/api/method/jcloude.www.dashboard.get_context_for_dev", - "/api/method/jingrow.website.pagetype.web_form.web_form.accept", - "/api/method/jingrow.core.pagetype.user.user.test_password_strength", - "/api/method/jingrow.core.pagetype.user.user.update_password", - "/api/method/get_central_migration_data", + "/api/action/create-site-migration", + "/api/action/create-version-upgrade", + "/api/action/migrate-to-private-bench", + "/api/action/find-my-sites", + "/api/action/jingrow.core.pagetype.communication.email.mark_email_as_seen", + "/api/action/jingrow.realtime.get_user_info", + "/api/action/jingrow.realtime.can_subscribe_pg", + "/api/action/jingrow.realtime.can_subscribe_pagetype", + "/api/action/jingrow.realtime.has_permission", + "/api/action/jingrow.www.login.login_via_jingrow", + "/api/action/jingrow.integrations.oauth2.authorize", + "/api/action/jingrow.integrations.oauth2.approve", + "/api/action/jingrow.integrations.oauth2.get_token", + "/api/action/jingrow.integrations.oauth2.openid_profile", + "/api/action/jingrow.integrations.oauth2_logins.login_via_jingrow", + "/api/action/jingrow.website.pagetype.web_page_view.web_page_view.make_view_log", + "/api/action/jingrow.desk.form.utils.add_comment", + "/api/action/get-user-sites-list-for-new-ticket", + "/api/action/ping", + "/api/action/login", + "/api/action/logout", + "/api/action/jcloude.jcloude.pagetype.razorpay_webhook_log.razorpay_webhook_log.razorpay_webhook_handler", + "/api/action/jcloude.jcloude.pagetype.razorpay_webhook_log.razorpay_webhook_log.razorpay_authorized_payment_handler", + "/api/action/jcloude.jcloude.pagetype.stripe_webhook_log.stripe_webhook_log.stripe_webhook_handler", + "/api/action/jcloude.jcloude.pagetype.drip_email.drip_email.unsubscribe", + "/api/action/upload_file", + "/api/action/jingrow.search.web_search", + "/api/action/jingrow.email.queue.unsubscribe", + "/api/action/jcloude.utils.telemetry.capture_read_event", + "/api/action/validate_plan_change", + "/api/action/marketplace-apps", + "/api/action/jcloude.www.dashboard.get_context_for_dev", + "/api/action/jingrow.website.pagetype.web_form.web_form.accept", + "/api/action/jingrow.core.pagetype.user.user.test_password_strength", + "/api/action/jingrow.core.pagetype.user.user.update_password", + "/api/action/get_central_migration_data", ] ALLOWED_WILDCARD_PATHS = [ - "/api/method/jcloude.api.", - "/api/method/jcloude.saas.", - "/api/method/wiki.", - "/api/method/jingrow.integrations.oauth2_logins.", - "/api/method/jcloude.www.marketplace.index.", + "/api/action/jcloude.api.", + "/api/action/jcloude.saas.", + "/api/action/wiki.", + "/api/action/jingrow.integrations.oauth2_logins.", + "/api/action/jcloude.www.marketplace.index.", ] DENIED_PATHS = [ @@ -72,7 +72,7 @@ DENIED_WILDCARD_PATHS = [ def hook(): # noqa: C901 if jingrow.form_dict.cmd: - path = f"/api/method/{jingrow.form_dict.cmd}" + path = f"/api/action/{jingrow.form_dict.cmd}" else: path = jingrow.request.path diff --git a/jcloude/commands.py b/jcloude/commands.py index f10bba2a..3951c5af 100644 --- a/jcloude/commands.py +++ b/jcloude/commands.py @@ -30,7 +30,7 @@ def start_ngrok_and_set_webhook(context): print(f"Inspect logs at {tunnel.api_url}") stripe = get_stripe() - url = f"{public_url}/api/method/jcloude.jcloude.pagetype.stripe_webhook_log.stripe_webhook_log.stripe_webhook_handler" + url = f"{public_url}/api/action/jcloude.jcloude.pagetype.stripe_webhook_log.stripe_webhook_log.stripe_webhook_handler" stripe.WebhookEndpoint.modify( jingrow.db.get_single_value("Jcloude Settings", "stripe_webhook_endpoint_id"), url=url ) diff --git a/jcloude/hooks.py b/jcloude/hooks.py index a97a94e1..a173a356 100644 --- a/jcloude/hooks.py +++ b/jcloude/hooks.py @@ -72,7 +72,7 @@ website_redirects = [ {"source": "/dashboard/f-login", "target": get_jingrow_io_auth_url() or "/"}, { "source": "/suspended-site", - "target": "/api/method/jcloude.api.handle_suspended_site_redirection", + "target": "/api/action/jcloude.api.handle_suspended_site_redirection", }, {"source": "/f-login", "target": "/dashboard/f-login"}, {"source": "/signup", "target": "/jerp/signup"}, diff --git a/jcloude/incident_management/pagetype/incident_investigator/incident_investigator.py b/jcloude/incident_management/pagetype/incident_investigator/incident_investigator.py index 67a0ba0a..dcf7148b 100644 --- a/jcloude/incident_management/pagetype/incident_investigator/incident_investigator.py +++ b/jcloude/incident_management/pagetype/incident_investigator/incident_investigator.py @@ -191,7 +191,7 @@ class IncidentInvestigator(Page): def ping(url: str) -> int: try: - return requests.get(f"https://{url}/api/method/ping", timeout=5).status_code + return requests.get(f"https://{url}/api/action/ping", timeout=5).status_code except Exception: return 502 diff --git a/jcloude/jcloude/pagetype/account_request/account_request.py b/jcloude/jcloude/pagetype/account_request/account_request.py index c1069d65..ec1f8e86 100644 --- a/jcloude/jcloude/pagetype/account_request/account_request.py +++ b/jcloude/jcloude/pagetype/account_request/account_request.py @@ -247,7 +247,7 @@ class AccountRequest(Page): "invited_by": self.invited_by, "link": url, "read_pixel_path": get_url( - f"/api/method/jcloude.utils.telemetry.capture_read_event?email={self.email}" + f"/api/action/jcloude.utils.telemetry.capture_read_event?email={self.email}" ), "otp": self.otp, } diff --git a/jcloude/jcloude/pagetype/downtime_analysis/generate_metrics.py b/jcloude/jcloude/pagetype/downtime_analysis/generate_metrics.py index 322c792b..8b447966 100644 --- a/jcloude/jcloude/pagetype/downtime_analysis/generate_metrics.py +++ b/jcloude/jcloude/pagetype/downtime_analysis/generate_metrics.py @@ -572,12 +572,12 @@ def analyze_sites(sites: list): try: # If there are redirects, follow it and log those done = False - url = f"https://{site}/api/method/ping" + url = f"https://{site}/api/action/ping" while not done: response = requests.get(url, timeout=(2, 10), allow_redirects=False) # Record status code results[site]["status_code"] = response.status_code - # Check if we are getting redirected to some other server in /api/method/ping check + # Check if we are getting redirected to some other server in /api/action/ping check results[site]["proxy_server"] = response.headers.get( "Server", "" ) or response.headers.get("server", "") diff --git a/jcloude/jcloude/pagetype/incident/incident.py b/jcloude/jcloude/pagetype/incident/incident.py index 8ad52898..cf99be6a 100644 --- a/jcloude/jcloude/pagetype/incident/incident.py +++ b/jcloude/jcloude/pagetype/incident/incident.py @@ -302,7 +302,7 @@ class Incident(WebsiteGenerator): if not (site := self.get_down_site()): return None try: - ret = requests.get(f"https://{site}/api/method/ping", timeout=10) + ret = requests.get(f"https://{site}/api/action/ping", timeout=10) except requests.RequestException as e: self.add_description(f"Error pinging sample site {site}: {e!s}") return None @@ -687,7 +687,7 @@ Likely due to insufficient balance or incorrect credentials""", jcloude_public_base_url = jingrow.utils.get_url() twilio_client.calls.create( - url=f"{jcloude_public_base_url}/api/method/jcloude.api.message.confirmed_incident?server_title={server_title_encoded}", + url=f"{jcloude_public_base_url}/api/action/jcloude.api.message.confirmed_incident?server_title={server_title_encoded}", to=phone_no, from_=from_phone, ) diff --git a/jcloude/jcloude/pagetype/invoice/invoice.py b/jcloude/jcloude/pagetype/invoice/invoice.py index c7e24ce5..40d15b5c 100644 --- a/jcloude/jcloude/pagetype/invoice/invoice.py +++ b/jcloude/jcloude/pagetype/invoice/invoice.py @@ -828,7 +828,7 @@ class Invoice(Page): def get_pdf(self): print_format = self.meta.default_print_format return jingrow.utils.get_url( - f"/api/method/jingrow.utils.print_format.download_pdf?pagetype=Invoice&name={self.name}&format={print_format}&no_letterhead=0" + f"/api/action/jingrow.utils.print_format.download_pdf?pagetype=Invoice&name={self.name}&format={print_format}&no_letterhead=0" ) @jingrow.whitelist() @@ -856,7 +856,7 @@ class Invoice(Page): return None client = self.get_jingrowio_connection() response = client.session.post( - f"{client.url}/api/method/create-fc-invoice", + f"{client.url}/api/action/create-fc-invoice", headers=client.headers, data={ "team": team.as_json(), @@ -912,7 +912,7 @@ class Invoice(Page): "no_letterhead": 0, } ) - url = client.url + "/api/method/jingrow.utils.print_format.download_pdf?" + params + url = client.url + "/api/action/jingrow.utils.print_format.download_pdf?" + params with client.session.get(url, headers=client.headers, stream=True) as r: r.raise_for_status() @@ -1011,7 +1011,7 @@ class Invoice(Page): "no_letterhead": 0, } ) - url = f"{client.url}/api/method/jingrow.utils.print_format.download_pdf?{params}" + url = f"{client.url}/api/action/jingrow.utils.print_format.download_pdf?{params}" with client.session.get(url, headers=client.headers, stream=True) as r: r.raise_for_status() @@ -1229,7 +1229,7 @@ def create_sales_invoice_on_external_site(transaction_response): # Post to the external site's sales invoice creation API response = client.session.post( - f"{client.url}/api/method/jingrow.client.insert", + f"{client.url}/api/action/jingrow.client.insert", headers=client.headers, json={"pg": data}, ) diff --git a/jcloude/jcloude/pagetype/jcloude_settings/jcloude_settings.py b/jcloude/jcloude/pagetype/jcloude_settings/jcloude_settings.py index 892a2e6c..a08b1da2 100644 --- a/jcloude/jcloude/pagetype/jcloude_settings/jcloude_settings.py +++ b/jcloude/jcloude/pagetype/jcloude_settings/jcloude_settings.py @@ -215,7 +215,7 @@ class JcloudeSettings(Page): def create_stripe_webhook(self): stripe = get_stripe() url = jingrow.utils.get_url( - "/api/method/jcloude.jcloude.pagetype.stripe_webhook_log.stripe_webhook_log.stripe_webhook_handler" + "/api/action/jcloude.jcloude.pagetype.stripe_webhook_log.stripe_webhook_log.stripe_webhook_handler" ) webhook = stripe.WebhookEndpoint.create( url=url, diff --git a/jcloude/jcloude/pagetype/release_group/release_group.py b/jcloude/jcloude/pagetype/release_group/release_group.py index efb18b42..02d9001c 100644 --- a/jcloude/jcloude/pagetype/release_group/release_group.py +++ b/jcloude/jcloude/pagetype/release_group/release_group.py @@ -486,7 +486,7 @@ class ReleaseGroup(Page, TagHelpers): with suppress(AttributeError, RuntimeError): if ( not jingrow.flags.in_test - and jingrow.request.path == "/api/method/jcloude.api.bench.change_branch" + and jingrow.request.path == "/api/action/jcloude.api.bench.change_branch" ): return # Separate validation exists in set_app_source for app in self.apps: @@ -1010,7 +1010,7 @@ class ReleaseGroup(Page, TagHelpers): } ).insert() - link = get_url(f"/api/method/jcloude.api.bench.confirm_bench_transfer?key={key}") + link = get_url(f"/api/action/jcloude.api.bench.confirm_bench_transfer?key={key}") if jingrow.conf.developer_mode: print(f"Bench transfer link for {team_mail_id}\n{link}\n") diff --git a/jcloude/jcloude/pagetype/site/site.py b/jcloude/jcloude/pagetype/site/site.py index 71d3f2e2..390e10c8 100644 --- a/jcloude/jcloude/pagetype/site/site.py +++ b/jcloude/jcloude/pagetype/site/site.py @@ -1656,7 +1656,7 @@ class Site(Page, TagHelpers): } ).insert() - link = get_url(f"/api/method/jcloude.api.site.confirm_site_transfer?key={key}") + link = get_url(f"/api/action/jcloude.api.site.confirm_site_transfer?key={key}") if jingrow.conf.developer_mode: print(f"\nSite transfer link for {team_mail_id}\n{link}\n") @@ -1785,7 +1785,7 @@ class Site(Page, TagHelpers): if user == "Administrator": password = get_decrypted_password("Site", self.name, "admin_password") response = requests.post( - f"https://{self.name}/api/method/login", + f"https://{self.name}/api/action/login", data={"usr": user, "pwd": password}, ) sid = response.cookies.get("sid") @@ -1952,7 +1952,7 @@ class Site(Page, TagHelpers): "pagetype": "Webhook", "webhook_pagetype": "User", "enabled": 1, - "request_url": "https://jcloud.jingrow.com/api/method/jcloude.api.site_login.sync_product_site_user", + "request_url": "https://jcloud.jingrow.com/api/action/jcloude.api.site_login.sync_product_site_user", "request_method": "POST", "request_structure": "JSON", "webhook_json": """{ "user_info": { "email": "{{pg.email}}", "enabled": "{{pg.enabled}}" } }""", @@ -2095,7 +2095,7 @@ class Site(Page, TagHelpers): return False def ping(self): - return requests.get(f"https://{self.name}/api/method/ping", timeout=5) + return requests.get(f"https://{self.name}/api/action/ping", timeout=5) def _set_configuration(self, config: list[dict]): """Similar to _update_configuration but will replace full configuration at once @@ -2344,7 +2344,7 @@ class Site(Page, TagHelpers): # Send ping request try: - resp = requests.get(f"https://{self.host_name}/api/method/ping", timeout=5, verify=True) + resp = requests.get(f"https://{self.host_name}/api/action/ping", timeout=5, verify=True) is_pingable = resp.status_code == 200 if not is_pingable: result.update( diff --git a/jcloude/jcloude/pagetype/team/team.py b/jcloude/jcloude/pagetype/team/team.py index 740d9465..f7e36b32 100644 --- a/jcloude/jcloude/pagetype/team/team.py +++ b/jcloude/jcloude/pagetype/team/team.py @@ -1026,7 +1026,7 @@ class Team(Page): client = get_jingrow_io_connection() response = client.session.get( - f"{client.url}/api/method/get_partner_level", + f"{client.url}/api/action/get_partner_level", headers=client.headers, params={"email": self.partner_email}, ) diff --git a/jcloude/jcloude/pagetype/team_deletion_request/team_deletion_request.py b/jcloude/jcloude/pagetype/team_deletion_request/team_deletion_request.py index 47893614..5e90e3f5 100644 --- a/jcloude/jcloude/pagetype/team_deletion_request/team_deletion_request.py +++ b/jcloude/jcloude/pagetype/team_deletion_request/team_deletion_request.py @@ -120,7 +120,7 @@ class TeamDeletionRequest(PersonalDataDeletionRequest): def generate_url_for_confirmation(self): params = get_signed_params({"team": self.team}) - api = jingrow.utils.get_url("/api/method/jcloude.api.account.delete_team") + api = jingrow.utils.get_url("/api/action/jcloude.api.account.delete_team") url = f"{api}?{params}" if jingrow.conf.developer_mode: @@ -164,7 +164,7 @@ class TeamDeletionRequest(PersonalDataDeletionRequest): client = get_jingrow_io_connection() response = client.session.delete( - f"{client.url}/api/method/delete-fc-team", + f"{client.url}/api/action/delete-fc-team", data={"team": self.team}, headers=client.headers, ) diff --git a/jcloude/jcloude/pagetype/team_deletion_request/test_team_deletion_request.py b/jcloude/jcloude/pagetype/team_deletion_request/test_team_deletion_request.py index a9727ffa..76a98451 100644 --- a/jcloude/jcloude/pagetype/team_deletion_request/test_team_deletion_request.py +++ b/jcloude/jcloude/pagetype/team_deletion_request/test_team_deletion_request.py @@ -40,7 +40,7 @@ class TestTeamDeletionRequest(JingrowTestCase): def test_url_for_verification(self): deletion_url = self.team_deletion_request.generate_url_for_confirmation() self.assertTrue( - deletion_url.startswith(jingrow.utils.get_url("/api/method/jcloude.api.account.delete_team")) + deletion_url.startswith(jingrow.utils.get_url("/api/action/jcloude.api.account.delete_team")) ) def test_team_deletion_api(self): diff --git a/jcloude/marketplace/pagetype/marketplace_app_subscription/marketplace_app_subscription.py b/jcloude/marketplace/pagetype/marketplace_app_subscription/marketplace_app_subscription.py index 31800e14..0b4fa52b 100644 --- a/jcloude/marketplace/pagetype/marketplace_app_subscription/marketplace_app_subscription.py +++ b/jcloude/marketplace/pagetype/marketplace_app_subscription/marketplace_app_subscription.py @@ -155,7 +155,7 @@ class MarketplaceAppSubscription(Page): try: for path in paths: requests.post( - f"https://{self.site}/api/method/{path}", + f"https://{self.site}/api/action/{path}", data={"app": self.app, "plan": self.plan}, ) except Exception: diff --git a/jcloude/partner/pagetype/certificate_link_request/certificate_link_request.py b/jcloude/partner/pagetype/certificate_link_request/certificate_link_request.py index f36a0449..a355b32d 100644 --- a/jcloude/partner/pagetype/certificate_link_request/certificate_link_request.py +++ b/jcloude/partner/pagetype/certificate_link_request/certificate_link_request.py @@ -39,7 +39,7 @@ class CertificateLinkRequest(Page): jingrow.db.set_value("Partner Certificate", certs[0], "partner_team", self.partner_team) def after_insert(self): - link = get_url(f"/api/method/jcloude.api.partner.approve_certificate_link_request?key={self.key}") + link = get_url(f"/api/action/jcloude.api.partner.approve_certificate_link_request?key={self.key}") jingrow.sendmail( recipients=[self.user_email], diff --git a/jcloude/partner/pagetype/partner_approval_request/partner_approval_request.py b/jcloude/partner/pagetype/partner_approval_request/partner_approval_request.py index e7fd47f7..d9cc5d95 100644 --- a/jcloude/partner/pagetype/partner_approval_request/partner_approval_request.py +++ b/jcloude/partner/pagetype/partner_approval_request/partner_approval_request.py @@ -76,7 +76,7 @@ class PartnerApprovalRequest(Page): jingrow.throw("Failed to create approval request. Please contact support.") customer = jingrow.db.get_value("Team", self.requested_by, "user") - link = get_url(f"/api/method/jcloude.api.partner.approve_partner_request?key={self.key}") + link = get_url(f"/api/action/jcloude.api.partner.approve_partner_request?key={self.key}") jingrow.sendmail( subject="Partner Approval Request", diff --git a/jcloude/playbooks/roles/prometheus/templates/prometheus.yml b/jcloude/playbooks/roles/prometheus/templates/prometheus.yml index bc4913f6..5a7914c8 100644 --- a/jcloude/playbooks/roles/prometheus/templates/prometheus.yml +++ b/jcloude/playbooks/roles/prometheus/templates/prometheus.yml @@ -59,7 +59,7 @@ scrape_configs: target_label: __param_target - source_labels: [__param_target] target_label: instance - regex: 'https://(.*)/api/method/ping' + regex: 'https://(.*)/api/action/ping' - target_label: __address__ replacement: '{{ server }}' file_sd_configs: @@ -80,7 +80,7 @@ scrape_configs: target_label: __param_target - source_labels: [__param_target] target_label: instance - regex: 'https://(.*)/api/method/ping' + regex: 'https://(.*)/api/action/ping' - target_label: __address__ replacement: '{{ server }}' file_sd_configs: diff --git a/jcloude/playbooks/roles/sentry/templates/sentry.conf.py b/jcloude/playbooks/roles/sentry/templates/sentry.conf.py index c2564a27..0791a608 100644 --- a/jcloude/playbooks/roles/sentry/templates/sentry.conf.py +++ b/jcloude/playbooks/roles/sentry/templates/sentry.conf.py @@ -6,6 +6,6 @@ OIDC_CLIENT_SECRET = "{{ sentry_oauth_client_secret }}" OIDC_ISSUER = "Jingrow" OIDC_SCOPE = "openid email" -OIDC_AUTHORIZATION_ENDPOINT = "{{ sentry_oauth_server_url }}/api/method/jingrow.integrations.oauth2.authorize" -OIDC_TOKEN_ENDPOINT = "{{ sentry_oauth_server_url }}/api/method/jingrow.integrations.oauth2.get_token" -OIDC_USERINFO_ENDPOINT = "{{ sentry_oauth_server_url }}/api/method/jingrow.integrations.oauth2.openid_profile" +OIDC_AUTHORIZATION_ENDPOINT = "{{ sentry_oauth_server_url }}/api/action/jingrow.integrations.oauth2.authorize" +OIDC_TOKEN_ENDPOINT = "{{ sentry_oauth_server_url }}/api/action/jingrow.integrations.oauth2.get_token" +OIDC_USERINFO_ENDPOINT = "{{ sentry_oauth_server_url }}/api/action/jingrow.integrations.oauth2.openid_profile" diff --git a/jcloude/public/marketplace/js/call.js b/jcloude/public/marketplace/js/call.js index 7b822741..e26f8330 100644 --- a/jcloude/public/marketplace/js/call.js +++ b/jcloude/public/marketplace/js/call.js @@ -18,7 +18,7 @@ export default async function call(method, args) { headers['X-Jingrow-CSRF-Token'] = window.csrf_token; } - const res = await fetch(`/api/method/${method}`, { + const res = await fetch(`/api/action/${method}`, { method: 'POST', headers, body: JSON.stringify(args), diff --git a/jcloude/public/migrate b/jcloude/public/migrate index 1530a31c..00d4eb99 100755 --- a/jcloude/public/migrate +++ b/jcloude/public/migrate @@ -10,7 +10,7 @@ from html2text import html2text def get_remote_script(remote_site): print("Retrieving Site Migrator...") - request_url = f"https://{remote_site}/api/method/jcloude.api.script" + request_url = f"https://{remote_site}/api/action/jcloude.api.script" request = requests.get(request_url) if request.status_code / 100 != 2: diff --git a/jcloude/public/migrate_2 b/jcloude/public/migrate_2 index 2d636f4b..580688c7 100644 --- a/jcloude/public/migrate_2 +++ b/jcloude/public/migrate_2 @@ -14,7 +14,7 @@ import requests def jingrowcloud_migrator(): print("Retreiving Site Migrator...") remote_site = "jcloud.jingrow.com" - request_url = "https://{}/api/method/jcloude.api.script_2".format(remote_site) + request_url = "https://{}/api/action/jcloude.api.script_2".format(remote_site) request = requests.get(request_url) if request.status_code / 100 != 2: diff --git a/jcloude/saas/api/readme.md b/jcloude/saas/api/readme.md index 21101b68..5dd56bbf 100644 --- a/jcloude/saas/api/readme.md +++ b/jcloude/saas/api/readme.md @@ -30,7 +30,7 @@ Sometimes, we may need to pass the secret token to frontend for some specific ta **Request** ```bash -curl --location --request POST 'http://fc.local:8000/api/method/jcloude.saas.api.auth.generate_access_token' \ +curl --location --request POST 'http://fc.local:8000/api/action/jcloude.saas.api.auth.generate_access_token' \ --header 'x-site: oka-hdz-qpj.tanmoy.fc.jingrow.dev' \ --header 'x-site-token: 004f85a3ae93927d2f0fcc668d11cb71' ``` diff --git a/jcloude/scripts/migrate.py b/jcloude/scripts/migrate.py index 3076d6c0..fedc9491 100644 --- a/jcloude/scripts/migrate.py +++ b/jcloude/scripts/migrate.py @@ -471,32 +471,32 @@ def jingrowcloud_migrator(local_site, jingrow_provider): remote_site = jingrow_provider or jingrow.conf.jingrowcloud_url scheme = "https" - login_url = "{}://{}/api/method/login".format(scheme, remote_site) - upload_url = "{}://{}/api/method/jcloude.api.site.new".format(scheme, remote_site) - remote_link_url = "{}://{}/api/method/jcloude.api.site.get_upload_link".format( + login_url = "{}://{}/api/action/login".format(scheme, remote_site) + upload_url = "{}://{}/api/action/jcloude.api.site.new".format(scheme, remote_site) + remote_link_url = "{}://{}/api/action/jcloude.api.site.get_upload_link".format( scheme, remote_site ) - register_remote_url = "{}://{}/api/method/jcloude.api.site.uploaded_backup_info".format( + register_remote_url = "{}://{}/api/action/jcloude.api.site.uploaded_backup_info".format( scheme, remote_site ) - options_url = "{}://{}/api/method/jcloude.api.site.options_for_new".format( + options_url = "{}://{}/api/action/jcloude.api.site.options_for_new".format( scheme, remote_site ) - site_exists_url = "{}://{}/api/method/jcloude.api.site.exists".format( + site_exists_url = "{}://{}/api/action/jcloude.api.site.exists".format( scheme, remote_site ) - site_info_url = "{}://{}/api/method/jcloude.api.site.get".format(scheme, remote_site) - account_details_url = "{}://{}/api/method/jcloude.api.account.get".format( + site_info_url = "{}://{}/api/action/jcloude.api.site.get".format(scheme, remote_site) + account_details_url = "{}://{}/api/action/jcloude.api.account.get".format( scheme, remote_site ) - all_site_url = "{}://{}/api/method/jcloude.api.site.all".format(scheme, remote_site) - restore_site_url = "{}://{}/api/method/jcloude.api.site.restore".format( + all_site_url = "{}://{}/api/action/jcloude.api.site.all".format(scheme, remote_site) + restore_site_url = "{}://{}/api/action/jcloude.api.site.restore".format( scheme, remote_site ) - finish_multipart_url = "{}://{}/api/method/jcloude.api.site.multipart_exit".format( + finish_multipart_url = "{}://{}/api/action/jcloude.api.site.multipart_exit".format( scheme, remote_site ) - site_plans_url = "{}://{}/api/method/jcloude.api.site.get_site_plans".format( + site_plans_url = "{}://{}/api/action/jcloude.api.site.get_site_plans".format( scheme, remote_site ) diff --git a/jcloude/templates/marketplace/macros.html b/jcloude/templates/marketplace/macros.html index c97426e7..ab874199 100644 --- a/jcloude/templates/marketplace/macros.html +++ b/jcloude/templates/marketplace/macros.html @@ -51,7 +51,7 @@ {% endmacro %} {% macro form(fields, action='') %} -
+
{%- for df in fields -%}

diff --git a/jcloude/utils/__init__.py b/jcloude/utils/__init__.py index 33eadcd7..e287bc33 100644 --- a/jcloude/utils/__init__.py +++ b/jcloude/utils/__init__.py @@ -340,7 +340,7 @@ class RemoteJingrowSite: def _validate_jingrow_site(self): """Validates if Jingrow Site and sets RemoteBackupRetrieval.site""" - res = requests.get(f"{self.user_site}/api/method/jingrow.ping", timeout=(5, 10)) + res = requests.get(f"{self.user_site}/api/action/jingrow.ping", timeout=(5, 10)) if not res.ok: jingrow.throw("Invalid Jingrow Site") @@ -353,7 +353,7 @@ class RemoteJingrowSite: def _validate_user_permissions(self): """Validates user permssions on Jingrow Site and sets RemoteBackupRetrieval.user_sid""" response = requests.post( - f"{self.site}/api/method/login", + f"{self.site}/api/action/login", data={"usr": self.user_login, "pwd": self.password_login}, timeout=(5, 10), ) @@ -392,7 +392,7 @@ class RemoteJingrowSite: headers = {"Accept": "application/json", "Content-Type": "application/json"} suffix = f"?sid={self.user_sid}" if self.user_sid else "" res = requests.get( - f"{self.site}/api/method/jingrow.utils.backups.fetch_latest_backups{suffix}", + f"{self.site}/api/action/jingrow.utils.backups.fetch_latest_backups{suffix}", headers=headers, timeout=(5, 10), ) diff --git a/jcloude/www/saas/billing.js b/jcloude/www/saas/billing.js index 897fe8c4..00db3ec0 100644 --- a/jcloude/www/saas/billing.js +++ b/jcloude/www/saas/billing.js @@ -137,7 +137,7 @@ function initiateRequestForLoginToJingrowCloud() { function requestLoginToFC(freezing_msg) { jingrow.request.call({ - url: `${jingrow_cloud_base_endpoint}/api/method/jcloude.api.developer.saas.send_verification_code`, + url: `${jingrow_cloud_base_endpoint}/api/action/jcloude.api.developer.saas.send_verification_code`, type: 'POST', args: { domain: window.location.hostname, @@ -198,7 +198,7 @@ function showFCLogindialog(email) { return; } jingrow.request.call({ - url: `${jingrow_cloud_base_endpoint}/api/method/jcloude.api.developer.saas.verify_verification_code`, + url: `${jingrow_cloud_base_endpoint}/api/action/jcloude.api.developer.saas.verify_verification_code`, type: 'POST', args: { domain: window.location.hostname, @@ -211,14 +211,14 @@ function showFCLogindialog(email) { if (r.login_token) { fc_login_dialog.hide(); window.open( - `${jingrow_cloud_base_endpoint}/api/method/jcloude.api.developer.saas.login_to_fc?token=${r.login_token}`, + `${jingrow_cloud_base_endpoint}/api/action/jcloude.api.developer.saas.login_to_fc?token=${r.login_token}`, '_blank', ); jingrow.msgprint({ title: __('Jingrow Cloud Login Successful'), indicator: 'green', message: __( - `

You will be redirected to Jingrow Cloud soon.

If you haven\'t been redirected, Click here to login

`, + `

You will be redirected to Jingrow Cloud soon.

If you haven\'t been redirected, Click here to login

`, ), }); } else { diff --git a/libs/fc_cli/fc/authentication/login.py b/libs/fc_cli/fc/authentication/login.py index b02b1b28..e7f78978 100644 --- a/libs/fc_cli/fc/authentication/login.py +++ b/libs/fc_cli/fc/authentication/login.py @@ -24,9 +24,9 @@ class SessionMetadata: class OtpLogin: def __init__(self, email: str): self.email = email - self.opt_url = "https://jcloud.jingrow.com/api/method/jcloude.api.account.send_otp" - self.login_url = "https://jcloud.jingrow.com/api/method/jcloude.api.account.verify_otp_and_login" - self.me = "https://jcloud.jingrow.com/api/method/jcloude.api.account.get" + self.opt_url = "https://jcloud.jingrow.com/api/action/jcloude.api.account.send_otp" + self.login_url = "https://jcloud.jingrow.com/api/action/jcloude.api.account.verify_otp_and_login" + self.me = "https://jcloud.jingrow.com/api/action/jcloude.api.account.get" def send_otp(self): """Send otp to the email address""" diff --git a/libs/fc_cli/fc/authentication/session.py b/libs/fc_cli/fc/authentication/session.py index 2b666070..8d203db6 100644 --- a/libs/fc_cli/fc/authentication/session.py +++ b/libs/fc_cli/fc/authentication/session.py @@ -19,7 +19,7 @@ class CloudSession(Session): def __init__(self, session_id: str): super().__init__() - self.base_url = "https://jcloud.jingrow.com/api/method/" + self.base_url = "https://jcloud.jingrow.com/api/action/" self.cookies.set("sid", session_id) def request(self, method, url, *args, **kwargs) -> dict[str, str]: diff --git a/libs/fc_cli/fc/commands/deploy.py b/libs/fc_cli/fc/commands/deploy.py index 1ef39520..d8e26999 100644 --- a/libs/fc_cli/fc/commands/deploy.py +++ b/libs/fc_cli/fc/commands/deploy.py @@ -350,7 +350,7 @@ def _build_method_url(session: "CloudSession", method: str) -> str: base_url = session.base_url.rstrip("/") if base_url.endswith("/api/method"): base_url = base_url[: -len("/api/method")] - return f"{base_url}/api/method/{method}" + return f"{base_url}/api/action/{method}" def _bench_options_url(session: "CloudSession") -> str: diff --git a/libs/fcrestore/requests.go b/libs/fcrestore/requests.go index 076285ae..55246890 100644 --- a/libs/fcrestore/requests.go +++ b/libs/fcrestore/requests.go @@ -139,7 +139,7 @@ func (s *Session) SendRequestWithContext(ctx context.Context, method string, pay req.URL = &url.URL{ Scheme: schema, Host: s.Server, - Path: fmt.Sprintf("/api/method/%s", method), + Path: fmt.Sprintf("/api/action/%s", method), } req.Header = http.Header{ "Content-Type": {"application/json"},