firebase / firebase-admin-python

Firebase Admin Python SDK
https://firebase.google.com/docs/admin/setup
Apache License 2.0
988 stars 300 forks source link

[FR] Add WebApps support to project_management #772

Open mcosta74 opened 3 months ago

mcosta74 commented 3 months ago

Is your feature request related to a problem? Please describe. The project_management package miss API to work with webApps resource

Describe the solution you'd like API to work with WebApps similar to the ones available for iOSApps and AndroidApps

Describe alternatives you've considered The single alternative I considered was to use the REST requests by hands

Additional context I implemented a bare minimum solution just extending _ProjectManagementService

from firebase_admin import project_management

class WebApp:
    def __init__(self, app_id, service) -> None:
        self._app_id = app_id
        self._service = service

    @property
    def app_id(self):
        return self._app_id

    def get_metadata(self):
        return self._service.get_web_app_metadata(self._app_id)

    def get_config(self):
        return self._service.get_web_app_config(self._app_id)

class WebAppsService(project_management._ProjectManagementService):
    WEB_APPS_RESOURCE_NAME = 'webApps'

    def __init__(self, app):
        super().__init__(app)

    def list_web_apps(self) -> list[WebApp]:
        return self._list_apps(
            platform_resource_name=WebAppsService.WEB_APPS_RESOURCE_NAME,
            app_class=WebApp
        )

    def get_web_app_metadata(self, app_id):
        path = '/v1beta1/projects/-/{0}/{1}'.format(
            WebAppsService.WEB_APPS_RESOURCE_NAME,
            app_id,
        )
        return self._make_request('get', path)

    def get_web_app_config(self, app_id):
        path = '/v1beta1/projects/-/{0}/{1}/config'.format(
            WebAppsService.WEB_APPS_RESOURCE_NAME,
            app_id,
        )
        return self._make_request('get', path)

but it can be completed with all APIs

google-oss-bot commented 3 months ago

I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.