mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
33 lines
1.1 KiB
Python
33 lines
1.1 KiB
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 (eg images or tensors)"""
|
||
|
|
||
|
@abstractmethod
|
||
|
def get_image_url(self, image_type: ImageType, image_name: str) -> str:
|
||
|
"""Gets the URL for an image"""
|
||
|
pass
|
||
|
|
||
|
@abstractmethod
|
||
|
def get_thumbnail_url(self, image_type: ImageType, image_name: str) -> str:
|
||
|
"""Gets the URL for an image's 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) -> str:
|
||
|
image_basename = os.path.basename(image_name)
|
||
|
return f"{self._base_url}/images/{image_type.value}/{image_basename}"
|
||
|
|
||
|
def get_thumbnail_url(self, image_type: ImageType, image_name: str) -> str:
|
||
|
thumbnail_basename = get_thumbnail_name(os.path.basename(image_name))
|
||
|
return f"{self._base_url}/images/{image_type.value}/thumbnails/{thumbnail_basename}"
|