Advertisement
Guest User

builder io issue

a guest
Apr 5th, 2024
12
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.74 KB | None | 0 0
  1. # Python
  2. import requests, json
  3.  
  4. # Django
  5. from django.core.cache import caches
  6.  
  7. # Project
  8. from utilities import notify
  9.  
  10. '''
  11. Our page builder is builder.io
  12. '''
  13.  
  14. API_KEY = "0e283f9aec57480a988bd13b48a6526f"
  15. URL_PREFIX = "https://www.ethikdo.co"
  16. cache = caches['cms']
  17.  
  18.  
  19.  
  20. def get(endpoint="", params={}):
  21.     paramstring = ""
  22.     if params:
  23.         for key, value in params.items():
  24.             paramstring += f"&{key}={value}"
  25.     response = requests.get(f"https://cdn.builder.io/api/{endpoint}?apiKey={API_KEY}{paramstring}")
  26.     try:
  27.         return response.json()
  28.     except json.decoder.JSONDecodeError:
  29.         return response.text
  30.  
  31.  
  32.  
  33. def page_html(url):
  34.     html = cache.get(url)
  35.     if not html:
  36.         params = {
  37.             'url': URL_PREFIX + url + '/',
  38.             'includeUnpublished': 'true',
  39.         }
  40.         try:
  41.             html = get("v1/html/page", params)['data']['html']
  42.         except KeyError:
  43.             html = "Page could not be loaded"
  44.         else:
  45.             cache.set(url, html)
  46.     return html
  47.  
  48.  
  49.  
  50. def pages(includeUnpublished=False, from_cache=True):
  51.     pages = cache.get('pages') if from_cache else None
  52.     if not pages :
  53.         pages = {}
  54.         params = {'omit': 'data.blocks',}
  55.         if includeUnpublished:
  56.             params['includeUnpublished'] = "true"
  57.         pages_data = get("v2/content/page", params)
  58.         page_list = pages_data.get('results', None) if pages_data else None
  59.         if page_list:
  60.             for page in page_list:
  61.                 try:
  62.                     url = page['data']['url']
  63.                     pages[url] = page['data']
  64.                     pages[url]['html'] = page_html(url)
  65.                 except KeyError as e:
  66.                     exception = e.__class__.__name__
  67.                     notify(f"An error occured when loading a builder.io page. `{exception}: {e}`", 'alerts')
  68.             cache.set('pages', pages)
  69.         else:
  70.             notify(f"An error occured when loading the builder.io pages. `{str(page_list)}`", 'alerts')
  71.     return pages
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement