|
17 | 17 |
|
18 | 18 | package org.radarbase.connect.rest.fitbit; |
19 | 19 |
|
20 | | -import static io.ktor.http.URLUtilsKt.URLBuilder; |
21 | 20 | import static org.apache.kafka.common.config.ConfigDef.NO_DEFAULT_VALUE; |
22 | 21 |
|
23 | 22 | import java.lang.reflect.InvocationTargetException; |
| 23 | +import java.net.MalformedURLException; |
| 24 | +import java.net.URL; |
24 | 25 | import java.nio.charset.StandardCharsets; |
25 | 26 | import java.nio.file.Path; |
26 | 27 | import java.nio.file.Paths; |
|
30 | 31 | import java.util.List; |
31 | 32 | import java.util.Map; |
32 | 33 |
|
33 | | -import io.ktor.http.URLParserException; |
34 | | -import io.ktor.http.Url; |
35 | 34 | import okhttp3.Headers; |
| 35 | +import okhttp3.HttpUrl; |
| 36 | + |
36 | 37 | import org.apache.kafka.common.config.ConfigDef; |
37 | 38 | import org.apache.kafka.common.config.ConfigDef.Importance; |
38 | 39 | import org.apache.kafka.common.config.ConfigDef.NonEmptyString; |
@@ -331,6 +332,39 @@ public String toString() { |
331 | 332 | Width.SHORT, |
332 | 333 | FITBIT_INTRADAY_HEART_RATE_TOPIC_DISPLAY) |
333 | 334 |
|
| 335 | + .define(FITBIT_INTRADAY_HEART_RATE_VARIABILITY_TOPIC_CONFIG, |
| 336 | + Type.STRING, |
| 337 | + FITBIT_INTRADAY_HEART_RATE_VARIABILITY_TOPIC_DEFAULT, |
| 338 | + nonControlChar, |
| 339 | + Importance.LOW, |
| 340 | + FITBIT_INTRADAY_HEART_RATE_VARIABILITY_TOPIC_DOC, |
| 341 | + group, |
| 342 | + ++orderInGroup, |
| 343 | + Width.SHORT, |
| 344 | + FITBIT_INTRADAY_HEART_RATE_VARIABILITY_TOPIC_DISPLAY) |
| 345 | + |
| 346 | + .define(FITBIT_BREATHING_RATE_TOPIC_CONFIG, |
| 347 | + Type.STRING, |
| 348 | + FITBIT_BREATHING_RATE_TOPIC_DEFAULT, |
| 349 | + nonControlChar, |
| 350 | + Importance.LOW, |
| 351 | + FITBIT_BREATHING_RATE_TOPIC_DOC, |
| 352 | + group, |
| 353 | + ++orderInGroup, |
| 354 | + Width.SHORT, |
| 355 | + FITBIT_BREATHING_RATE_TOPIC_DISPLAY) |
| 356 | + |
| 357 | + .define(FITBIT_SKIN_TEMPERATURE_TOPIC_CONFIG, |
| 358 | + Type.STRING, |
| 359 | + FITBIT_SKIN_TEMPERATURE_TOPIC_DEFAULT, |
| 360 | + nonControlChar, |
| 361 | + Importance.LOW, |
| 362 | + FITBIT_SKIN_TEMPERATURE_TOPIC_DOC, |
| 363 | + group, |
| 364 | + ++orderInGroup, |
| 365 | + Width.SHORT, |
| 366 | + FITBIT_SKIN_TEMPERATURE_TOPIC_DISPLAY) |
| 367 | + |
334 | 368 | .define(FITBIT_RESTING_HEART_RATE_TOPIC_CONFIG, |
335 | 369 | Type.STRING, |
336 | 370 | FITBIT_RESTING_HEART_RATE_TOPIC_DEFAULT, |
@@ -497,18 +531,18 @@ public Path getFitbitUserCredentialsPath() { |
497 | 531 | return Paths.get(getString(FITBIT_USER_CREDENTIALS_DIR_CONFIG)); |
498 | 532 | } |
499 | 533 |
|
500 | | - public Url getFitbitUserRepositoryUrl() { |
| 534 | + public HttpUrl getFitbitUserRepositoryUrl() { |
501 | 535 | String urlString = getString(FITBIT_USER_REPOSITORY_URL_CONFIG).trim(); |
502 | 536 | if (urlString.charAt(urlString.length() - 1) != '/') { |
503 | 537 | urlString += '/'; |
504 | 538 | } |
505 | | - try { |
506 | | - return URLBuilder(urlString).build(); |
507 | | - } catch (URLParserException ex) { |
| 539 | + HttpUrl url = HttpUrl.parse(urlString); |
| 540 | + if (url == null) { |
508 | 541 | throw new ConfigException(FITBIT_USER_REPOSITORY_URL_CONFIG, |
509 | 542 | getString(FITBIT_USER_REPOSITORY_URL_CONFIG), |
510 | | - "User repository URL " + urlString + " cannot be parsed as URL: " + ex); |
| 543 | + "User repository URL " + urlString + " cannot be parsed as URL."); |
511 | 544 | } |
| 545 | + return url; |
512 | 546 | } |
513 | 547 |
|
514 | 548 | public Headers getClientCredentials() { |
@@ -551,17 +585,15 @@ public String getFitbitUserRepositoryClientSecret() { |
551 | 585 | return getPassword(FITBIT_USER_REPOSITORY_CLIENT_SECRET_CONFIG).value(); |
552 | 586 | } |
553 | 587 |
|
554 | | - public Url getFitbitUserRepositoryTokenUrl() { |
| 588 | + public URL getFitbitUserRepositoryTokenUrl() { |
555 | 589 | String value = getString(FITBIT_USER_REPOSITORY_TOKEN_URL_CONFIG); |
556 | 590 | if (value == null || value.isEmpty()) { |
557 | 591 | return null; |
558 | 592 | } else { |
559 | 593 | try { |
560 | | - return URLBuilder(value).build(); |
561 | | - } catch (URLParserException ex) { |
562 | | - throw new ConfigException(FITBIT_USER_REPOSITORY_URL_CONFIG, |
563 | | - getString(FITBIT_USER_REPOSITORY_URL_CONFIG), |
564 | | - "Fitbit user repository token URL " + value + " cannot be parsed as URL: " + ex); |
| 594 | + return new URL(getString(FITBIT_USER_REPOSITORY_TOKEN_URL_CONFIG)); |
| 595 | + } catch (MalformedURLException ex) { |
| 596 | + throw new ConfigException("Fitbit user repository token URL is invalid."); |
565 | 597 | } |
566 | 598 | } |
567 | 599 | } |
|
0 commit comments