From f1c73c2cb37c2c75629a4466de3609d9e9864bbf Mon Sep 17 00:00:00 2001 From: Dirk Wagner Date: Fri, 24 Feb 2017 11:26:06 +0100 Subject: [PATCH] Add exception for HTTP 429 status codes. This commit adds support for handling HTTP 429 status codes and a new exeption class for calling "To many requests" exceptions. This class easily can be used to catch similar responses from other DDNS providers too. Signed-off-by: Dirk Wagner Signed-off-by: Stefan Schantl --- src/ddns/errors.py | 9 ++++++++- src/ddns/system.py | 4 ++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/ddns/errors.py b/src/ddns/errors.py index 58a5ba9..a8a2017 100644 --- a/src/ddns/errors.py +++ b/src/ddns/errors.py @@ -2,7 +2,7 @@ ############################################################################### # # # ddns - A dynamic DNS client for IPFire # -# Copyright (C) 2012 IPFire development team # +# Copyright (C) 2012-2017 IPFire development team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -161,6 +161,13 @@ class DDNSServiceUnavailableError(DDNSNetworkError): reason = N_("Service unavailable") +class DDNSTooManyRequests(DDNSError): + """ + Raised when too many requests occured. + """ + reason = N_("Too many requests") + + class DDNSUpdateError(DDNSError): """ Thrown when an update could not be diff --git a/src/ddns/system.py b/src/ddns/system.py index c268ba5..67ea553 100644 --- a/src/ddns/system.py +++ b/src/ddns/system.py @@ -194,6 +194,10 @@ class DDNSSystem(object): elif e.code == 404: raise DDNSNotFound(e.reason) + # 429 - Too Many Requests + elif e.code == 429: + raise DDNSTooManyRequests(e.reason) + # 500 - Internal Server Error elif e.code == 500: raise DDNSInternalServerError(e.reason) -- 2.39.2