Skip to content

Commit

Permalink
Use correct endpoint for RsConnect get_user with guid (#292)
Browse files Browse the repository at this point in the history
* Use correct endpoint for RsConnect get_user with guid

* Add missing `from __future__ import annotations` for 3.8

* Help the pre-commit hook find pyproject.toml config

* Revert "Help the pre-commit hook find pyproject.toml config"

This reverts commit fef3621.

* Apply ruff formatting
  • Loading branch information
nathanjmcdougall authored Aug 27, 2024
1 parent f974481 commit 8faca6c
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 20 deletions.
40 changes: 20 additions & 20 deletions pins/rsconnect/api.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from __future__ import annotations

import logging
import os
import tempfile
Expand Down Expand Up @@ -130,14 +132,14 @@ def __init__(self, results: T, cursor: Mapping):


class RsConnectApi:
api_key: "str | None"
server_url: "str"
api_key: str | None
server_url: str

def __init__(
self,
server_url: "str | None",
api_key: "str | None" = None,
session: "requests.Session | None" = None,
server_url: str | None,
api_key: str | None = None,
session: requests.Session | None = None,
):
self.server_url = server_url
self.api_key = api_key
Expand Down Expand Up @@ -182,7 +184,7 @@ def _get_headers(self):

return {**d_key, **d_rsc}

def _validate_json_response(self, data: "dict | list"):
def _validate_json_response(self, data: dict | list):
if isinstance(data, list):
return

Expand Down Expand Up @@ -257,23 +259,23 @@ def walk_paginated_offsets(self, f_query, endpoint, method, params=None, **kwarg

# users ----

def get_user(self, guid: str = None) -> User:
def get_user(self, guid: str | None = None) -> User:
if guid is None:
return User(self.query_v1("user"))

result = self.query_v1(f"user/{guid}")
result = self.query_v1(f"users/{guid}")
return User(result)

def get_users(
self,
prefix: "str | None" = None,
user_role: "str | None" = None,
account_status: "str | None" = None,
page_number: "int | None" = None,
page_size: "int | None" = None,
asc_order: "bool | None" = None,
prefix: str | None = None,
user_role: str | None = None,
account_status: str | None = None,
page_number: int | None = None,
page_size: int | None = None,
asc_order: bool | None = None,
walk_pages=True,
) -> "Sequence[User] | Sequence[dict]":
) -> Sequence[User] | Sequence[dict]:
params = {k: v for k, v in locals().items() if k != "self" if v is not None}

if walk_pages:
Expand Down Expand Up @@ -303,7 +305,7 @@ def post_content_item(

return Content(result)

def post_content_item_deploy(self, guid: str, bundle_id: "str | None" = None):
def post_content_item_deploy(self, guid: str, bundle_id: str | None = None):
json = {"bundle_id": bundle_id} if bundle_id is not None else {}
return self.query_v1(f"content/{guid}/deploy", "POST", json=json)

Expand Down Expand Up @@ -345,9 +347,7 @@ def get_content_bundle(self, guid: str, id: int) -> Bundle:
result = self.query_v1(f"content/{guid}/bundles/{id}")
return Bundle(result)

def get_content_bundle_archive(
self, guid: str, id: str, f_obj: "str | IOBase"
) -> None:
def get_content_bundle_archive(self, guid: str, id: str, f_obj: str | IOBase) -> None:
r = self.query_v1(
f"content/{guid}/bundles/{id}/download", stream=True, return_request=True
)
Expand Down Expand Up @@ -399,7 +399,7 @@ def misc_ping(self):
return self._raw_query(f"{self.server_url}/__ping__")

def misc_get_content_bundle_file(
self, guid: str, id: str, fname: str, f_obj: "str | IOBase | None" = None
self, guid: str, id: str, fname: str, f_obj: str | IOBase | None = None
):
if f_obj is None:
f_obj = fname
Expand Down
8 changes: 8 additions & 0 deletions pins/tests/test_rsconnect_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from requests.exceptions import HTTPError

from pins.rsconnect.api import (
RsConnectApi,
RsConnectApiMissingContentError,
RsConnectApiRequestError,
)
Expand Down Expand Up @@ -69,6 +70,13 @@ def test_rsconnect_api_get_user(rsc_admin):
assert me["username"] == "admin"


def test_rsconnect_api_get_user_guid(rsc_admin: RsConnectApi):
guid = rsc_admin.get_user().get_id()
me = rsc_admin.get_user(guid=guid)
assert me.get_id() == guid
assert me["username"] == "admin"


def test_rsconnect_get_content_empty(rsc_short):
me = rsc_short.get_user()
content = rsc_short.get_content(owner_guid=me["guid"])
Expand Down

0 comments on commit 8faca6c

Please sign in to comment.