Mumble, grumble… fp seems to added in python 3.12. Or at least that is the 
place it is documented.
If you wanted to pursue, I could test on other versions.
But what you ain’t broke….
On Monday 19 February 2024 at 14:33:43 UTC-5 [email protected] wrote:

> Oh the arguments/debates we had on what response code to use. It is a grey 
> area…
> My example code does read the response body on that exception. It appears 
> you can either use the read() method on the exception or the fp attribute.
> From 
> https://docs.python.org/3/library/urllib.error.html#module-urllib.error
>
> *exception *urllib.error.HTTPError(*url*, *code*, *msg*, *hdrs*, *fp*) 
> <https://docs.python.org/3/library/urllib.error.html#urllib.error.HTTPError>
>
> Though being an exception (a subclass of URLError 
> <https://docs.python.org/3/library/urllib.error.html#urllib.error.URLError>), 
> an HTTPError 
> <https://docs.python.org/3/library/urllib.error.html#urllib.error.HTTPError> 
> can 
> also function as a non-exceptional file-like return value (the same thing 
> that urlopen() 
> <https://docs.python.org/3/library/urllib.request.html#urllib.request.urlopen>
>  returns). 
> This is useful when handling exotic HTTP errors, such as requests for 
> authentication.
>
> You have something working, its not worth changing. 
>
> rich
>
> Ps. Flask looks pretty cool. Got the stations api running in dev mode in 
> minutes.
> On Monday 19 February 2024 at 14:21:32 UTC-5 Tom Keffer wrote:
>
>> The problem is that urllib.request.urlopen() raises an exception if it 
>> gets an HTTP error code 400. That makes the response body totally 
>> unavailable.
>>
>> I studied the HTTP error codes and decided that code 200 means that the 
>> HTTP transmission was successful. It does not necessarily mean that the 
>> application-level transaction was successful, i.e., the resource (in this 
>> case, a station registration) was created. So, a 200 code can be sent back 
>> even if the registration failed.
>>
>> By contrast, 400 means that the client malformed the request badly enough 
>> that the server is unable to process it. Presumably, at all. 
>>
>> So, I switched from 400 to 200 so that we can send some details to the 
>> client on why a registration could not be processed.
>>
>> But, the documentation I read was never crystal clear on what to do when 
>> a client passed on invalid data.
>>
>> Caveat: I am not an expert on this! Everything above comes from an hour 
>> or two of research on the topic --- the sum total of my expertise!
>>
>> Thanks for taking a look at this, Rich!
>>
>> -tk
>>
>>
>>
>>
>>
>>
>>
>>
>> On Mon, Feb 19, 2024 at 11:00 AM [email protected] <[email protected]> 
>> wrote:
>>
>>> I was in the process of updating restx.py to log the returned error 
>>> message. If you want the stations api to return a 400, you could do 
>>> something like this. 
>>>
>>> def test_post():
>>>     url = 'http://localhost:5000/api/v2/stations/'
>>>
>>>     body = {
>>>         'station_url': 'example.com',
>>>         }
>>>     json_body = json.dumps(body)
>>>
>>>     request = urllib.request.Request(url)
>>>     request.add_header('Content-Type', 'application/json')
>>>
>>>     try:
>>>         response = urllib.request.urlopen(request, 
>>> data=json_body.encode('utf-8'))
>>>     except urllib.error.HTTPError as http_error:
>>>         print(http_error)
>>>         raw_data = http_error.read()
>>>         print(raw_data)
>>>         error_msg = raw_data.decode()
>>>         print(error_msg)
>>>
>>> I’m still trying to understand any edge cases/nuances, so the 200 is 
>>> probably a bit ‘safer’.
>>> rich
>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "weewx-development" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected].
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/weewx-development/45b3404d-7d3a-4e64-82bc-8cf97ff16959n%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/weewx-development/45b3404d-7d3a-4e64-82bc-8cf97ff16959n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"weewx-development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-development/e7473b63-f3ab-4aaa-90c3-f26556b8a2a7n%40googlegroups.com.

Reply via email to