You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2021/11/01 04:33:23 UTC
[james-project] 03/05: JAMES-3539 MemoryPushSubscriptionRepository
should handle InvalidPushSubscriptionKeys error
This is an automated email from the ASF dual-hosted git repository.
rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 0f4025952f1630458a008b36b812359a1bd9d3a7
Author: Quan Tran <hq...@linagora.com>
AuthorDate: Thu Oct 28 21:07:54 2021 +0700
JAMES-3539 MemoryPushSubscriptionRepository should handle InvalidPushSubscriptionKeys error
---
.../pushsubscription/MemoryPushSubscriptionRepository.java | 11 +++++++++++
.../org/apache/james/jmap/api/model/PushSubscription.scala | 4 +++-
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/pushsubscription/MemoryPushSubscriptionRepository.java b/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/pushsubscription/MemoryPushSubscriptionRepository.java
index 61c5c5a..488b616 100644
--- a/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/pushsubscription/MemoryPushSubscriptionRepository.java
+++ b/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/pushsubscription/MemoryPushSubscriptionRepository.java
@@ -32,10 +32,12 @@ import javax.inject.Inject;
import org.apache.james.core.Username;
import org.apache.james.jmap.api.model.DeviceClientIdInvalidException;
import org.apache.james.jmap.api.model.ExpireTimeInvalidException;
+import org.apache.james.jmap.api.model.InvalidPushSubscriptionKeys;
import org.apache.james.jmap.api.model.PushSubscription;
import org.apache.james.jmap.api.model.PushSubscriptionCreationRequest;
import org.apache.james.jmap.api.model.PushSubscriptionExpiredTime;
import org.apache.james.jmap.api.model.PushSubscriptionId;
+import org.apache.james.jmap.api.model.PushSubscriptionKeys;
import org.apache.james.jmap.api.model.PushSubscriptionNotFoundException;
import org.apache.james.jmap.api.model.TypeName;
import org.apache.james.jmap.api.pushsubscription.PushSubscriptionRepository;
@@ -70,6 +72,9 @@ public class MemoryPushSubscriptionRepository implements PushSubscriptionReposit
if (!isUniqueDeviceClientId(username, req.deviceClientId())) {
sink.error(new DeviceClientIdInvalidException(req.deviceClientId(), "deviceClientId must be unique"));
}
+ if (isInvalidPushSubscriptionKey(req.keys())) {
+ sink.error(new InvalidPushSubscriptionKeys(req.keys().get()));
+ }
})
.thenReturn(PushSubscription.from(request,
evaluateExpiresTime(OptionConverters.toJava(request.expires().map(PushSubscriptionExpiredTime::value)))))
@@ -158,4 +163,10 @@ public class MemoryPushSubscriptionRepository implements PushSubscriptionReposit
return table.row(username).values().stream()
.noneMatch(subscription -> subscription.deviceClientId().equals(deviceClientId));
}
+
+ private boolean isInvalidPushSubscriptionKey(Option<PushSubscriptionKeys> keysOption) {
+ return OptionConverters.toJava(keysOption)
+ .map(key -> key.p256dh().isEmpty() || key.auth().isEmpty())
+ .orElse(false);
+ }
}
diff --git a/server/data/data-jmap/src/main/scala/org/apache/james/jmap/api/model/PushSubscription.scala b/server/data/data-jmap/src/main/scala/org/apache/james/jmap/api/model/PushSubscription.scala
index 6d7b7ac..993b9e0 100644
--- a/server/data/data-jmap/src/main/scala/org/apache/james/jmap/api/model/PushSubscription.scala
+++ b/server/data/data-jmap/src/main/scala/org/apache/james/jmap/api/model/PushSubscription.scala
@@ -116,4 +116,6 @@ case class PushSubscriptionNotFoundException(id: PushSubscriptionId) extends Run
case class ExpireTimeInvalidException(expires: ZonedDateTime, message: String) extends RuntimeException
-case class DeviceClientIdInvalidException(deviceClientId: DeviceClientId, message: String) extends RuntimeException
\ No newline at end of file
+case class DeviceClientIdInvalidException(deviceClientId: DeviceClientId, message: String) extends RuntimeException
+
+case class InvalidPushSubscriptionKeys(keys: PushSubscriptionKeys) extends RuntimeException
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org