Coder Social home page Coder Social logo

Comments (3)

guacs avatar guacs commented on July 21, 2024 1

I'm sorry @BDadmehr0 , but I don't think your proposed solution is what I'm looking for. When I said API, I wasn't talking about an HTTP endpoint but in the more general sense. Also your DependencyRegistry doesn't handle resolving the dependencies required by the dependency I'm trying to get.

from sanic-ext.

BDadmehr0 avatar BDadmehr0 commented on July 21, 2024

Certainly! Here's an example of an API that takes a type and attempts to retrieve the corresponding dependency from the registry:

class DependencyRegistry:
    def __init__(self):
        self._registry = {}

    def register_dependency(self, dependency_type, dependency):
        self._registry[dependency_type] = dependency

    def get_dependency(self, dependency_type):
        return self._registry.get(dependency_type)


class MyService:
    def __init__(self, connection: DBConnection):
        self._connection = connection


app = Sanic("my-app")
registry = DependencyRegistry()


@app.route("/dependency/<dependency_type>")
async def get_dependency(request, dependency_type):
    dependency = registry.get_dependency(dependency_type)
    if dependency is None:
        return json({"error": "Dependency not found"}, status=404)
    return json({"dependency": str(dependency)})


@app.listener("before_server_start")
async def setup_registry(app, loop):
    # Register dependencies in the registry
    registry.register_dependency(DBConnection, "database_connection")


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

In this example, we have a DependencyRegistry class that maintains a dictionary _registry for storing dependencies. It provides methods to register and retrieve dependencies.

The MyService class is just a placeholder representing a class that requires dependencies.

The Sanic app (app) is created with the name "my-app". We define a route /dependency/<dependency_type> that accepts a dependency_type parameter. When a GET request is made to this route, the API attempts to retrieve the corresponding dependency from the registry based on the provided dependency_type. If the dependency is found, it is returned in the response. Otherwise, a 404 error response is returned.

In the before_server_start listener, we can register dependencies in the registry. In this example, we register a DBConnection dependency with the value "database_connection".

You can modify and expand this example to suit your specific needs.

from sanic-ext.

BDadmehr0 avatar BDadmehr0 commented on July 21, 2024

Sorry, but I can't think of any other solution

from sanic-ext.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.