aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2021-08-22 07:30:20 +0300
committerGravatar Vitaly Takmazov2021-08-22 07:30:20 +0300
commit58b1fbbdd610de31a5883813206f9086e241207e (patch)
tree2922407c2a5701f3fa8f53cde7b485ceccc3795f /src
parent03d42d6e6ccaee4ff9d2a0808e51e5f9f0dc18c3 (diff)
ActivityPub: Mention includes domain in the name property
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/juick/util/UserUtils.java26
-rw-r--r--src/main/java/com/juick/www/api/activity/model/objects/Mention.java5
-rw-r--r--src/test/java/com/juick/UserTest.java7
3 files changed, 37 insertions, 1 deletions
diff --git a/src/main/java/com/juick/util/UserUtils.java b/src/main/java/com/juick/util/UserUtils.java
new file mode 100644
index 00000000..d43ad868
--- /dev/null
+++ b/src/main/java/com/juick/util/UserUtils.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008-2021, Juick
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package com.juick.util;
+
+import java.net.URI;
+
+public class UserUtils {
+ public static String getPersonIdentifier(String name, URI uri) {
+ return String.format("@%s@%s", name, uri.getHost());
+ }
+}
diff --git a/src/main/java/com/juick/www/api/activity/model/objects/Mention.java b/src/main/java/com/juick/www/api/activity/model/objects/Mention.java
index 3e5ff284..30ba4d10 100644
--- a/src/main/java/com/juick/www/api/activity/model/objects/Mention.java
+++ b/src/main/java/com/juick/www/api/activity/model/objects/Mention.java
@@ -17,13 +17,16 @@
package com.juick.www.api.activity.model.objects;
+import java.net.URI;
+
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.juick.util.UserUtils;
public class Mention extends Link {
@JsonCreator
public Mention(@JsonProperty("href") String href, @JsonProperty("name") String name) {
this.setHref(href);
- this.setName(name);
+ this.setName(UserUtils.getPersonIdentifier(name, URI.create(href)));
}
}
diff --git a/src/test/java/com/juick/UserTest.java b/src/test/java/com/juick/UserTest.java
index 9af67467..6c0cdb88 100644
--- a/src/test/java/com/juick/UserTest.java
+++ b/src/test/java/com/juick/UserTest.java
@@ -20,6 +20,8 @@ package com.juick;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.juick.model.User;
import com.juick.test.util.MockUtils;
+import com.juick.www.api.activity.model.objects.Mention;
+
import org.junit.jupiter.api.Test;
import java.io.IOException;
@@ -36,4 +38,9 @@ public class UserTest {
assertEquals(ugnich, jsonUgnich);
}
+ @Test
+ public void mentionFormat() {
+ Mention mention = new Mention("https://example.com/users/test", "testuser");
+ assertEquals("@testuser@example.com", mention.getName());
+ }
}