Skip to content

Commit

Permalink
feat: implement TokensEndpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
jkoenig134 committed Sep 17, 2024
1 parent a079b0c commit 0ee7ca7
Show file tree
Hide file tree
Showing 6 changed files with 134 additions and 2 deletions.
10 changes: 8 additions & 2 deletions src/main/java/eu/enmeshed/ConnectorClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import eu.enmeshed.endpoints.OutgoingRequestsEndpoint;
import eu.enmeshed.endpoints.RelationshipTemplatesEndpoint;
import eu.enmeshed.endpoints.RelationshipsEndpoint;
import eu.enmeshed.endpoints.TokensEndpoint;
import feign.Feign;
import feign.Logger.Level;
import feign.Request.Options;
Expand Down Expand Up @@ -41,6 +42,7 @@ public class ConnectorClient {
public final RelationshipsEndpoint relationships;
public final IncomingRequestsEndpoint incomingRequests;
public final OutgoingRequestsEndpoint outgoingRequests;
public final TokensEndpoint tokens;

public ConnectorClient(
AccountEndpoint account,
Expand All @@ -51,7 +53,8 @@ public ConnectorClient(
RelationshipTemplatesEndpoint relationshipTemplates,
RelationshipsEndpoint relationships,
IncomingRequestsEndpoint incomingRequests,
OutgoingRequestsEndpoint outgoingRequests
OutgoingRequestsEndpoint outgoingRequests,
TokensEndpoint tokens
) {
this.account = account;
this.attributes = attributes;
Expand All @@ -62,6 +65,7 @@ public ConnectorClient(
this.relationships = relationships;
this.incomingRequests = incomingRequests;
this.outgoingRequests = outgoingRequests;
this.tokens = tokens;
}

public static ConnectorClient create(String url, String apiKey) {
Expand All @@ -87,6 +91,8 @@ public static ConnectorClient create(String url, String apiKey, Options options,
RelationshipTemplatesEndpoint.configure(url, builder),
RelationshipsEndpoint.configure(url, builder),
IncomingRequestsEndpoint.configure(url, builder),
OutgoingRequestsEndpoint.configure(url, builder));
OutgoingRequestsEndpoint.configure(url, builder),
TokensEndpoint.configure(url, builder)
);
}
}
44 changes: 44 additions & 0 deletions src/main/java/eu/enmeshed/endpoints/TokensEndpoint.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package eu.enmeshed.endpoints;

import eu.enmeshed.ConnectorResponse;
import eu.enmeshed.model.tokens.ConnectorToken;
import eu.enmeshed.requests.tokens.*;
import feign.Feign.Builder;
import feign.Headers;
import feign.Param;
import feign.QueryMap;
import feign.RequestLine;

import java.nio.ByteBuffer;
import java.util.List;

public interface TokensEndpoint {

static TokensEndpoint configure(String url, Builder builder) {
return builder.target(TokensEndpoint.class, url);
}

@RequestLine("GET /api/v2/Tokens/{tokenId}")
@Headers("Content-Type: application/json")
ConnectorResponse<ConnectorToken> getToken(@Param("tokenId") String tokenId);

@RequestLine("GET /api/v2/Tokens/{tokenId}")
@Headers("Accept: image/png")
ConnectorResponse<ByteBuffer> getQrCodeForToken(@Param("tokenId") String tokenId);

@RequestLine("GET /api/v2/Tokens/Own")
@Headers("Content-Type: application/json")
ConnectorResponse<List<ConnectorToken>> getOwnTokens(@QueryMap GetOwnTokensQuery query);

@RequestLine("POST /api/v2/Tokens/Own")
@Headers("Content-Type: application/json")
ConnectorResponse<ConnectorToken> createOwnToken(CreateOwnTokenRequest request);

@RequestLine("GET /api/v2/Tokens/Peer")
@Headers("Content-Type: application/json")
ConnectorResponse<List<ConnectorToken>> getPeerTokens(@QueryMap GetPeerTokensQuery query);

@RequestLine("POST /api/v2/Tokens/Peer")
@Headers("Content-Type: application/json")
ConnectorResponse<ConnectorToken> loadPeerToken(LoadPeerTokenRequest request);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package eu.enmeshed.requests.tokens;

import com.fasterxml.jackson.annotation.JsonProperty;
import java.time.ZonedDateTime;
import java.util.Map;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Builder
public class CreateOwnTokenRequest {

private ZonedDateTime expiresAt;
private Map<String, Object> content;
@JsonProperty("ephemeral")
private boolean ephemeral;
}
19 changes: 19 additions & 0 deletions src/main/java/eu/enmeshed/requests/tokens/GetOwnTokensQuery.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package eu.enmeshed.requests.tokens;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Builder
public class GetOwnTokensQuery {

private String createdAt;
private String createdByDevice;
private String expiresAt;
}
20 changes: 20 additions & 0 deletions src/main/java/eu/enmeshed/requests/tokens/GetPeerTokensQuery.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package eu.enmeshed.requests.tokens;

import java.time.ZonedDateTime;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Builder
public class GetPeerTokensQuery {

private String createdAt;
private String createdBy;
private String expiresAt;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package eu.enmeshed.requests.tokens;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Builder
public class LoadPeerTokenRequest {

private String reference;
@JsonProperty("ephemeral")
private boolean ephemeral;
}

0 comments on commit 0ee7ca7

Please sign in to comment.