eshan6704 commited on
Commit
8bb2b58
·
verified ·
1 Parent(s): 331bb46

Update app/app.py

Browse files
Files changed (1) hide show
  1. app/app.py +5 -162
app/app.py CHANGED
@@ -3,23 +3,7 @@ from fastapi.responses import HTMLResponse
3
  from fastapi.middleware.cors import CORSMiddleware
4
  from fastapi.middleware.gzip import GZipMiddleware
5
  from pydantic import BaseModel
6
-
7
- # -------------------------------------------------------
8
- # Local modules
9
- # -------------------------------------------------------
10
- from . import common
11
- from . import stock
12
- from . import indices_html as indices
13
- from . import index_live_html as live
14
- from . import preopen_html as pre
15
- from . import eq_html as eq
16
- from . import bhavcopy_html as bhav
17
- from . import build_nse_fno as fno
18
- from . import nsepythonmodified as ns
19
- from . import yahooinfo
20
- from . import screener # screener owns its map
21
-
22
-
23
  # -------------------------------------------------------
24
  # FastAPI app
25
  # -------------------------------------------------------
@@ -57,147 +41,6 @@ def health():
57
  return {"status": "ok", "service": "backend alive"}
58
 
59
 
60
- # -------------------------------------------------------
61
- # REQ TYPE MAP (stock & index only)
62
- # -------------------------------------------------------
63
- REQ_TYPE_MAP = {
64
- "stock": [
65
- "info", "intraday", "daily", "nse_eq", "qresult",
66
- "result", "balance", "cashflow", "dividend",
67
- "split", "other", "stock_hist"
68
- ],
69
- "index": [
70
- "indices", "open", "preopen", "fno",
71
- "fiidii", "events",
72
- "index_highlow", "stock_highlow", "bhav",
73
- "largedeals", "bulkdeals", "blockdeals",
74
- "most_active", "index_history",
75
- "Hlargedeals", "pe_pb",
76
- "total_returns"
77
- ],
78
- }
79
-
80
-
81
- # -------------------------------------------------------
82
- # HTML builder for req_type discovery
83
- # -------------------------------------------------------
84
- def build_req_type_list_html():
85
- html = ["<div id='req_type_list'>"]
86
-
87
- # STOCK & INDEX
88
- for mode, items in REQ_TYPE_MAP.items():
89
- html.append(f"<h3>{mode.upper()}</h3><ul>")
90
- for it in items:
91
- html.append(
92
- f"<li class='{mode}-req' data-mode='{mode}'>{it}</li>"
93
- )
94
- html.append("</ul>")
95
-
96
- # SCREENER (keys extracted from screener.py)
97
- html.append("<h3>SCREENER</h3><ul>")
98
- for key in screener.SCREENER_MAP.keys():
99
- html.append(
100
- f"<li class='screener-req' data-mode='screener'>{key}</li>"
101
- )
102
- html.append("</ul></div>")
103
-
104
- return "".join(html)
105
-
106
-
107
- # -------------------------------------------------------
108
- # STOCK handler
109
- # -------------------------------------------------------
110
- def handle_stock(req: FetchRequest):
111
- t = req.req_type.lower()
112
-
113
- if t == "info":
114
- return yahooinfo.fetch_info(req.name)
115
- if t == "intraday":
116
- return stock.fetch_intraday(req.name)
117
- if t == "daily":
118
- return stock.fetch_daily(req.name, req.date_end)
119
- if t == "nse_eq":
120
- return eq.build_eq_html(req.name)
121
- if t == "qresult":
122
- return stock.fetch_qresult(req.name)
123
- if t == "result":
124
- return stock.fetch_result(req.name)
125
- if t == "balance":
126
- return stock.fetch_balance(req.name)
127
- if t == "cashflow":
128
- return stock.fetch_cashflow(req.name)
129
- if t == "dividend":
130
- return stock.fetch_dividend(req.name)
131
- if t == "split":
132
- return stock.fetch_split(req.name)
133
- if t == "other":
134
- return stock.fetch_other(req.name)
135
- if t == "stock_hist":
136
- return ns.nse_stock_hist(
137
- req.date_start, req.date_end, req.name
138
- ).to_html()
139
-
140
- return common.wrap(f"<h3>Unhandled stock req_type: {t}</h3>")
141
-
142
-
143
- # -------------------------------------------------------
144
- # INDEX handler
145
- # -------------------------------------------------------
146
- def handle_index(req: FetchRequest):
147
- t = req.req_type.lower()
148
-
149
- if t == "indices":
150
- return indices.build_indices_html()
151
- if t == "open":
152
- return live.build_index_live_html()
153
- if t == "preopen":
154
- return pre.build_preopen_html()
155
- if t == "fno":
156
- return fno.nse_fno_html(req.date_end, req.name)
157
- if t == "fiidii":
158
- return ns.nse_fiidii()
159
- if t == "events":
160
- return ns.nse_events()
161
-
162
- if t == "index_highlow":
163
- return ns.nse_highlow(req.date_end)
164
- if t == "stock_highlow":
165
- return ns.stock_highlow(req.date_end)
166
- if t == "bhav":
167
- return bhav.build_bhavcopy_html(req.date_end)
168
- if t == "largedeals":
169
- return ns.nse_largedeals()
170
- if t == "bulkdeals":
171
- return ns.nse_bulkdeals()
172
- if t == "blockdeals":
173
- return ns.nse_blockdeals()
174
- if t == "most_active":
175
- return ns.nse_most_active()
176
- if t == "index_history":
177
- return ns.index_history("NIFTY", req.date_start, req.date_end)
178
- if t == "Hlargedeals":
179
- return ns.nse_largedeals_historical(
180
- req.date_start, req.date_end
181
- )
182
- if t == "pe_pb":
183
- return ns.index_pe_pb_div(
184
- "NIFTY", req.date_start, req.date_end
185
- )
186
- if t == "total_returns":
187
- return ns.index_total_returns(
188
- "NIFTY", req.date_start, req.date_end
189
- )
190
-
191
- return common.wrap(f"<h3>Unhandled index req_type: {t}</h3>")
192
-
193
-
194
- # -------------------------------------------------------
195
- # SCREENER handler
196
- # -------------------------------------------------------
197
- def handle_screener(req: FetchRequest):
198
- return screener.fetch_screener(req.req_type.lower())
199
-
200
-
201
  # -------------------------------------------------------
202
  # Main API
203
  # -------------------------------------------------------
@@ -208,16 +51,16 @@ def fetch_data(req: FetchRequest):
208
 
209
  # ✅ Used by frontend on page load
210
  if mode == "list":
211
- return HTMLResponse(content=build_req_type_list_html())
212
 
213
  if mode == "stock":
214
- html = handle_stock(req)
215
 
216
  elif mode == "index":
217
- html = handle_index(req)
218
 
219
  elif mode == "screener":
220
- html = handle_screener(req)
221
 
222
  else:
223
  raise HTTPException(status_code=400, detail="Invalid mode")
 
3
  from fastapi.middleware.cors import CORSMiddleware
4
  from fastapi.middleware.gzip import GZipMiddleware
5
  from pydantic import BaseModel
6
+ from . import router
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  # -------------------------------------------------------
8
  # FastAPI app
9
  # -------------------------------------------------------
 
41
  return {"status": "ok", "service": "backend alive"}
42
 
43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  # -------------------------------------------------------
45
  # Main API
46
  # -------------------------------------------------------
 
51
 
52
  # ✅ Used by frontend on page load
53
  if mode == "list":
54
+ return HTMLResponse(content=router.build_req_type_list_html())
55
 
56
  if mode == "stock":
57
+ html = router.handle_stock(req)
58
 
59
  elif mode == "index":
60
+ html = router.handle_index(req)
61
 
62
  elif mode == "screener":
63
+ html = router.handle_screener(req)
64
 
65
  else:
66
  raise HTTPException(status_code=400, detail="Invalid mode")