Skip to content

Commit aabce98

Browse files
Merge pull request #121 from RADAR-base/fix/breathing-skinTemperature
Fix breathing and skin temperature convertors
2 parents 3c81c18 + 50aca29 commit aabce98

File tree

4 files changed

+14
-20
lines changed

4 files changed

+14
-20
lines changed

buildSrc/src/main/kotlin/Versions.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ object Versions {
2222
const val okhttp = "4.11.0"
2323

2424
const val firebaseAdmin = "9.1.0"
25-
const val radarSchemas = "0.8.7-SNAPSHOT"
25+
const val radarSchemas = "0.8.6"
2626
const val ktor = "2.3.5"
2727

2828
const val junit = "5.9.3"

kafka-connect-fitbit-source/src/main/java/org/radarbase/connect/rest/fitbit/converter/FitbitBreathingRateAvroConverter.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,7 @@
2626
import org.slf4j.Logger;
2727
import org.slf4j.LoggerFactory;
2828

29-
import java.time.Instant;
30-
import java.time.LocalDateTime;
31-
import java.time.ZonedDateTime;
29+
import java.time.*;
3230
import java.util.stream.Stream;
3331

3432
import static org.radarbase.connect.rest.util.ThrowingFunction.tryOrNull;
@@ -58,23 +56,22 @@ protected Stream<TopicData> processRecords(FitbitRestRequest request, JsonNode r
5856

5957
return iterableToStream(br)
6058
.filter(m -> m != null && m.isObject())
61-
.flatMap(FitbitAvroConverter::iterableToStream)
6259
.map(tryOrNull(m -> parseBr(m, startDate, timeReceived),
6360
(a, ex) -> logger.warn("Failed to convert breathing rate from request {}, {}", request, a, ex)));
6461
}
6562

6663
private TopicData parseBr(JsonNode data, ZonedDateTime startDate, double timeReceived) {
67-
Instant time = startDate.with(LocalDateTime.parse(data.get("dateTime").asText())).toInstant();
64+
Instant time = LocalDate.parse(data.get("dateTime").asText()).atStartOfDay(ZoneOffset.UTC).toInstant();
6865
JsonNode value = data.get("value");
6966
if (value == null || !value.isObject()) {
7067
return null;
7168
}
7269
FitbitBreathingRate fitbitBr = new FitbitBreathingRate(time.toEpochMilli() / 1000d,
7370
timeReceived,
74-
(float) value.get("deepSleepBrSummary").get("breathingRate").asDouble(),
75-
(float) value.get("remSleepBrSummary").get("breathingRate").asDouble(),
76-
(float) value.get("fullSleepBrSummary").get("breathingRate").asDouble(),
77-
(float) value.get("lightSleepBrSummary").get("breathingRate").asDouble());
71+
(float) value.get("deepSleepSummary").get("breathingRate").asDouble(),
72+
(float) value.get("remSleepSummary").get("breathingRate").asDouble(),
73+
(float) value.get("fullSleepSummary").get("breathingRate").asDouble(),
74+
(float) value.get("lightSleepSummary").get("breathingRate").asDouble());
7875
return new TopicData(time, breathingRateTopic, fitbitBr);
7976
}
8077
}

kafka-connect-fitbit-source/src/main/java/org/radarbase/connect/rest/fitbit/converter/FitbitSkinTemperatureAvroConverter.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,7 @@
2626
import org.slf4j.Logger;
2727
import org.slf4j.LoggerFactory;
2828

29-
import java.time.Instant;
30-
import java.time.LocalDateTime;
31-
import java.time.ZonedDateTime;
29+
import java.time.*;
3230
import java.util.HashMap;
3331
import java.util.Map;
3432
import java.util.stream.Stream;
@@ -68,24 +66,23 @@ protected Stream<TopicData> processRecords(FitbitRestRequest request, JsonNode r
6866

6967
return iterableToStream(tempSkin)
7068
.filter(m -> m != null && m.isObject())
71-
.flatMap(FitbitAvroConverter::iterableToStream)
7269
.map(tryOrNull(m -> parseTempSkin(m, startDate, timeReceived),
7370
(a, ex) -> logger.warn("Failed to convert skin temperature from request {}, {}", request, a, ex)));
7471
}
7572

7673
private TopicData parseTempSkin(JsonNode data, ZonedDateTime startDate, double timeReceived) {
77-
Instant time = startDate.with(LocalDateTime.parse(data.get("dateTime").asText())).toInstant();
74+
Instant time = LocalDate.parse(data.get("dateTime").asText()).atStartOfDay(ZoneOffset.UTC).toInstant();
7875
JsonNode value = data.get("value");
7976
if (value == null || !value.isObject()) {
8077
return null;
8178
}
82-
String logType = data.get("level").asText();
83-
FitbitSkinTemperature fitbitHrv = new FitbitSkinTemperature(
79+
String logType = data.get("logType").asText();
80+
FitbitSkinTemperature fitbitSkinTemperature = new FitbitSkinTemperature(
8481
time.toEpochMilli() / 1000d,
8582
timeReceived,
8683
(float) value.get("nightlyRelative").asDouble(),
8784
LOG_TYPE_MAP.getOrDefault(logType, FitbitSkinTemperatureLogType.UNKNOWN)
8885
);
89-
return new TopicData(time, skinTemperatureTopic, fitbitHrv);
86+
return new TopicData(time, skinTemperatureTopic, fitbitSkinTemperature);
9087
}
9188
}

kafka-connect-fitbit-source/src/main/java/org/radarbase/connect/rest/fitbit/route/FitbitSkinTemperatureRoute.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public FitbitSkinTemperatureRoute(FitbitRequestGenerator generator,
4040

4141
@Override
4242
protected String getUrlFormat(String baseUrl) {
43-
return baseUrl + "/1/user/%s/temp/skin/date/%s/%s/.json";
43+
return baseUrl + "/1/user/%s/temp/skin/date/%s/%s.json";
4444
}
4545

4646
protected Stream<FitbitRestRequest> createRequests(User user) {
@@ -59,4 +59,4 @@ Duration getDateRangeInterval() {
5959
public FitbitSkinTemperatureAvroConverter converter() {
6060
return converter;
6161
}
62-
}
62+
}

0 commit comments

Comments
 (0)