mirror of
https://github.com/brygphilomena/pysimplesat.git
synced 2025-11-04 08:47:29 +00:00
Handled pagination for the search post requests
This commit is contained in:
parent
c63b4e53f5
commit
18ba951ea9
@ -1,8 +1,10 @@
|
|||||||
from pysimplesat.endpoints.base.base_endpoint import SimpleSatEndpoint
|
from pysimplesat.endpoints.base.base_endpoint import SimpleSatEndpoint
|
||||||
from pysimplesat.interfaces import (
|
from pysimplesat.interfaces import (
|
||||||
IPostable,
|
IPostable,
|
||||||
|
IPaginateable,
|
||||||
)
|
)
|
||||||
from pysimplesat.models.simplesat import Answer
|
from pysimplesat.models.simplesat import Answer
|
||||||
|
from pysimplesat.responses.paginated_response import PaginatedResponse
|
||||||
from pysimplesat.types import (
|
from pysimplesat.types import (
|
||||||
JSON,
|
JSON,
|
||||||
SimpleSatRequestParams,
|
SimpleSatRequestParams,
|
||||||
@ -12,13 +14,45 @@ from pysimplesat.types import (
|
|||||||
class AnswersSearchEndpoint(
|
class AnswersSearchEndpoint(
|
||||||
SimpleSatEndpoint,
|
SimpleSatEndpoint,
|
||||||
IPostable[Answer, SimpleSatRequestParams],
|
IPostable[Answer, SimpleSatRequestParams],
|
||||||
|
IPaginateable[Answer, SimpleSatRequestParams],
|
||||||
|
|
||||||
):
|
):
|
||||||
def __init__(self, client, parent_endpoint=None) -> None:
|
def __init__(self, client, parent_endpoint=None) -> None:
|
||||||
SimpleSatEndpoint.__init__(self, client, "search", parent_endpoint=parent_endpoint)
|
SimpleSatEndpoint.__init__(self, client, "search", parent_endpoint=parent_endpoint)
|
||||||
IPostable.__init__(self, Answer)
|
IPostable.__init__(self, Answer)
|
||||||
|
IPaginateable.__init__(self, Answer)
|
||||||
|
|
||||||
|
def paginated(
|
||||||
|
self,
|
||||||
|
page: int,
|
||||||
|
limit: int,
|
||||||
|
params: SimpleSatRequestParams | None = None,
|
||||||
|
) -> PaginatedResponse[Answer]:
|
||||||
|
"""
|
||||||
|
Performs a POST request against the /answers/search endpoint and returns an initialized PaginatedResponse object.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
page (int): The page number to request.
|
||||||
|
limit (int): The number of results to return per page.
|
||||||
|
params (dict[str, int | str]): The parameters to send in the request query string.
|
||||||
|
Returns:
|
||||||
|
PaginatedResponse[Answer]: The initialized PaginatedResponse object.
|
||||||
|
"""
|
||||||
|
if params:
|
||||||
|
params["page[number]"] = page
|
||||||
|
params["page[size]"] = limit
|
||||||
|
else:
|
||||||
|
params = {"page[number]": page, "page[size]": limit}
|
||||||
|
return PaginatedResponse(
|
||||||
|
super()._make_request("POST", params=params),
|
||||||
|
Answer,
|
||||||
|
self,
|
||||||
|
"answers",
|
||||||
|
page,
|
||||||
|
limit,
|
||||||
|
params,
|
||||||
|
)
|
||||||
|
|
||||||
#TODO: How do I paginate a post?
|
|
||||||
def post(self, data: JSON | None = None, params: SimpleSatRequestParams | None = None) -> Answer:
|
def post(self, data: JSON | None = None, params: SimpleSatRequestParams | None = None) -> Answer:
|
||||||
"""
|
"""
|
||||||
Performs a POST request against the /answers/search endpoint.
|
Performs a POST request against the /answers/search endpoint.
|
||||||
|
|||||||
@ -1,8 +1,10 @@
|
|||||||
from pysimplesat.endpoints.base.base_endpoint import SimpleSatEndpoint
|
from pysimplesat.endpoints.base.base_endpoint import SimpleSatEndpoint
|
||||||
from pysimplesat.interfaces import (
|
from pysimplesat.interfaces import (
|
||||||
IPostable,
|
IPostable,
|
||||||
|
IPaginateable,
|
||||||
)
|
)
|
||||||
from pysimplesat.models.simplesat import Response
|
from pysimplesat.models.simplesat import Response
|
||||||
|
from pysimplesat.responses.paginated_response import PaginatedResponse
|
||||||
from pysimplesat.types import (
|
from pysimplesat.types import (
|
||||||
JSON,
|
JSON,
|
||||||
SimpleSatRequestParams,
|
SimpleSatRequestParams,
|
||||||
@ -12,11 +14,45 @@ from pysimplesat.types import (
|
|||||||
class ResponsesSearchEndpoint(
|
class ResponsesSearchEndpoint(
|
||||||
SimpleSatEndpoint,
|
SimpleSatEndpoint,
|
||||||
IPostable[Response, SimpleSatRequestParams],
|
IPostable[Response, SimpleSatRequestParams],
|
||||||
|
IPaginateable[Response, SimpleSatRequestParams],
|
||||||
|
|
||||||
):
|
):
|
||||||
def __init__(self, client, parent_endpoint=None) -> None:
|
def __init__(self, client, parent_endpoint=None) -> None:
|
||||||
SimpleSatEndpoint.__init__(self, client, "search", parent_endpoint=parent_endpoint)
|
SimpleSatEndpoint.__init__(self, client, "search", parent_endpoint=parent_endpoint)
|
||||||
IPostable.__init__(self, Response)
|
IPostable.__init__(self, Response)
|
||||||
|
IPaginateable.__init__(self, Response)
|
||||||
|
|
||||||
|
def paginated(
|
||||||
|
self,
|
||||||
|
page: int,
|
||||||
|
limit: int,
|
||||||
|
params: SimpleSatRequestParams | None = None,
|
||||||
|
) -> PaginatedResponse[Response]:
|
||||||
|
"""
|
||||||
|
Performs a POST request against the /responses/search endpoint and returns an initialized PaginatedResponse object.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
page (int): The page number to request.
|
||||||
|
limit (int): The number of results to return per page.
|
||||||
|
params (dict[str, int | str]): The parameters to send in the request query string.
|
||||||
|
Returns:
|
||||||
|
PaginatedResponse[Response]: The initialized PaginatedResponse object.
|
||||||
|
"""
|
||||||
|
if params:
|
||||||
|
params["page[number]"] = page
|
||||||
|
params["page[size]"] = limit
|
||||||
|
else:
|
||||||
|
params = {"page[number]": page, "page[size]": limit}
|
||||||
|
return PaginatedResponse(
|
||||||
|
super()._make_request("POST", params=params),
|
||||||
|
Response,
|
||||||
|
self,
|
||||||
|
"responses",
|
||||||
|
page,
|
||||||
|
limit,
|
||||||
|
params,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
#TODO: How do I paginate a post?
|
#TODO: How do I paginate a post?
|
||||||
def post(self, data: JSON | None = None, params: SimpleSatRequestParams | None = None) -> Response:
|
def post(self, data: JSON | None = None, params: SimpleSatRequestParams | None = None) -> Response:
|
||||||
|
|||||||
@ -55,8 +55,8 @@ class TeamMember(SimpleSatModel):
|
|||||||
class Response(SimpleSatModel):
|
class Response(SimpleSatModel):
|
||||||
survey_id: int | None = Field(default=None, alias="SurveyId")
|
survey_id: int | None = Field(default=None, alias="SurveyId")
|
||||||
tags: list | None = Field(default=None, alias="Tags")
|
tags: list | None = Field(default=None, alias="Tags")
|
||||||
answers: dict[str, Any] | None = Field(default=None, alias="Answers")
|
answers: list[dict[str, Any]] | None = Field(default=None, alias="Answers")
|
||||||
team_members: dict[str, Any] | None = Field(default=None, alias="TeamMembers")
|
team_members: list[dict[str, Any]] | None = Field(default=None, alias="TeamMembers")
|
||||||
ticket: dict[str, Any] | None = Field(default=None, alias="Ticket")
|
ticket: dict[str, Any] | None = Field(default=None, alias="Ticket")
|
||||||
customer: dict[str, Any] | None = Field(default=None, alias="Customer")
|
customer: dict[str, Any] | None = Field(default=None, alias="Customer")
|
||||||
|
|
||||||
|
|||||||
@ -11,5 +11,9 @@ simplesat_api_client = SimpleSatAPIClient(
|
|||||||
privatekey,
|
privatekey,
|
||||||
)
|
)
|
||||||
|
|
||||||
#account = simplesat_api_client.account.get()
|
#surveys = simplesat_api_client.surveys.get()
|
||||||
#print(account)
|
#print(surveys)
|
||||||
|
|
||||||
|
answers = simplesat_api_client.responses.search.paginated(1,5)
|
||||||
|
print(answers)
|
||||||
|
print(answers.data)
|
||||||
Loading…
x
Reference in New Issue
Block a user