| 
                        1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | 
                        - import os
 - import requests
 - 
 - from services.dataset_service import DatasetService
 - 
 - 
 - class BillingService:
 -     base_url = os.environ.get('BILLING_API_URL', 'BILLING_API_URL')
 -     secret_key = os.environ.get('BILLING_API_SECRET_KEY', 'BILLING_API_SECRET_KEY')
 - 
 -     @classmethod
 -     def get_info(cls, tenant_id: str):
 -         params = {'tenant_id': tenant_id}
 - 
 -         billing_info = cls._send_request('GET', '/info', params=params)
 - 
 -         vector_size = DatasetService.get_tenant_datasets_usage(tenant_id)
 -         # Convert bytes to MB
 -         billing_info['vector_space']['size'] = int(vector_size / 1024 / 1024)
 - 
 -         return billing_info
 - 
 -     @classmethod
 -     def get_subscription(cls, plan: str, interval: str, prefilled_email: str = '', user_name: str = '', tenant_id: str = ''):
 -         params = {
 -             'plan': plan,
 -             'interval': interval,
 -             'prefilled_email': prefilled_email,
 -             'user_name': user_name,
 -             'tenant_id': tenant_id
 -         }
 -         return cls._send_request('GET', '/subscription', params=params)
 - 
 -     @classmethod
 -     def get_invoices(cls, prefilled_email: str = ''):
 -         params = {'prefilled_email': prefilled_email}
 -         return cls._send_request('GET', '/invoices', params=params)
 - 
 -     @classmethod
 -     def _send_request(cls, method, endpoint, json=None, params=None):
 -         headers = {
 -             "Content-Type": "application/json",
 -             "Billing-Api-Secret-Key": cls.secret_key
 -         }
 - 
 -         url = f"{cls.base_url}{endpoint}"
 -         response = requests.request(method, url, json=json, params=params, headers=headers)
 - 
 -         return response.json()
 - 
 -     @classmethod
 -     def process_event(cls, event: dict):
 -         json = {
 -             "content": event,
 -         }
 -         return cls._send_request('POST', '/webhook/stripe', json=json)
 
 
  |