InvokeAI/invokeai/app/services/urls.py
2023-05-24 11:30:47 -04:00

31 lines
936 B
Python

import os
from abc import ABC, abstractmethod
from invokeai.app.models.image import ImageType
from invokeai.app.util.thumbnails import get_thumbnail_name
class UrlServiceBase(ABC):
"""Responsible for building URLs for resources."""
@abstractmethod
def get_image_url(
self, image_type: ImageType, image_name: str, thumbnail: bool = False
) -> str:
"""Gets the URL for an image or thumbnail."""
pass
class LocalUrlService(UrlServiceBase):
def __init__(self, base_url: str = "api/v1"):
self._base_url = base_url
def get_image_url(
self, image_type: ImageType, image_name: str, thumbnail: bool = False
) -> str:
image_basename = os.path.basename(image_name)
if thumbnail:
return f"{self._base_url}/images/{image_type.value}/{image_basename}/thumbnail"
return f"{self._base_url}/images/{image_type.value}/{image_basename}/image"