17
17
package com .djrapitops .plan .delivery .webserver .resolver .json ;
18
18
19
19
import com .djrapitops .plan .delivery .domain .auth .WebPermission ;
20
- import com .djrapitops .plan .delivery .formatting .Formatter ;
21
- import com .djrapitops .plan .delivery .formatting .Formatters ;
22
20
import com .djrapitops .plan .delivery .rendering .json .PlayerJSONCreator ;
23
21
import com .djrapitops .plan .delivery .web .resolver .MimeType ;
24
22
import com .djrapitops .plan .delivery .web .resolver .Resolver ;
25
23
import com .djrapitops .plan .delivery .web .resolver .Response ;
26
24
import com .djrapitops .plan .delivery .web .resolver .exception .BadRequestException ;
27
25
import com .djrapitops .plan .delivery .web .resolver .request .Request ;
28
26
import com .djrapitops .plan .delivery .web .resolver .request .WebUser ;
29
- import com .djrapitops .plan .delivery .webserver .CacheStrategy ;
30
27
import com .djrapitops .plan .identification .Identifiers ;
31
28
import io .swagger .v3 .oas .annotations .Operation ;
32
29
import io .swagger .v3 .oas .annotations .Parameter ;
37
34
import io .swagger .v3 .oas .annotations .responses .ApiResponse ;
38
35
import jakarta .ws .rs .GET ;
39
36
import jakarta .ws .rs .Path ;
40
- import org .eclipse .jetty .http .HttpHeader ;
41
37
42
38
import javax .inject .Inject ;
43
39
import javax .inject .Singleton ;
@@ -52,14 +48,11 @@ public class PlayerJSONResolver implements Resolver {
52
48
53
49
private final Identifiers identifiers ;
54
50
private final PlayerJSONCreator jsonCreator ;
55
- private final Formatter <Long > httpLastModifiedFormatter ;
56
51
57
52
@ Inject
58
- public PlayerJSONResolver (Identifiers identifiers , Formatters formatters , PlayerJSONCreator jsonCreator ) {
53
+ public PlayerJSONResolver (Identifiers identifiers , PlayerJSONCreator jsonCreator ) {
59
54
this .identifiers = identifiers ;
60
55
this .jsonCreator = jsonCreator ;
61
-
62
- httpLastModifiedFormatter = formatters .httpLastModifiedLong ();
63
56
}
64
57
65
58
@ Override
@@ -99,34 +92,13 @@ public Optional<Response> resolve(Request request) {
99
92
private Response getResponse (Request request ) {
100
93
UUID playerUUID = identifiers .getPlayerUUID (request ); // Can throw BadRequestException
101
94
102
- // User needs to be taken into account due to permissions.
103
- String userSpecific = request .getUser ().map (WebUser ::getUsername ).orElse ("" );
104
- Optional <String > etag = Identifiers .getStringEtag (request );
105
- if (etag .isPresent ()) {
106
- long lastSeen = jsonCreator .getLastSeen (playerUUID );
107
- if (etag .get ().equals (lastSeen + userSpecific )) {
108
- return Response .builder ()
109
- .setStatus (304 )
110
- .setContent (new byte [0 ])
111
- .build ();
112
- }
113
- }
114
-
115
95
Predicate <WebPermission > hasPermission = request .getUser ()
116
96
.map (user -> (Predicate <WebPermission >) user ::hasPermission )
117
97
.orElse (permission -> true ); // No user means auth disabled inside resolve
118
98
Map <String , Object > jsonAsMap = jsonCreator .createJSONAsMap (playerUUID , hasPermission );
119
- long lastSeenRawValue = Optional .ofNullable (jsonAsMap .get ("info" ))
120
- .map (Map .class ::cast )
121
- .map (info -> info .get ("last_seen_raw_value" ))
122
- .map (Long .class ::cast )
123
- .orElseGet (System ::currentTimeMillis );
124
99
return Response .builder ()
125
100
.setMimeType (MimeType .JSON )
126
101
.setJSONContent (jsonAsMap )
127
- .setHeader (HttpHeader .CACHE_CONTROL .asString (), CacheStrategy .CHECK_ETAG_USER_SPECIFIC )
128
- .setHeader (HttpHeader .LAST_MODIFIED .asString (), httpLastModifiedFormatter .apply (lastSeenRawValue ))
129
- .setHeader (HttpHeader .ETAG .asString (), lastSeenRawValue + userSpecific )
130
102
.build ();
131
103
}
132
104
}
0 commit comments