cloudosR 0.2.4
- Concurrent page fetching in
cloudos.query(). Status
polling and page-result fetching are now issued concurrently via
httr2::req_perform_parallel() instead of one request at a
time. The number of in-flight requests is capped by the new
max_parallel argument, which defaults to the
cloudosR.max_parallel option and then to 10. Set
max_parallel = 1 for the previous fully sequential
behaviour.
- API error messages now include the server’s response body.
Previously
httr2 aborted on any 4xx/5xx with a bare message
such as HTTP 403 Forbidden., which meant
handle_api_error() never ran and the response body was
discarded. Statuses are now inspected by the package, and the detail is
read from JSON message/error fields
and from text/plain or text/html
bodies — the form used by gateways and reverse proxies in front of the
API. Long bodies (such as HTML error pages) are truncated.
- Authentication failures (401) now report the server’s detail
alongside the existing guidance.
- A success status returned with an empty body now raises an explicit
“Empty response body” error instead of an opaque JSON parse failure, and
JSON parse errors name the endpoint that produced them.
poll_all_tasks_until_complete() resolves the profile
once per call instead of re-reading the config file for every task in
every polling sweep.
- Requires
httr2 (>= 1.1.0) for the concurrency
cap.
cloudosR 0.2.3
- Trailing slashes in
base_url are now stripped on save
(cloudos.configure()) and on load
(load_profile()), preventing double-slash URLs that caused
an empty response body from the server.
cloudosR 0.2.2
- Added
cloudos.query_submit_count_async() — submits an
async task targeting the new query-results/count/async
endpoint (returns total row count only).
- Added
cloudos.query_count_results() — fetches the
integer total from a completed count task.
- Added
cloudos.query_count() — high-level orchestrator:
submit count task, poll until complete, return total row count.
cloudos.query_submit_async() now targets
query-results/data/async (previously
query-results/async). Callers constructing the endpoint URL
manually must update it.
cloudos.query_submit_async() gains an optional
cursor parameter for cursor-based pagination.
cloudos.query_results() gains an optional
total_rows parameter; when supplied the
total_rows and total_pages data-frame
attributes are populated. A cursor attribute is also set on
the returned data frame.
cloudos.query() now submits count and page-0 data tasks
concurrently, reducing end-to-end latency. All remaining-page tasks are
also polled concurrently via a shared max_wait budget.
- Fixed
page_size and total_pages attributes
on the combined data frame returned by cloudos.query() with
all_pages = TRUE.
cloudosR 0.2.1
- Fixed pagination overshoot in
cloudos.query() with
all_pages = TRUE. The API response field
pageSize is the rows-per-page value, not the total page
count. total_pages is now correctly derived as
ceiling(total_rows / pageSize).
cloudosR 0.2.0
- Initial CRAN submission
- Core functionality for Lifebit Platform API interaction:
- Profile configuration and management
- Schema discovery for cohorts
- SQL query validation
- Read-only SQL query execution with automatic pagination
- Policy-aware behavior with team-based access control
- Configuration now stored using
tools::R_user_dir() for
CRAN compliance
- Comprehensive test coverage and vignettes