Skip to content

Commit

Permalink
fix: provider functions
Browse files Browse the repository at this point in the history
  • Loading branch information
ankumar committed Aug 2, 2024
1 parent 64b8887 commit 2007f0c
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 5 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -159,3 +159,5 @@ dmypy.json

# Cython debug symbols
cython_debug/

logs/
61 changes: 56 additions & 5 deletions javelin_sdk/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,25 @@
import httpx

from javelin_sdk.exceptions import (
InternalServerError,
RouteNotFoundError,
RouteAlreadyExistsError,
ProviderNotFoundError,
ProviderAlreadyExistsError,
TemplateNotFoundError,
TemplateAlreadyExistsError,
SecretNotFoundError,
SecretAlreadyExistsError,
NetworkError,
BadRequest,
RateLimitExceededError,
RouteAlreadyExistsError,
RouteNotFoundError,
InternalServerError,
MethodNotAllowedError,
UnauthorizedError,
BadRequest,
ValidationError,
)
from javelin_sdk.models import QueryResponse, Route, Routes
from javelin_sdk.models import QueryResponse
from javelin_sdk.models import Route, Routes
from javelin_sdk.models import Provider, Providers

API_BASEURL = "https://api.javelin.live"
API_BASE_PATH = "/v1"
Expand Down Expand Up @@ -483,3 +493,44 @@ def _validate_body(body: Optional[Dict[str, Any]]):
"""
if not body:
raise ValueError("Body cannot be empty.")

def get_provider(self, provider_name: str) -> Provider:
"""
Retrieve details of a specific provider.
:param provider_name: Name of the provider to retrieve.
:return: Response object containing provider details.
"""
self._validate_provider_name(provider_name)
response = self._send_request_sync(HttpMethod.GET, provider_name)
return self._process_response_provider(response)

async def aget_provider(self, provider_name: str) -> Provider:
"""
Asynchronously retrieve details of a specific provider.
:param provider_name: Name of the provider to retrieve.
:return: Response object containing provider details.
"""
self._validate_provider_name(provider_name)
response = await self._send_request_async(HttpMethod.GET, provider_name)
return self._process_response_provider(response)

@staticmethod
def _validate_provider_name(provider_name: str):
"""
Validate the route name. Raises a ValueError if the provider name is empty.
:param provider_name: Name of the provider to validate.
"""
if not provider_name:
raise ValueError("Provider name cannot be empty.")

def _process_response_provider(self, response: httpx.Response) -> Provider:
"""
Process a successful response from the Javelin API.
Parse body into a Provider object and return it.
This is for Get() requests.
"""
self._handle_response(response)
return Provider(**response.json())

0 comments on commit 2007f0c

Please sign in to comment.