python-epo-ops-client icon indicating copy to clipboard operation
python-epo-ops-client copied to clipboard

`client.image` Method Fails to Retrieve Specific Document Pages

Open sonofhypnos opened this issue 10 months ago • 0 comments

Issue: Using client.image to fetch pages from EPO's API always returns the first page, regardless of the range parameter provided.

Steps to Reproduce:

  1. Used client.image with range=page to fetch the nth page of a document.
  2. Only the first page was returned in every attempt.

Workaround: Manually constructing the URL and headers to specify the X-OPS-Range and making a direct request with client._make_request retrieves the correct page.

Expected: client.image should interpret the range parameter to fetch the specified page number.

Actual: Always retrieves the first page.

Details:

  • Failing call: client.image("http://ops.epo.org/rest-services/published-data/images/EP/1000000/PA/fullimage", range=page, document_format="application/pdf")
  • Successful workaround:
base_url = "http://ops.epo.org/rest-services/published-data/images"
publication_authority = "EP"
publication_number = "1000000"
publication_kind = "A1"
url = f"{base_url}/{publication_authority}/{publication_number}/{publication_kind}/fullimage"

# Make the request using client._make_request, specifying the Range through parameters and headers
image_response = client._make_request(
    url, 
    data="", 
    params={"Range": page}, 
    extra_headers={"Accept": "application/pdf", "X-OPS-Range": str(page)}, 
    use_get=True
)

(I found the above through trial and error, because I couldn't understand what the data parameter does here)

sonofhypnos avatar Apr 02 '24 02:04 sonofhypnos