fix: use SSL-tolerant axios instance for server-side API calls
صفحات سرور (doctors, doctor/[slug], appointment/[doctorId]) از axios خام استفاده میکردند که گواهی self-signed ddev محلی را رد میکرد (unable to verify the first certificate). حالا از axiosInstance/fetchReq در lib/req استفاده میکنند که در development آن را میپذیرد. افزودن clinic-pro.ddev.site (http/https) به remotePatterns تصاویر. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
import AppointmentPage from "@/components/appointment";
|
import AppointmentPage from "@/components/appointment";
|
||||||
import { getStateInfo } from "@/lib/getStateInfo";
|
import { getStateInfo } from "@/lib/getStateInfo";
|
||||||
import axios from "axios";
|
import { axiosInstance } from "@/lib/req";
|
||||||
|
|
||||||
async function Appointment({ params }) {
|
async function Appointment({ params }) {
|
||||||
const { doctorId } = await params;
|
const { doctorId } = await params;
|
||||||
@@ -11,11 +11,11 @@ async function Appointment({ params }) {
|
|||||||
let disabledDates = [];
|
let disabledDates = [];
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const doctorRes = await axios.get(`${API_URL}/api/v1/doctor/${doctorId}`);
|
const doctorRes = await axiosInstance.get(`${API_URL}/api/v1/doctor/${doctorId}`);
|
||||||
doctor = doctorRes.data;
|
doctor = doctorRes.data;
|
||||||
|
|
||||||
if (doctor && doctor.id) {
|
if (doctor && doctor.id) {
|
||||||
const disabledDatesRes = await axios.get(
|
const disabledDatesRes = await axiosInstance.get(
|
||||||
`${API_URL}/api/v1/appointment/not-available/${doctor.id}`,
|
`${API_URL}/api/v1/appointment/not-available/${doctor.id}`,
|
||||||
{ headers: { "Content-Type": "application/json" } }
|
{ headers: { "Content-Type": "application/json" } }
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import DoctorPage from "@/components/doctor";
|
import DoctorPage from "@/components/doctor";
|
||||||
import Layout from "@/components/layout/StLayout";
|
import Layout from "@/components/layout/StLayout";
|
||||||
import { getStateInfo } from "@/lib/getStateInfo";
|
import { getStateInfo } from "@/lib/getStateInfo";
|
||||||
import axios from "axios";
|
import { axiosInstance } from "@/lib/req";
|
||||||
|
|
||||||
export async function generateMetadata({ params }) {
|
export async function generateMetadata({ params }) {
|
||||||
const { slug } = await params;
|
const { slug } = await params;
|
||||||
@@ -10,7 +10,7 @@ export async function generateMetadata({ params }) {
|
|||||||
const siteName = matchedCity?.site_name || "نوبت 724";
|
const siteName = matchedCity?.site_name || "نوبت 724";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const res = await axios.get(`${API_URL}/api/v1/doctor/${slug}`);
|
const res = await axiosInstance.get(`${API_URL}/api/v1/doctor/${slug}`);
|
||||||
const doctor = res.data;
|
const doctor = res.data;
|
||||||
if (!doctor) return {};
|
if (!doctor) return {};
|
||||||
|
|
||||||
@@ -48,10 +48,10 @@ async function Doctor({ params }) {
|
|||||||
const API_URL = process.env.NEXT_PUBLIC_API_URL;
|
const API_URL = process.env.NEXT_PUBLIC_API_URL;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const resDoctor = await axios.get(`${API_URL}/api/v1/doctor/${slug}`);
|
const resDoctor = await axiosInstance.get(`${API_URL}/api/v1/doctor/${slug}`);
|
||||||
doctor = resDoctor.data;
|
doctor = resDoctor.data;
|
||||||
if (doctor) {
|
if (doctor) {
|
||||||
const resComments = await axios.get(
|
const resComments = await axiosInstance.get(
|
||||||
`${API_URL}/api/v1/clinicpro/comments/${doctor.id}`
|
`${API_URL}/api/v1/clinicpro/comments/${doctor.id}`
|
||||||
);
|
);
|
||||||
comments = resComments?.data?.data;
|
comments = resComments?.data?.data;
|
||||||
|
|||||||
+2
-3
@@ -2,7 +2,7 @@ import DoctorsPage from "@/components/doctors";
|
|||||||
import Layout from "@/components/layout/StLayout";
|
import Layout from "@/components/layout/StLayout";
|
||||||
import { buildDoctorParams } from "@/helper";
|
import { buildDoctorParams } from "@/helper";
|
||||||
import { getStateInfo } from "@/lib/getStateInfo";
|
import { getStateInfo } from "@/lib/getStateInfo";
|
||||||
import axios from "axios";
|
import { fetchReq } from "@/lib/req";
|
||||||
|
|
||||||
export async function generateMetadata() {
|
export async function generateMetadata() {
|
||||||
const { matchedCity, matchedState } = await getStateInfo();
|
const { matchedCity, matchedState } = await getStateInfo();
|
||||||
@@ -44,10 +44,9 @@ async function Doctors({ searchParams }) {
|
|||||||
|
|
||||||
const params = buildDoctorParams(newSearchParams);
|
const params = buildDoctorParams(newSearchParams);
|
||||||
|
|
||||||
const response = await axios.get(`${API_URL}/api/v1/doctors`, {
|
doctors = await fetchReq(`${API_URL}/api/v1/doctors`, {
|
||||||
params,
|
params,
|
||||||
});
|
});
|
||||||
doctors = response.data;
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error fetching doctors:", error);
|
console.error("Error fetching doctors:", error);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import https from "https";
|
import https from "https";
|
||||||
|
|
||||||
const axiosInstance = axios.create({
|
export const axiosInstance = axios.create({
|
||||||
...(process.env.NODE_ENV === "development" && {
|
...(process.env.NODE_ENV === "development" && {
|
||||||
httpsAgent: new https.Agent({ rejectUnauthorized: false }),
|
httpsAgent: new https.Agent({ rejectUnauthorized: false }),
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -20,6 +20,14 @@ const nextConfig = {
|
|||||||
protocol: 'https',
|
protocol: 'https',
|
||||||
hostname: 'clinic-pro-back.ddev.site',
|
hostname: 'clinic-pro-back.ddev.site',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
protocol: 'https',
|
||||||
|
hostname: 'clinic-pro.ddev.site',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
protocol: 'http',
|
||||||
|
hostname: 'clinic-pro.ddev.site',
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
env: {
|
env: {
|
||||||
|
|||||||
Reference in New Issue
Block a user