code: def do_GET(self):
      try:
          _, path = self.path.split("/", 1)
          try:
              prefix, suffix = path.split("/", 1)
          except:
              prefix = path
              suffix = None
      except:
          prefix = None
      if prefix in self.ROUTES:
          self.ROUTES[prefix](self, suffix)
      else:
          self._response(open(VIEWER_PATH).read().encode("utf-8"))
  
imports: import os
  import json
  from http.server import BaseHTTPRequestHandler
  from threading import Thread
  from multiprocessing import Pipe
  from multiprocessing.connection import Connection
  from urllib.parse import urlparse
  import time
  from .card_client import CardContainer
  from .exception import CardNotPresentException
  from .card_resolver import resolve_paths_from_task
  from metaflow.metaflow_config import DATASTORE_LOCAL_DIR
  from metaflow import namespace
  from metaflow.exception import CommandException, MetaflowNotFound, MetaflowNamespaceMismatch
label_desc: Use image node_id 1 for calling the CardViewerRoutes obj's underlying member method code with example usage: obj.do_GET() without return types