port-ocean 0.12.2.dev21__tar.gz → 0.12.2.dev23__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of port-ocean might be problematic. Click here for more details.

Files changed (146) hide show
  1. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/PKG-INFO +1 -1
  2. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/context/ocean.py +5 -0
  3. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/ocean.py +33 -29
  4. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/pyproject.toml +1 -1
  5. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/LICENSE.md +0 -0
  6. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/README.md +0 -0
  7. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/__init__.py +0 -0
  8. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/bootstrap.py +0 -0
  9. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/__init__.py +0 -0
  10. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cli.py +0 -0
  11. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/commands/__init__.py +0 -0
  12. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/commands/defaults/__init___.py +0 -0
  13. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/commands/defaults/clean.py +0 -0
  14. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/commands/defaults/dock.py +0 -0
  15. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/commands/defaults/group.py +0 -0
  16. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/commands/list_integrations.py +0 -0
  17. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/commands/main.py +0 -0
  18. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/commands/new.py +0 -0
  19. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/commands/pull.py +0 -0
  20. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/commands/sail.py +0 -0
  21. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/commands/version.py +0 -0
  22. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/__init__.py +0 -0
  23. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/cookiecutter.json +0 -0
  24. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/extensions.py +0 -0
  25. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/hooks/post_gen_project.py +0 -0
  26. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.dockerignore +0 -0
  27. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.env.example +0 -0
  28. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.gitignore +0 -0
  29. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/.gitignore +0 -0
  30. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/blueprints.json +0 -0
  31. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/resources/port-app-config.yml +0 -0
  32. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/.port/spec.yaml +0 -0
  33. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CHANGELOG.md +0 -0
  34. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/CONTRIBUTING.md +0 -0
  35. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/Dockerfile +0 -0
  36. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/README.md +0 -0
  37. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/changelog/.gitignore +0 -0
  38. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/debug.py +0 -0
  39. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/main.py +0 -0
  40. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/poetry.toml +0 -0
  41. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/pyproject.toml +0 -0
  42. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/sonar-project.properties +0 -0
  43. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/__init__.py +0 -0
  44. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/cookiecutter/{{cookiecutter.integration_slug}}/tests/test_sample.py +0 -0
  45. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/cli/utils.py +0 -0
  46. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/clients/__init__.py +0 -0
  47. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/clients/port/__init__.py +0 -0
  48. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/clients/port/authentication.py +0 -0
  49. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/clients/port/client.py +0 -0
  50. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/clients/port/mixins/__init__.py +0 -0
  51. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/clients/port/mixins/blueprints.py +0 -0
  52. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/clients/port/mixins/entities.py +0 -0
  53. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/clients/port/mixins/integrations.py +0 -0
  54. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/clients/port/mixins/migrations.py +0 -0
  55. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/clients/port/retry_transport.py +0 -0
  56. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/clients/port/types.py +0 -0
  57. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/clients/port/utils.py +0 -0
  58. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/config/__init__.py +0 -0
  59. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/config/base.py +0 -0
  60. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/config/dynamic.py +0 -0
  61. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/config/settings.py +0 -0
  62. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/consumers/__init__.py +0 -0
  63. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/consumers/kafka_consumer.py +0 -0
  64. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/context/__init__.py +0 -0
  65. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/context/event.py +0 -0
  66. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/context/resource.py +0 -0
  67. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/__init__.py +0 -0
  68. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/defaults/__init__.py +0 -0
  69. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/defaults/clean.py +0 -0
  70. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/defaults/common.py +0 -0
  71. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/defaults/initialize.py +0 -0
  72. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/event_listener/__init__.py +0 -0
  73. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/event_listener/base.py +0 -0
  74. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/event_listener/factory.py +0 -0
  75. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/event_listener/http.py +0 -0
  76. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/event_listener/kafka.py +0 -0
  77. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/event_listener/once.py +0 -0
  78. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/event_listener/polling.py +0 -0
  79. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/handlers/__init__.py +0 -0
  80. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/handlers/base.py +0 -0
  81. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/handlers/entities_state_applier/__init__.py +0 -0
  82. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/handlers/entities_state_applier/base.py +0 -0
  83. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/handlers/entities_state_applier/port/__init__.py +0 -0
  84. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/handlers/entities_state_applier/port/applier.py +0 -0
  85. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/handlers/entities_state_applier/port/get_related_entities.py +0 -0
  86. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/handlers/entities_state_applier/port/order_by_entities_dependencies.py +0 -0
  87. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/handlers/entity_processor/__init__.py +0 -0
  88. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/handlers/entity_processor/base.py +0 -0
  89. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/handlers/entity_processor/jq_entity_processor.py +0 -0
  90. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/handlers/port_app_config/__init__.py +0 -0
  91. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/handlers/port_app_config/api.py +0 -0
  92. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/handlers/port_app_config/base.py +0 -0
  93. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/handlers/port_app_config/models.py +0 -0
  94. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/handlers/resync_state_updater/__init__.py +0 -0
  95. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/handlers/resync_state_updater/updater.py +0 -0
  96. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/integrations/__init__.py +0 -0
  97. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/integrations/base.py +0 -0
  98. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/integrations/mixins/__init__.py +0 -0
  99. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/integrations/mixins/events.py +0 -0
  100. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/integrations/mixins/handler.py +0 -0
  101. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/integrations/mixins/sync.py +0 -0
  102. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/integrations/mixins/sync_raw.py +0 -0
  103. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/integrations/mixins/utils.py +0 -0
  104. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/models.py +0 -0
  105. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/ocean_types.py +0 -0
  106. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/core/utils.py +0 -0
  107. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/exceptions/__init__.py +0 -0
  108. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/exceptions/api.py +0 -0
  109. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/exceptions/base.py +0 -0
  110. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/exceptions/clients.py +0 -0
  111. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/exceptions/context.py +0 -0
  112. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/exceptions/core.py +0 -0
  113. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/exceptions/port_defaults.py +0 -0
  114. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/exceptions/utils.py +0 -0
  115. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/helpers/__init__.py +0 -0
  116. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/helpers/async_client.py +0 -0
  117. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/helpers/retry.py +0 -0
  118. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/log/__init__.py +0 -0
  119. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/log/handlers.py +0 -0
  120. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/log/logger_setup.py +0 -0
  121. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/log/sensetive.py +0 -0
  122. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/middlewares.py +0 -0
  123. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/py.typed +0 -0
  124. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/run.py +0 -0
  125. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/sonar-project.properties +0 -0
  126. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/tests/__init__.py +0 -0
  127. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/tests/clients/port/mixins/test_entities.py +0 -0
  128. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/tests/conftest.py +0 -0
  129. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/tests/core/handlers/entity_processor/test_jq_entity_processor.py +0 -0
  130. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/tests/helpers/__init__.py +0 -0
  131. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/tests/helpers/fixtures.py +0 -0
  132. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/tests/helpers/integration.py +0 -0
  133. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/tests/helpers/ocean_app.py +0 -0
  134. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/tests/helpers/port_client.py +0 -0
  135. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/tests/helpers/smoke_test.py +0 -0
  136. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/tests/test_smoke.py +0 -0
  137. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/utils/__init__.py +0 -0
  138. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/utils/async_http.py +0 -0
  139. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/utils/async_iterators.py +0 -0
  140. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/utils/cache.py +0 -0
  141. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/utils/misc.py +0 -0
  142. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/utils/queue_utils.py +0 -0
  143. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/utils/repeat.py +0 -0
  144. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/utils/signal.py +0 -0
  145. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/utils/time.py +0 -0
  146. {port_ocean-0.12.2.dev21 → port_ocean-0.12.2.dev23}/port_ocean/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: port-ocean
3
- Version: 0.12.2.dev21
3
+ Version: 0.12.2.dev23
4
4
  Summary: Port Ocean is a CLI tool for managing your Port projects.
5
5
  Home-page: https://app.getport.io
6
6
  Keywords: ocean,port-ocean,port
@@ -1,6 +1,7 @@
1
1
  from typing import Callable, TYPE_CHECKING, Any, Literal, Union
2
2
 
3
3
  from pydantic.main import BaseModel
4
+ from starlette.routing import Router
4
5
  from werkzeug.local import LocalProxy
5
6
 
6
7
  from port_ocean.clients.port.types import UserAgentType
@@ -43,6 +44,10 @@ class PortOceanContext:
43
44
  def config(self) -> "IntegrationConfiguration":
44
45
  return self.app.config
45
46
 
47
+ @property
48
+ def router(self) -> Router:
49
+ return self.app.integration_router
50
+
46
51
  @property
47
52
  def integration(self) -> "BaseIntegration":
48
53
  return self.app.integration
@@ -1,13 +1,17 @@
1
1
  import asyncio
2
+ import contextlib
2
3
  import sys
3
4
  import threading
4
- from typing import Callable, Any, Dict, Type
5
+ from typing import Callable, Any, Dict, AsyncIterator, Type
5
6
 
7
+ from fastapi import FastAPI, APIRouter
6
8
  from loguru import logger
7
9
  from pydantic import BaseModel
10
+ from starlette.applications import Starlette
8
11
  from starlette.middleware import Middleware
12
+ from starlette.requests import Request
9
13
  from starlette.responses import JSONResponse
10
- from starlette.routing import Route
14
+ from starlette.routing import Route, Mount, Router
11
15
  from starlette.types import Scope, Receive, Send
12
16
 
13
17
  from port_ocean.clients.port.client import PortClient
@@ -27,9 +31,6 @@ from port_ocean.middlewares import RequestHandlerMiddleware
27
31
  from port_ocean.utils.repeat import repeat_every
28
32
  from port_ocean.utils.signal import signal_handler
29
33
  from port_ocean.version import __integration_version__
30
- import contextlib
31
-
32
- from starlette.applications import Starlette
33
34
 
34
35
 
35
36
  class Ocean:
@@ -37,35 +38,14 @@ class Ocean:
37
38
  self,
38
39
  app: Starlette | None = None,
39
40
  integration_class: Callable[[PortOceanContext], BaseIntegration] | None = None,
40
- integration_router: None = None,
41
+ integration_router: Router | None = None,
41
42
  config_factory: Type[BaseModel] | None = None,
42
43
  config_override: Dict[str, Any] | None = None,
43
44
  ):
44
45
  initialize_port_ocean_context(self)
45
46
 
46
- @contextlib.asynccontextmanager
47
- async def lifespan(app):
48
- try:
49
- await self.integration.start()
50
- await self._setup_scheduled_resync()
51
- yield None
52
- except Exception:
53
- logger.exception("Integration had a fatal error. Shutting down.")
54
- sys.exit("Server stopped")
55
- finally:
56
- signal_handler.exit()
57
-
58
- async def handle_webhook_request(data: dict[str, Any]) -> dict[str, Any]:
59
- return JSONResponse({"ok": True})
60
-
61
- self.starlette_app = Starlette(
62
- routes=[
63
- Route("/docs", endpoint=handle_webhook_request),
64
- Route("/integration/webhook", endpoint=handle_webhook_request),
65
- ],
66
- # middleware=[Middleware(RequestHandlerMiddleware)],
67
- lifespan=lifespan,
68
- )
47
+ self.starlette_app = app or Starlette()
48
+ self.integration_router = integration_router or Router()
69
49
 
70
50
  self.config = IntegrationConfiguration(
71
51
  # type: ignore
@@ -137,4 +117,28 @@ class Ocean:
137
117
  await repeated_function()
138
118
 
139
119
  async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
120
+ @contextlib.asynccontextmanager
121
+ async def lifespan(_: FastAPI) -> AsyncIterator[None]:
122
+ try:
123
+ await self.integration.start()
124
+ await self._setup_scheduled_resync()
125
+ yield None
126
+ except Exception:
127
+ logger.exception("Integration had a fatal error. Shutting down.")
128
+ sys.exit("Server stopped")
129
+ finally:
130
+ signal_handler.exit()
131
+
132
+ async def health(request: Request) -> JSONResponse:
133
+ return JSONResponse({"ok": True})
134
+
135
+ self.starlette_app = Starlette(
136
+ routes=[
137
+ Route("/docs", endpoint=health),
138
+ Mount("/integration", routes=self.integration_router.routes),
139
+ ],
140
+ middleware=[Middleware(RequestHandlerMiddleware)],
141
+ lifespan=lifespan,
142
+ )
143
+
140
144
  await self.starlette_app(scope, receive, send)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "port-ocean"
3
- version = "0.12.2-dev21"
3
+ version = "0.12.2-dev23"
4
4
  description = "Port Ocean is a CLI tool for managing your Port projects."
5
5
  readme = "README.md"
6
6
  homepage = "https://app.getport.io"