|
2 | 2 |
|
3 | 3 | import com.devcycle.sdk.server.common.api.IDevCycleApi;
|
4 | 4 | import com.devcycle.sdk.server.common.logging.DevCycleLogger;
|
5 |
| -import com.devcycle.sdk.server.common.model.DevCycleEvent; |
6 |
| -import com.devcycle.sdk.server.common.model.DevCycleResponse; |
7 |
| -import com.devcycle.sdk.server.common.model.DevCycleUser; |
8 |
| -import com.devcycle.sdk.server.common.model.ProjectConfig; |
| 5 | +import com.devcycle.sdk.server.common.model.*; |
9 | 6 | import com.devcycle.sdk.server.local.api.DevCycleLocalEventsApiClient;
|
10 | 7 | import com.devcycle.sdk.server.local.bucketing.LocalBucketing;
|
11 | 8 | import com.devcycle.sdk.server.local.model.BucketedUserConfig;
|
@@ -111,27 +108,37 @@ public void queueEvent(DevCycleUser user, DevCycleEvent event) throws Exception
|
111 | 108 | this.localBucketing.queueEvent(this.sdkKey, OBJECT_MAPPER.writeValueAsString(user), OBJECT_MAPPER.writeValueAsString(event));
|
112 | 109 | }
|
113 | 110 |
|
114 |
| - public void queueSDKConfigEvent(Request req, Response<ProjectConfig> response) throws Exception { |
| 111 | + public void queueSDKConfigEvent(Request req, Response<ProjectConfig> response, ErrorResponse errorResponse) throws Exception { |
115 | 112 | DevCycleUser user = new DevCycleUser();
|
116 | 113 | user.setUserId(localBucketing.getClientUUID() + "@" + InetAddress.getLocalHost().getHostName());
|
117 | 114 | DevCycleEvent event = new DevCycleEvent();
|
118 | 115 | event.setType("sdkConfig");
|
119 | 116 | event.setTarget(req.url().toString());
|
120 | 117 |
|
121 |
| - try (okhttp3.Response res = response.raw().networkResponse()) { |
122 |
| - event.setValue(BigDecimal.valueOf(res.receivedResponseAtMillis() - res.sentRequestAtMillis())); |
123 |
| - } catch (Exception e) { |
| 118 | + if (response != null) { |
| 119 | + try (okhttp3.Response res = response.raw().networkResponse()) { |
| 120 | + event.setValue(BigDecimal.valueOf(res.receivedResponseAtMillis() - res.sentRequestAtMillis())); |
| 121 | + } catch (Exception e) { |
| 122 | + event.setValue(BigDecimal.valueOf(-1)); |
| 123 | + } |
| 124 | + } else { |
124 | 125 | event.setValue(BigDecimal.valueOf(-1));
|
125 | 126 | }
|
126 | 127 | HashMap<String, Object> metaData = new HashMap<>();
|
127 | 128 | metaData.put("clientUUID", localBucketing.getClientUUID());
|
128 | 129 | metaData.put("reqEtag", req.header("If-None-Match"));
|
129 | 130 | metaData.put("reqLastModified", req.header("If-Modified-Since"));
|
130 |
| - metaData.put("resEtag", response.headers().get("etag")); |
131 |
| - metaData.put("resLastModified", response.headers().get("Last-Modified")); |
132 |
| - metaData.put("resRayId", response.headers().get("cf-ray")); |
133 |
| - metaData.put("resStatus", response.code()); |
134 |
| - metaData.put("errMsg", response.code() != 200 && response.code() != 304 ? response.message() : null); |
| 131 | + if (response != null) { |
| 132 | + metaData.put("resEtag", response.headers().get("etag")); |
| 133 | + metaData.put("resLastModified", response.headers().get("Last-Modified")); |
| 134 | + metaData.put("resRayId", response.headers().get("cf-ray")); |
| 135 | + metaData.put("resStatus", response.code()); |
| 136 | + metaData.put("errMsg", response.code() != 200 && response.code() != 304 ? response.message() : null); |
| 137 | + } else if (errorResponse != null) { |
| 138 | + metaData.put("resStatus", errorResponse.getStatusCode()); |
| 139 | + metaData.put("errMsg", errorResponse.getMessage()); |
| 140 | + } |
| 141 | + |
135 | 142 | metaData.put("sseConnected", null);
|
136 | 143 | event.setMetaData(metaData);
|
137 | 144 | queueEvent(user, event);
|
|
0 commit comments