Skip to content
This repository was archived by the owner on Nov 17, 2020. It is now read-only.

Commit 46d9595

Browse files
committed
Ensure new modified date is used in state
lists:ukeymerge had reversed arguments, so the old value was always used Added some Django debug logging in the example code Fixes #68
1 parent d30b076 commit 46d9595

File tree

4 files changed

+46
-19
lines changed

4 files changed

+46
-19
lines changed
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
*.pyc
22
*.sqlite3
3-
certs/*
3+
certs/
4+
venv/

examples/rabbitmq_trust_store_django/rabbitmq_trust_store_django/settings.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
https://docs.djangoproject.com/en/1.9/ref/settings/
1111
"""
1212

13+
import logging.config
1314
import os
1415

1516
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
@@ -27,6 +28,36 @@
2728

2829
ALLOWED_HOSTS = []
2930

31+
logging.config.dictConfig({
32+
'version': 1,
33+
'disable_existing_loggers': False,
34+
'formatters': {
35+
'verbose': {
36+
'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}',
37+
'style': '{',
38+
},
39+
'simple': {
40+
'format': '{levelname} {message}',
41+
'style': '{',
42+
},
43+
},
44+
'handlers': {
45+
'console': {
46+
'class': 'logging.StreamHandler',
47+
'formatter': 'verbose'
48+
},
49+
},
50+
'loggers': {
51+
'django': {
52+
'handlers': ['console'],
53+
'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG'),
54+
},
55+
'rabbitmq_trust_store_django': {
56+
'handlers': ['console'],
57+
'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG'),
58+
}
59+
},
60+
})
3061

3162
# Application definition
3263

examples/rabbitmq_trust_store_django/rabbitmq_trust_store_django/trust_store/views.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
1+
import logging
2+
import os
3+
14
from django.shortcuts import render
25
from django.http import HttpResponse, JsonResponse
3-
import os
46
from django.conf import settings
57
from django.views.decorators.http import last_modified
68
from datetime import datetime
79

10+
logger = logging.getLogger(__name__)
811

912
def latest_dir_change(request):
1013
timestamp = os.stat(cert_directory()).st_mtime
11-
return datetime.fromtimestamp(timestamp)
14+
dt = datetime.fromtimestamp(timestamp)
15+
logger.debug('latest_dir_change: %s', dt)
16+
return dt
1217

1318
@last_modified(latest_dir_change)
1419
def index(request):

src/rabbit_trust_store_http_provider.erl

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -78,23 +78,13 @@ decode_cert_list(Body) ->
7878
end,
7979
Certs).
8080

81-
new_state(RespHeaders, #http_state{headers = Headers} = State) ->
82-
LastModified = proplists:get_value("Last-Modified",
83-
RespHeaders,
84-
proplists:get_value("last-modified",
85-
RespHeaders,
86-
undefined)),
87-
case LastModified of
81+
new_state(RespHeaders, #http_state{headers = Headers0} = State) ->
82+
LastModified0 = proplists:get_value("last-modified", RespHeaders),
83+
LastModified1 = proplists:get_value("Last-Modified", RespHeaders, LastModified0),
84+
case LastModified1 of
8885
undefined -> State;
8986
Value ->
90-
NewHeaders = lists:ukeymerge(1, Headers,
91-
[{"If-Modified-Since", Value}]),
87+
Headers1 = lists:ukeysort(1, Headers0),
88+
NewHeaders = lists:ukeymerge(1, [{"If-Modified-Since", Value}], Headers1),
9289
State#http_state{headers = NewHeaders}
9390
end.
94-
95-
96-
97-
98-
99-
100-

0 commit comments

Comments
 (0)