Skip to content

Commit 3ad6b4c

Browse files
committed
feat: add/use RFC3339 fields in requests
Timestamp fields that store time as milliseconds since epoch are being replaced by fields that store it as a RFC 3339 string. This commit: - Removes POST /feedbacks `timestamp` field, replacing it with `occurred_at`. Removal is possible because this field is not in the public API. - Add `collected_at` to POST /signups' `additional_locations`. This field should be used instead of the existing `timestamp`.
1 parent 2a42d43 commit 3ad6b4c

File tree

6 files changed

+14
-6
lines changed

6 files changed

+14
-6
lines changed

build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ dependencies {
4343
implementation platform("com.squareup.okhttp3:okhttp-bom:4.12.0")
4444
implementation "com.squareup.okhttp3:okhttp"
4545
implementation "com.fasterxml.jackson.core:jackson-databind:2.17.1"
46+
implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.17.1"
4647

4748
testImplementation 'com.auth0:java-jwt:4.4.0'
4849
testImplementation 'commons-io:commons-io:2.16.1'

src/main/java/com/incognia/api/IncogniaAPI.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -408,14 +408,14 @@ public void registerFeedback(
408408

409409
public void registerFeedback(
410410
FeedbackEvent feedbackEvent,
411-
Instant timestamp,
411+
Instant occurredAt,
412412
FeedbackIdentifiers identifiers,
413413
boolean dryRun)
414414
throws IncogniaException {
415415
PostFeedbackRequestBody requestBody =
416416
PostFeedbackRequestBody.builder()
417417
.event(feedbackEvent)
418-
.timestamp(timestamp.toEpochMilli())
418+
.occurredAt(occurredAt)
419419
.installationId(identifiers.getInstallationId())
420420
.sessionToken(identifiers.getSessionToken())
421421
.accountId(identifiers.getAccountId())

src/main/java/com/incognia/api/clients/ObjectMapperFactory.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,18 @@
44
import com.fasterxml.jackson.databind.DeserializationFeature;
55
import com.fasterxml.jackson.databind.ObjectMapper;
66
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
7+
import com.fasterxml.jackson.databind.SerializationFeature;
8+
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
79

810
public class ObjectMapperFactory {
911
@SuppressWarnings("deprecation")
1012
// PropertyNamingStrategy.SNAKE_CASE is deprecated but we use it for compatibility with older
1113
// jackson versions
1214
public static final ObjectMapper OBJECT_MAPPER =
1315
new ObjectMapper()
16+
.registerModule(new JavaTimeModule())
1417
.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
1518
.setSerializationInclusion(Include.NON_NULL)
16-
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
19+
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
20+
.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
1721
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.incognia.common;
22

3+
import java.time.Instant;
34
import lombok.Builder;
45
import lombok.Value;
56

@@ -8,5 +9,6 @@
89
public class AdditionalLocation {
910
Double lat;
1011
Double lng;
11-
Long timestamp;
12+
@Deprecated Long timestamp;
13+
Instant collectedAt;
1214
}

src/main/java/com/incognia/feedback/PostFeedbackRequestBody.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package com.incognia.feedback;
22

3+
import java.time.Instant;
34
import lombok.Builder;
45
import lombok.Value;
56

67
@Value
78
@Builder
89
public class PostFeedbackRequestBody {
910
FeedbackEvent event;
10-
Long timestamp;
11+
Instant occurredAt;
1112
String accountId;
1213
String externalId;
1314
String installationId;

src/test/java/com/incognia/api/IncogniaAPITest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -556,7 +556,7 @@ void testRegisterFeedback_whenDataIsValid(boolean dryRun) {
556556
.signupId(signupId)
557557
.accountId(accountId)
558558
.event(FeedbackEvent.ACCOUNT_TAKEOVER)
559-
.timestamp(timestamp.toEpochMilli())
559+
.occurredAt(timestamp)
560560
.build());
561561
mockServer.setDispatcher(dispatcher);
562562
client.registerFeedback(

0 commit comments

Comments
 (0)