Mr-Help commited on
Commit
6b6dd1e
ยท
verified ยท
1 Parent(s): bdbb117

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +32 -46
main.py CHANGED
@@ -1,36 +1,34 @@
1
- # app.py
2
  import os
3
- import sys
4
- import json
5
  import requests
6
- from fastapi import FastAPI, HTTPException, Request
 
7
 
8
- BASE = os.getenv("ODOO_BASE", "https://odoo.binrushd.care")
 
 
9
  AUTH_URL = f"{BASE}/api/auth/token"
10
  SESSION_AUTH_URL = f"{BASE}/web/session/authenticate"
11
 
12
- # ู†ูุณ ู…ุชุบูŠุฑุงุชูƒ ุจุงู„ุถุจุท (ุชู‚ุฏุฑ ุชุบูŠู‘ุฑู‡ุง ู…ู† env)
13
  CF_ID = os.getenv("CF_ACCESS_CLIENT_ID", "0491b36d7dcabce5b04f1a53f347bb4e.access")
14
  CF_SECRET = os.getenv("CF_ACCESS_CLIENT_SECRET", "22152cb41b62393e159daaff7dce433006c3744c5850e6adc15fa3544bb5eb09")
15
  LOGIN = os.getenv("ODOO_LOGIN", "binrushd.automation@gmail.com")
16
  PASSWORD = os.getenv("ODOO_PASSWORD", "BR2025")
17
  DB_NAME = os.getenv("ODOO_DB", "BR_EMR_16.0_202401")
18
 
19
- app = FastAPI(title="Run get_token_and_session on request")
20
-
21
- def get_token_and_session():
22
- s = requests.Session()
23
- s.headers.update({
24
- "Accept": "*/*",
25
- "Content-Type": "application/json",
26
- # ู…ู‡ู…: ุจุฏูˆู† br ู„ุชูุงุฏูŠ brotli
27
- "Accept-Encoding": "gzip, deflate",
28
- "Connection": "keep-alive",
29
- "CF-Access-Client-Id": CF_ID,
30
- "CF-Access-Client-Secret": CF_SECRET,
31
- })
32
 
33
- # (1) ุงู„ุญุตูˆู„ ุนู„ู‰ access_token (ุงู„ู‡ูŠุฏุฑุฒ ุฒูŠ ู…ุง ููŠ ุณูƒุฑูŠุจุชูƒ)
 
34
  auth_headers = {
35
  "CF-Access-Client-Id": CF_ID,
36
  "CF-Access-Client-Secret": CF_SECRET,
@@ -40,17 +38,13 @@ def get_token_and_session():
40
  }
41
  r = s.get(AUTH_URL, headers=auth_headers, timeout=(5, 30))
42
  r.raise_for_status()
43
- try:
44
- data = r.json()
45
- except ValueError:
46
- # ุงุทุจุน ุฃูˆู„ ุฌุฒุก ู…ู† ุงู„ุจูˆุฏูŠ ู„ู„ุชุดุฎูŠุต
47
- raise RuntimeError(f"Non-JSON from auth endpoint: {r.text[:300]}")
48
-
49
  token = data.get("access_token") or (data.get("data") or {}).get("access_token")
50
  if not token:
51
- raise RuntimeError(f"No access_token in response: {data}")
 
52
 
53
- # (2) session_id ู…ู† ุงู„ูƒูˆูƒูŠุฒุŒ ุฃูˆ ู†ุนู…ู„ authenticate
54
  session_id = s.cookies.get("session_id") or r.cookies.get("session_id")
55
  if not session_id:
56
  payload = {
@@ -61,32 +55,24 @@ def get_token_and_session():
61
  r2.raise_for_status()
62
  session_id = s.cookies.get("session_id") or r2.cookies.get("session_id")
63
  if not session_id:
64
- raise RuntimeError("Could not obtain session_id cookie.")
 
65
 
66
- # ุงุทุจุงุนู‡ูู… ููŠ ุงู„ู„ูˆุฌ
67
  print("ACCESS_TOKEN:", token)
68
  print("SESSION_ID:", session_id)
69
 
70
- return token, session_id
 
71
 
72
  @app.get("/run")
73
- def run_get_token_and_session_get():
74
- try:
75
- token, session_id = get_token_and_session()
76
- return {"ok": True, "access_token": token, "session_id": session_id}
77
- except Exception as e:
78
- # ุฑุฌู‘ุน 502 ุนุดุงู† ุชุจุงู† ู…ุดูƒู„ุฉ ุฎุงุฑุฌูŠุฉ ุจูˆุถูˆุญ
79
- raise HTTPException(status_code=502, detail=str(e))
80
 
81
- @app.post("/run")
82
- async def run_get_token_and_session_post(_req: Request):
83
- # ู†ูุณ ุงู„ุณู„ูˆูƒ ู„ู„ู€ POST
84
- try:
85
- token, session_id = get_token_and_session()
86
- return {"ok": True, "access_token": token, "session_id": session_id}
87
- except Exception as e:
88
- raise HTTPException(status_code=502, detail=str(e))
89
 
90
  @app.get("/ping")
91
  def ping():
 
92
  return {"pong": True}
 
 
1
  import os
 
 
2
  import requests
3
+ import sys
4
+ from fastapi import FastAPI
5
 
6
+ app = FastAPI()
7
+
8
+ BASE = "https://odoo.binrushd.care"
9
  AUTH_URL = f"{BASE}/api/auth/token"
10
  SESSION_AUTH_URL = f"{BASE}/web/session/authenticate"
11
 
12
+ # ุถุน ู‚ูŠู…ูƒ ุฃูˆ ุงุณุชุฎุฏู… ู…ุชุบูŠุฑุงุช ุจูŠุฆุฉ
13
  CF_ID = os.getenv("CF_ACCESS_CLIENT_ID", "0491b36d7dcabce5b04f1a53f347bb4e.access")
14
  CF_SECRET = os.getenv("CF_ACCESS_CLIENT_SECRET", "22152cb41b62393e159daaff7dce433006c3744c5850e6adc15fa3544bb5eb09")
15
  LOGIN = os.getenv("ODOO_LOGIN", "binrushd.automation@gmail.com")
16
  PASSWORD = os.getenv("ODOO_PASSWORD", "BR2025")
17
  DB_NAME = os.getenv("ODOO_DB", "BR_EMR_16.0_202401")
18
 
19
+ s = requests.Session()
20
+ s.headers.update({
21
+ "Accept": "*/*",
22
+ "Content-Type": "application/json",
23
+ # ู…ู‡ู…: ุจุฏูˆู† br ู„ุชูุงุฏูŠ brotli
24
+ "Accept-Encoding": "gzip, deflate",
25
+ "Connection": "keep-alive",
26
+ "CF-Access-Client-Id": CF_ID,
27
+ "CF-Access-Client-Secret": CF_SECRET,
28
+ })
 
 
 
29
 
30
+ def main():
31
+ # 1) ุงู„ุญุตูˆู„ ุนู„ู‰ access_token (ุงู„ู‚ูŠู… ุชูุฑุณู„ ูƒู‡ูŠุฏุฑ ูƒู…ุง ููŠ ุฅุนุฏุงุฏูƒ)
32
  auth_headers = {
33
  "CF-Access-Client-Id": CF_ID,
34
  "CF-Access-Client-Secret": CF_SECRET,
 
38
  }
39
  r = s.get(AUTH_URL, headers=auth_headers, timeout=(5, 30))
40
  r.raise_for_status()
41
+ data = r.json()
 
 
 
 
 
42
  token = data.get("access_token") or (data.get("data") or {}).get("access_token")
43
  if not token:
44
+ print("โŒ No access_token in response:", data)
45
+ sys.exit(1)
46
 
47
+ # 2) ู…ุญุงูˆู„ุฉ ุงู„ุชู‚ุงุท session_id ู…ู† Set-CookieุŒ ูˆุฅู† ู„ู… ูŠูˆุฌุฏ ู†ุนู…ู„ authenticate
48
  session_id = s.cookies.get("session_id") or r.cookies.get("session_id")
49
  if not session_id:
50
  payload = {
 
55
  r2.raise_for_status()
56
  session_id = s.cookies.get("session_id") or r2.cookies.get("session_id")
57
  if not session_id:
58
+ print("โŒ Could not obtain session_id cookie.")
59
+ sys.exit(1)
60
 
61
+ # ุงุทุจุนู‡ู… ู„ุงุณุชุฎุฏุงู…ู‡ู… ู„ุงุญู‚ู‹ุง ููŠ GAS
62
  print("ACCESS_TOKEN:", token)
63
  print("SESSION_ID:", session_id)
64
 
65
+ return {"ACCESS_TOKEN": token, "SESSION_ID": session_id}
66
+
67
 
68
  @app.get("/run")
69
+ def run():
70
+ """ูŠู†ูุฐ ุงู„ูƒูˆุฏ ุนู†ุฏ ุฃูŠ GET"""
71
+ result = main()
72
+ return {"ok": True, "data": result}
 
 
 
73
 
 
 
 
 
 
 
 
 
74
 
75
  @app.get("/ping")
76
  def ping():
77
+ """ุจุณูŠุทุฉ ู„ุงุฎุชุจุงุฑ ุงู„ุงุชุตุงู„"""
78
  return {"pong": True}