Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion nostr-java-api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>xyz.tcheeric</groupId>
<artifactId>nostr-java</artifactId>
<version>0.6.4-SNAPSHOT</version>
<version>0.6.5-SNAPSHOT</version>
</parent>
<artifactId>nostr-java-api</artifactId>
<packaging>jar</packaging>
Expand Down
1 change: 0 additions & 1 deletion nostr-java-api/src/main/java/module-info.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
requires nostr.event;
requires nostr.id;
requires nostr.client;
requires nostr.context;
requires nostr.encryption;
requires nostr.encryption.nip04dm;
requires nostr.encryption.nip44dm;
Expand Down
3 changes: 0 additions & 3 deletions nostr-java-api/src/main/java/nostr/api/NostrIF.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
import lombok.NonNull;
import nostr.base.IEvent;
import nostr.base.ISignable;
import nostr.context.RequestContext;
import nostr.event.BaseMessage;
import nostr.event.filter.Filters;
import nostr.event.impl.GenericEvent;
import nostr.id.Identity;
Expand All @@ -22,7 +20,6 @@ public interface NostrIF {
List<String> sendRequest(@NonNull Filters filters, @NonNull String subscriptionId, Map<String, String> relays);
List<String> sendRequest(@NonNull List<Filters> filtersList, @NonNull String subscriptionId);
List<String> sendRequest(@NonNull List<Filters> filtersList, @NonNull String subscriptionId, Map<String, String> relays);
List<String> sendRequest(@NonNull BaseMessage message, @NonNull RequestContext context);
NostrIF sign(@NonNull Identity identity, @NonNull ISignable signable);
boolean verify(@NonNull GenericEvent event);
Identity getSender();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@
import lombok.NonNull;
import nostr.base.IEvent;
import nostr.base.ISignable;
import nostr.context.RequestContext;
import nostr.crypto.schnorr.Schnorr;
import nostr.event.BaseMessage;
import nostr.event.filter.Filters;
import nostr.event.impl.GenericEvent;
import nostr.id.Identity;
Expand Down Expand Up @@ -116,11 +114,6 @@ public List<String> sendRequest(@NonNull Filters filters, @NonNull String subscr
}


@Override
public List<String> sendRequest(@NonNull BaseMessage message, @NonNull RequestContext context) {
return List.of();
}

@Override
public NostrIF sign(@NonNull Identity identity, @NonNull ISignable signable) {
identity.sign(signable);
Expand Down
2 changes: 1 addition & 1 deletion nostr-java-base/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>xyz.tcheeric</groupId>
<artifactId>nostr-java</artifactId>
<version>0.6.4-SNAPSHOT</version>
<version>0.6.5-SNAPSHOT</version>
</parent>

<artifactId>nostr-java-base</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion nostr-java-client/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>xyz.tcheeric</groupId>
<artifactId>nostr-java</artifactId>
<version>0.6.4-SNAPSHOT</version>
<version>0.6.5-SNAPSHOT</version>
</parent>
<artifactId>nostr-java-client</artifactId>
<packaging>jar</packaging>
Expand Down
1 change: 0 additions & 1 deletion nostr-java-client/src/main/java/module-info.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
requires java.logging;
requires nostr.util;
requires nostr.base;
requires nostr.context;
requires com.fasterxml.jackson.core;
requires reactor.core;
requires spring.webflux;
Expand Down
2 changes: 1 addition & 1 deletion nostr-java-crypto/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>xyz.tcheeric</groupId>
<artifactId>nostr-java</artifactId>
<version>0.6.4-SNAPSHOT</version>
<version>0.6.5-SNAPSHOT</version>
</parent>

<artifactId>nostr-java-crypto</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion nostr-java-encryption-nip04/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>xyz.tcheeric</groupId>
<artifactId>nostr-java</artifactId>
<version>0.6.4-SNAPSHOT</version>
<version>0.6.5-SNAPSHOT</version>
</parent>

<artifactId>nostr-java-encryption-nip04</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion nostr-java-encryption-nip44/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>xyz.tcheeric</groupId>
<artifactId>nostr-java</artifactId>
<version>0.6.4-SNAPSHOT</version>
<version>0.6.5-SNAPSHOT</version>
</parent>

<artifactId>nostr-java-encryption-nip44</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion nostr-java-encryption/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>xyz.tcheeric</groupId>
<artifactId>nostr-java</artifactId>
<version>0.6.4-SNAPSHOT</version>
<version>0.6.5-SNAPSHOT</version>
</parent>

<artifactId>nostr-java-encryption</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion nostr-java-event/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>xyz.tcheeric</groupId>
<artifactId>nostr-java</artifactId>
<version>0.6.4-SNAPSHOT</version>
<version>0.6.5-SNAPSHOT</version>
</parent>

<artifactId>nostr-java-event</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package nostr.event.filter;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;

@Getter
@EqualsAndHashCode
public abstract class AbstractFilterable<T> implements Filterable {
private final T filterable;
private final String filterKey;

protected AbstractFilterable(@NonNull T filterable, @NonNull String filterKey) {
this.filterable = filterable;
this.filterKey = filterKey;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,30 +14,19 @@
import java.util.stream.Collectors;
import java.util.stream.Stream;

@EqualsAndHashCode
public class AddressableTagFilter<T extends AddressTag> implements Filterable {
public final static String filterKey = "#a";
private final T addressableTag;
@EqualsAndHashCode(callSuper = true)
public class AddressableTagFilter<T extends AddressTag> extends AbstractFilterable<T> {
public final static String FILTER_KEY = "#a";

public AddressableTagFilter(T addressableTag) {
this.addressableTag = addressableTag;
super(addressableTag, FILTER_KEY);
}

@Override
public Predicate<GenericEvent> getPredicate() {
return this::compare;
}

@Override
public T getFilterCriterion() {
return addressableTag;
}

@Override
public String getFilterKey() {
return filterKey;
}

public static AddressTag createAddressTag(@NonNull JsonNode addressableTag) throws IllegalArgumentException {
try {
List<String> list = Arrays.stream(addressableTag.asText().split(":")).toList();
Expand All @@ -56,6 +45,7 @@ public static AddressTag createAddressTag(@NonNull JsonNode addressableTag) thro

@Override
public String getFilterableValue() {
T addressableTag = getAddressableTag();
Integer kind = addressableTag.getKind();
String hexString = addressableTag.getPublicKey().toHexString();
String id = addressableTag.getIdentifierTag().getId();
Expand All @@ -66,14 +56,19 @@ public String getFilterableValue() {
}

private boolean compare(@NonNull GenericEvent genericEvent) {
T addressableTag = getAddressableTag();
return
!genericEvent.getPubKey().toHexString().equals(
this.addressableTag.getPublicKey().toHexString()) ||
addressableTag.getPublicKey().toHexString()) ||
!genericEvent.getKind().equals(
this.addressableTag.getKind()) ||
addressableTag.getKind()) ||
getTypeSpecificTags(IdentifierTag.class, genericEvent).stream()
.anyMatch(identifierTag ->
identifierTag.getId().equals(
this.addressableTag.getIdentifierTag().getId()));
addressableTag.getIdentifierTag().getId()));
}

private T getAddressableTag() {
return super.getFilterable();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,33 +6,26 @@

import java.util.function.Predicate;

@EqualsAndHashCode
public class AuthorFilter<T extends PublicKey> implements Filterable {
public final static String filterKey = "authors";
private final T publicKey;
@EqualsAndHashCode(callSuper = true)
public class AuthorFilter<T extends PublicKey> extends AbstractFilterable<T> {
public final static String FILTER_KEY = "authors";

public AuthorFilter(T publicKey) {
this.publicKey = publicKey;
super(publicKey, FILTER_KEY);
}

@Override
public Predicate<GenericEvent> getPredicate() {
return (genericEvent) ->
this.publicKey.toHexString().equals(genericEvent.getPubKey().toHexString());
genericEvent.getPubKey().toHexString().equals(getFilterableValue());
}

@Override
public T getFilterCriterion() {
return publicKey;
}

@Override
public String getFilterKey() {
return filterKey;
public String getFilterableValue() {
return getAuthor().toHexString();
}

@Override
public String getFilterableValue() {
return publicKey.toHexString();
private T getAuthor() {
return super.getFilterable();
}
}
25 changes: 9 additions & 16 deletions nostr-java-event/src/main/java/nostr/event/filter/EventFilter.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,33 +5,26 @@

import java.util.function.Predicate;

@EqualsAndHashCode
public class EventFilter<T extends GenericEvent> implements Filterable {
public final static String filterKey = "ids";
private final T event;
@EqualsAndHashCode(callSuper = true)
public class EventFilter<T extends GenericEvent> extends AbstractFilterable<T> {
public final static String FILTER_KEY = "ids";

public EventFilter(T event) {
this.event = event;
super(event, FILTER_KEY);
}

@Override
public Predicate<GenericEvent> getPredicate() {
return (genericEvent) ->
this.event.getId().equals(genericEvent.getId());
genericEvent.getId().equals(getFilterableValue());
}

@Override
public T getFilterCriterion() {
return event;
}

@Override
public String getFilterKey() {
return filterKey;
public String getFilterableValue() {
return getEvent().getId();
}

@Override
public String getFilterableValue() {
return event.getId();
private T getEvent() {
return super.getFilterable();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public interface Filterable {
ObjectMapper mapper = new ObjectMapper();

Predicate<GenericEvent> getPredicate();
<T> T getFilterCriterion();
<T> T getFilterable();
Object getFilterableValue();
String getFilterKey();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,15 @@

import java.util.List;
import java.util.Map;
import java.util.Objects;

import static java.util.stream.Collectors.groupingBy;

@Getter
@EqualsAndHashCode
public class Filters {
public static final int DEFAULT_FILTERS_LIMIT = 10;
@Getter
private final Map<String, List<Filterable>> filtersMap;

@Getter
@Setter
private Integer limit = DEFAULT_FILTERS_LIMIT;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,43 +6,47 @@
import nostr.event.impl.GenericEvent;
import nostr.event.impl.GenericTag;

import java.util.HashSet;
import java.util.function.Predicate;

@EqualsAndHashCode
public class GenericTagQueryFilter<T extends GenericTagQuery> implements Filterable {
private final T genericTagQuery;
@EqualsAndHashCode(callSuper = true)
public class GenericTagQueryFilter<T extends GenericTagQuery> extends AbstractFilterable<T> {
public static final String HASH_PREFIX = "#";

public GenericTagQueryFilter(T genericTagQuery) {
this.genericTagQuery = genericTagQuery;
super(genericTagQuery, genericTagQuery.getTagName());
}

@Override
public Predicate<GenericEvent> getPredicate() {
return (genericEvent) ->
getTypeSpecificTags(GenericTag.class, genericEvent).stream()
.filter(genericTag ->
genericTag.getCode().equals(this.genericTagQuery.getTagName()))
genericTag.getCode().equals(stripLeadingHashTag()))
.anyMatch(genericTag ->
new HashSet<>(genericTag
genericTag
.getAttributes().stream().map(
ElementAttribute::getValue).toList())
ElementAttribute::getValue).toList()
.contains(
this.genericTagQuery.getValue()));
}

@Override
public T getFilterCriterion() {
return genericTagQuery;
getFilterableValue()));
}

@Override
public String getFilterKey() {
return genericTagQuery.getTagName();
return getGenericTagQuery().getTagName();
}

@Override
public String getFilterableValue() {
return genericTagQuery.getValue();
return getGenericTagQuery().getValue();
}

private T getGenericTagQuery() {
return super.getFilterable();
}

private String stripLeadingHashTag() {
return getFilterKey().startsWith(HASH_PREFIX) ?
getFilterKey().substring(1) :
getFilterKey();
}
}
Loading