File size: 7,843 Bytes
bb7a5d3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
from flask import Flask, request, jsonify
import requests
from flask_cors import CORS
from functools import lru_cache
import concurrent.futures

app = Flask(__name__)
CORS(app)

# Function to get top header detail
@lru_cache(maxsize=128)
def get_top_header_detail(id):
    url = f"https://www.urbanpro.com/dashboardApi/topHeaderDetail?id={id}"
    headers = {
        "Host": "www.urbanpro.com",
        "Connection": "keep-alive",
        "requestType": "xhr",
        "pragma": "no-cache",
        "sec-ch-ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
        "DNT": "1",
        "sec-ch-ua-mobile": "?0",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
        "Content-Type": "application/json",
        "cache-control": "no-cache",
        "sec-ch-ua-platform": "\"Windows\"",
        "Accept": "*/*",
        "Sec-Fetch-Site": "same-origin",
        "Sec-Fetch-Mode": "cors",
        "Sec-Fetch-Dest": "empty",
        "Accept-Encoding": "gzip, deflate, br",
        "Accept-Language": "en-US,en;q=0.9,hi;q=0.8",
        "Cookie": "ApplicationGatewayAffinityCORS=59e9aaa731d02c5e07d5f1c3645d8b55; ApplicationGatewayAffinity=59e9aaa731d02c5e07d5f1c3645d8b55; JSESSIONID=2E1FB430F8F6B840D2536AEE40B2A90A; vis=8497ede2-9619-4a8d-8ea2-b31cf32179f2; referrer=seo%7Cwww.google.com%7C%7C%2Flogin%7C%7C; _gcl_au=1.1.758965275.1726809695; _cc=accept; _fbp=fb.1.1726809700440.451265153444350329; grails_remember_me=a3VzdW1rdW1hcmlwYW5kZXkxMkBnbWFpbC5jb206MTc1NzkxMTkxMDA5NzoyNmFkNzE1NzdkZjZjNjQ2NWVmNGMxZGMzOGNmYTY3NQ; city=Delhi; X-Auth-Token=eyJhbGciOiJIUzI1NiJ9.eyJwcmluY2lwYWwiOiJINHNJQUFBQUFBQUFBSlZTdTI0VFFSUzlObzZDWkFrU0pKQW9URU9RS05EYVhqOEF1UUZIQmdsdEVoVGpKa2lnOGU3c012SHN6REtQeEc2UUt5aFNCQUdSRVB4Q1N2NENHajRBUVVHYmhvYVd1NXZIR3BxSXFVWjN6cDV6N2ptN2Z3QnpXa0VqVW9SeDdTVGNSa3c0T2xGTVJKcjZWakV6Y2F5bUtxQW1ROXpQZ0FPY3dPRXBGS0hnUVpFRkJpNTRtMlNMVkRrUlVYVnR1RWw5MHhrcmNLV0tqaGhEUldLNkxkWElPZUgycGFKXC9DZVRVaFE5Rm1OK0FSZUw3MGdxektrVnZuREJGZ3cxWXlHZWU5RWZwNktLUEwxUVlScmllaGM1VFFZYWNCaDZVaVRYUEpLb3lxZzJjUHpSckRlUFZQalVkRDg0bVJHdDA5ODhtZlpOYVQ5OVRtd0kzZUE0dm9EUk9Dbmd3dTJzcDFFbDVuR1hKT1c3TnBOQkxBeEhMZ0lVc0ZVZithZVhOMTkyUDAwRVJBRE81Y2ZvMytmeHlGNmFmblwveStrZ1ZkOEExY21yR2V3enJqQk4wczVzeVBGRTJWdjcxXC8rSGJ2NE5Yak02aWNJdTc5Zng5TGQ0K1NteXpMT0NHS0dEblRFZEp1bDlJN2tuZFBKejl1WWVMMFdaeHdpbitVTURRNGtjaUpjZDJTa3Z3NGJ3UGw5VFd2OTNTbHQ5THRyWThOWEFcL2J0MnVrUWQxbU9HelYzWnROV21zMDYyR3QzYXFIdzdicis0MWJidGlrYmRkQVpXUzFqVWMySm9vbFJBUjBVbmZ2UkRGdWlLWmlOSDR1eXkwdDNQRWsxcjN6OFwvV1gzYXZmMGNRRG1Oc2kzRktzYlNFSHJkcDRTTlhMXC9iMUsrZDJQblN5RXpQZW4xcThcL0g3Ylp1bFFEQUFBPSIsInN1YiI6Imt1c3Vta3VtYXJpcGFuZGV5MTJAZ21haWwuY29tIiwicm9sZXMiOlsiUk9MRV9NRU1CRVIiXSwiZXhwIjoyMDM3ODQ3OTEwLCJpYXQiOjE3MjY4MDc5MTB9.m1vT-0Jk0aFjFRCsDCuZSZpET8AvUwexOJPRBI39_mw; _gid=GA1.2.1322345867.1726809736; _ga=GA1.1.63626453.1726809700; ph_phc_xgxrdGtjJy28xcQu3knyB36WFF98FkBr6EWhkE0qmWF_posthog=%7B%22distinct_id%22%3A%2201920de0-f3be-7e04-ac7f-6064c2836de8%22%2C%22%24sesid%22%3A%5B1726810128730%2C%2201920de0-f3bc-7ba7-bb85-5d9bf3d9afb4%22%2C1726809699260%5D%7D; _ga_PZ985ML4Z1=GS1.1.1726809699.1.1.1726810129.23.0.0",  # Replace with actual cookies
    }
    response = requests.get(url, headers=headers)
    return response.json()

# Function to get virtual number
@lru_cache(maxsize=128)
def get_virtual_number(id, seeker_member_id):
    url = f"https://www.urbanpro.com/virtualNumberAllocation/getVirtualNumberToCall?callMember={seeker_member_id}&enquiryId={id}"
    headers = {
        "Host": "www.urbanpro.com",
        "Connection": "keep-alive",
        "requestType": "xhr",
        "pragma": "no-cache",
        "sec-ch-ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
        "DNT": "1",
        "sec-ch-ua-mobile": "?0",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
        "Content-Type": "application/json",
        "cache-control": "no-cache",
        "sec-ch-ua-platform": "\"Windows\"",
        "Accept": "*/*",
        "Sec-Fetch-Site": "same-origin",
        "Sec-Fetch-Mode": "cors",
        "Sec-Fetch-Dest": "empty",
        "Accept-Encoding": "gzip, deflate, br",
        "Accept-Language": "en-US,en;q=0.9,hi;q=0.8",
        "Cookie": "JSESSIONID=F091540D532461FE2F4550A299162EB1; vis=90d99535-7a89-4de2-b0aa-41c3d9ac796f; referrer=direct%7Cthinkvidya%7C%2Fregister%2FproviderDashboard%7C%7C%7C; GCILB="23f8b9413d8c6a92"; _gcl_au=1.1.274210954.1733182145; _cc=accept; _ga=GA1.1.903490252.1733182151; _fbp=fb.1.1733182152277.67239322565084397; abt=132; grails_remember_me=dGliYWtleTQ2NEBqb25lc3BhbC5jb206MTc2NDI4NjQzMzM1MDowNzJlNjJlNzM3OWNkN2VlYjg2MjkyMzZmNmE5ZWM1YQ; X-Auth-Token=eyJhbGciOiJIUzI1NiJ9.eyJwcmluY2lwYWwiOiJINHNJQUFBQUFBQUFBSlZTUDJcL1RRQno5T2FRcVVpUm9rUUF4bElVaU1TREhOQ0VoeWdLcEFoSnlXOVNRcFVpZzhcL2xzTGpuZm1idHpteXdvRXd3ZGlvQWlCRitobjRDdkFFTGlBeUFZV0R1emN1ZitjV0NwdU9uMHUrZjMzdTg5NyszRGpKSlFpeVdpVExrcHkyTEtYWlZLeW1ORmNDYXBIcnVaSWpJa09rZmN5NEY5TTRHRDQ1VEE4YUZFUXczblwvQUhhUkZXR2VGeGRDd1lFNlwvWkl3cEtROFNGakpGRkN0b1FjdXNmY1dFanlsMEJCN1h3b3dld0d6Q09NUmNiMXF1RGRVVW9sQ1RkZ3JwajVBZ1wvdDZEdzJMNFJyaXBpYWhzNFNqZ0pHUWg4cUtOTlBoVkdsUkdrNGUyQTIwNVJWZTBTM2ZUaWRJcVdNdTM4MjZXbHIzYjVibTl4czhBeWVRM21VT3VhWTdLNWFxR3Q1M0dYQm1ObWFDcTRXK3p3UklZMm9GVGY4azRYWDMzWStUdm9sQUpQSjlaT1wvS2VhWE9qRDVcL1BqMzVUeG9CMnU0TUdXOWdMVkhxWEV6WHpBXC9sTVFxZjNcL1wvNE0zdVwvc3RIcDR5eVJkejlcL3o0Vzd4d21OMTRXU1lvazBtS3FJME83VmJaM1E5NDVtZnlvaGJIYm8wbktpUG1qdUNiaHNVUkJiTll0UzhHTzh0WlFXVlwvenUwOVd1aXVkN3ZwSXc3WElhOVJ2WU5MQ1ViUGxOV3YxSlM5bzFGcTNjT0RWd3B1UkY0UmhvOW4wYXBHR2k1b0dhRWpHOVViOTlrQndvbExFakozRVdENlRKMmFyZG4xaGl0Nys5ZXJMenBVZlJ2NCt6R3dpbGhGVDJGd0JXczJTZ01nWGU3c0xsYmNcL3RcL1AxYzhkZlA3MzdBeXNjSWhST0F3QUEiLCJzdWIiOiJ0aWJha2V5NDY0QGpvbmVzcGFsLmNvbSIsInJvbGVzIjpbIlJPTEVfTUVNQkVSIl0sImV4cCI6MjA0NDIyMjQzMywiaWF0IjoxNzMzMTgyNDMzfQ.xlM9xUNLxuhdZSyfROB37T8w65cslmL2Dle_Flmco3Y; city=Bangalore; ph_phc_xgxrdGtjJy28xcQu3knyB36WFF98FkBr6EWhkE0qmWF_posthog=%7B%22distinct_id%22%3A%22019389b4-e1c7-721d-b640-28ea46155f1c%22%2C%22%24sesid%22%3A%5B1733182517190%2C%22019389b4-e1c2-7af4-8e60-f2f6a8af5538%22%2C1733182153154%5D%2C%22%24initial_person_info%22%3A%7B%22r%22%3A%22%24direct%22%2C%22u%22%3A%22https%3A%2F%2Fwww.urbanpro.com%2Flogin%22%7D%7D; _ga_PZ985ML4Z1=GS1.1.1733182151.1.1.1733182517.18.0.0",
    }
    response = requests.get(url, headers=headers)
    return response.json()

@app.route("/generate_response", methods=["POST"])
def generate_response():
    try:
        data = request.get_json()
        id = data.get("id")

        # First API call to get top header detail
        top_header_data = get_top_header_detail(id)
        seeker_member_id = top_header_data["data"]["seekerMemberId"]

        # Second API call to get virtual number
        virtual_number_data = get_virtual_number(id, seeker_member_id)
        actual_number = virtual_number_data.get("actualNumber")
        virtual_number = virtual_number_data.get("virtualNumber")

        # If actual number is None, return the virtual number
        if actual_number is None:
            return jsonify({
                "number": virtual_number,
                "isVirtual": True  # Indicate it's a virtual number
            })
        else:
            return jsonify({
                "number": actual_number,
                "isVirtual": False  # Indicate it's an actual number
            })

    except Exception as e:
        print('Error processing request. Request data:', request.get_json())
        print('Error details:', str(e))
        return jsonify({"error": str(e)}), 500

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=7860, debug=True)