Skip to contents

opencis 0.1.3

Improvements

  • Network GET requests are now spaced by one second per origin within each R session. HTTP 429 responses retry up to five times, respecting Retry-After (seconds or HTTP date) or using exponential backoff with jitter capped at 60 seconds. Configure this with opencis.request_interval and opencis.max_retries. Cached responses do not wait or use the network.

  • search_all_cis() now distinguishes failed requests from the end of the catalog. It warns explicitly when results are incomplete, returns the rows collected so far with complete = FALSE and next_page attributes, and accepts start to resume with the same filters. Successful searches have complete = TRUE.

Bug fixes

  • Failed search_cis() calls are no longer memoised, allowing later calls to retry the failed page. Successful HTTP responses retain the disk cache.

  • Added regression tests for rate limiting, retry exhaustion, Retry-After parsing, retries after anti-bot verification, and incomplete search recovery.

opencis 0.1.2

CRAN release: 2026-09-07

New features

  • Added automatic handling of the CIS proof-of-work anti-bot challenge. HTTP requests now keep a stable session and user agent, preserve cookies, extract the challenge parameters from the returned HTML, solve the SHA-256 proof of work, submit it to the CIS endpoint, and retry the original request.

  • Added a persistent HTTP disk cache for successful CIS responses, including catalog pages, study pages, and ZIP downloads. Cached entries expire after 24 hours by default and are evicted using an LRU policy when the cache reaches its default 512 MB limit.

  • Added cache_info() to inspect the active cache directory, expiration and size limits, entry count, and current disk usage.

Improvements

  • clear_cache() now clears memoised results, persistent HTTP responses, HTTP sessions, and session cookies. Use clear_cache(disk = FALSE) to retain the persistent disk cache.

  • Anti-bot challenge pages, unsuccessful HTTP responses, and Set-Cookie headers are excluded from the disk cache.

  • Added configuration options for enabling the cache, choosing its directory, and controlling expiration and maximum size: opencis.cache, opencis.cache_dir, opencis.cache_max_age, and opencis.cache_max_size.

  • Added automated tests covering proof-of-work calculation, challenge parsing, session reuse, persistent response caching, binary downloads, cache clearing, and exclusion of sensitive or unsuccessful responses.

  • Network-dependent examples now run only in interactive sessions so package checks do not depend on the availability of the external CIS service.