Skip to content

Commit dd1434a

Browse files
authored
Merge pull request #469 from tutorcruncher/catch-msgbird-404
Catch the 404 when HLR data is not found
2 parents 536e37d + b89e026 commit dd1434a

File tree

4 files changed

+28
-3
lines changed

4 files changed

+28
-3
lines changed

src/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
VERSION = '1.0.32'
1+
VERSION = '1.0.33'

src/worker/sms.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
from phonenumbers.geocoder import country_name_for_number, description_for_number
2121
from typing import Optional
2222

23-
from src.ext import MessageBird
23+
from src.ext import ApiError, MessageBird
2424
from src.render.main import MessageTooLong, SmsLength, apply_short_links, sms_length
2525
from src.schemas.messages import MessageStatus, SmsRecipientModel, SmsSendMethod, SmsSendModel
2626
from src.settings import Settings
@@ -188,7 +188,11 @@ async def _messagebird_get_number_cost(self, number: Number):
188188

189189
network, hlr = None, None
190190
for i in range(30):
191-
r = await self.messagebird.get(f'hlr/{hlr_id}')
191+
try:
192+
r = await self.messagebird.get(f'hlr/{hlr_id}')
193+
except ApiError:
194+
main_logger.info('Error retrieving HLR data for %s, attempt %d', number.number, i)
195+
continue
192196
hlr = r.json()
193197
if hlr.get('errors'):
194198
continue

tests/dummy_server.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ async def messagebird_lookup(request):
106106
if request_number == 2:
107107
return json_response({'status': 'active', 'network': 'o2'})
108108
return json_response({})
109+
elif '447877777777' in request.path:
110+
return web.Response(body="{'error': 'Test error', 'code': 20}", content_type='application/json', status=404)
109111
return json_response({'status': 'active', 'network': 23430})
110112

111113

tests/test_sms.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,25 @@ def test_messagebird_no_hlr(cli, tmpdir, dummy_server, worker, caplog, loop):
250250
assert 'No HLR result found for +447888888888 after 30 attempts' in caplog.messages
251251

252252

253+
def test_messsagebird_no_hlr_found(cli, tmpdir, dummy_server, worker, caplog, loop):
254+
data = {
255+
'uid': str(uuid4()),
256+
'company_code': 'foobar',
257+
'method': 'sms-messagebird',
258+
'main_template': 'this is a message',
259+
'recipients': [{'number': '07877777777'}],
260+
}
261+
r = cli.post('/send/sms/', json=data, headers={'Authorization': 'testing-key'})
262+
assert r.status_code == 201, r.text
263+
assert worker.test_run() == 1
264+
assert [
265+
'POST /messagebird/hlr > 201',
266+
*['GET /messagebird/hlr/447877777777 > 404' for _ in range(30)],
267+
] == dummy_server.log
268+
dummy_server.log = []
269+
assert 'No HLR result found for +447877777777 after 30 attempts' in caplog.messages
270+
271+
253272
def test_messagebird_no_network(cli, tmpdir, dummy_server, worker, caplog, loop):
254273
data = {
255274
'uid': str(uuid4()),

0 commit comments

Comments
 (0)