visual-search 0.1.0

Visual search engine for images using Deep Learning models to extract features
Documentation
import requests
from models import *

class BearerAuth(requests.auth.AuthBase):

    def __init__(self, token):
        self.token = token

    def __call__(self, r):
        r.headers["Authorization"] = "Bearer " + self.token
        return r

def remove_none(obj):
    if isinstance(obj, (list, tuple, set)):
        return type(obj)(remove_none(x) for x in obj if x is not None)
    elif isinstance(obj, dict):
        return type(obj)((remove_none(k), remove_none(v))
                         for k, v in obj.items() if k is not None and v is not None)
    else:
        return obj

class RecoAIVisualSearch():

    def __init__(self, bearer_token, address):
        self.bearer_token = bearer_token
        self.address = address

    def generic_request(self, obj, endpoint):
        json = remove_none(obj.to_dict())
        response = requests.post(url=self.address + endpoint,
                                 json=json,
                                 auth=BearerAuth(self.bearer_token))
        return response

    def upsert_collection(self, upsert_collection: UpsertCollection):
        return self.generic_request(upsert_collection, "/upsert_collection")

    def remove_collection(self, remove_collection: RemoveCollection):
        return self.generic_request(remove_collection, "/remove_collection")

    def add_image(self, add_image: AddImage):
        return self.generic_request(add_image, "/add_image")

    def remove_image(self, remove_image: RemoveImage):
        return self.generic_request(remove_image, "/remove_image")

    def search_image(self, search_image: SearchImage):
        return self.generic_request(search_image, "/search_image")