Skip to content

Commit c375c08

Browse files
committed
More flexible authentication, supports oauth as well
1 parent a37a068 commit c375c08

File tree

9 files changed

+66
-207
lines changed

9 files changed

+66
-207
lines changed

operator-gen-maven-plugin/src/main/java/org/acme/gen/DependentGen.java

+8-12
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@
6464
import jakarta.inject.Inject;
6565

6666
public class DependentGen {
67-
private static final String FIELD_AUTHENTICATION = "authentication";
68-
private static final String VAR_WEB_CLIENT_SESSION = "webClientSession";
67+
private static final String FIELD_CLIENT_PROVIDER = "clientProvider";
68+
//private static final String VAR_WEB_CLIENT_SESSION = "webClientSession";
6969
private static final String FIELD_API_CLIENT = "apiClient";
7070
private static final String FIELD_NAME_VERTX = "vertx";
7171
private static final String NAME_POSTFIX = "Dependent";
@@ -121,13 +121,9 @@ public void create() {
121121
new SimpleName(PerResourcePollingDependentResource.class.getSimpleName()),
122122
new NodeList<>(resourceType, crdType));
123123

124-
125-
126-
127124
ClassOrInterfaceDeclaration clazz = cu.addClass(className, Keyword.PUBLIC)
128125
.addExtendedType(dependentType);
129126

130-
131127
fields(clazz);
132128
constructor(clazz);
133129
initClientMethod(clazz);
@@ -196,16 +192,16 @@ private void initClientMethod(ClassOrInterfaceDeclaration clazz) {
196192
.addAnnotation(PostConstruct.class);
197193

198194

199-
ClassOrInterfaceType webClientSessionType = new ClassOrInterfaceType(null, WebClientSession.class.getSimpleName());
200-
ClassOrInterfaceType webClientType = new ClassOrInterfaceType(null, WebClient.class.getSimpleName());
195+
//ClassOrInterfaceType webClientSessionType = new ClassOrInterfaceType(null, WebClientSession.class.getSimpleName());
196+
//ClassOrInterfaceType webClientType = new ClassOrInterfaceType(null, WebClient.class.getSimpleName());
201197
ClassOrInterfaceType vertxRequestAdapterType = new ClassOrInterfaceType(null, VertXRequestAdapter.class.getSimpleName());
202198
ClassOrInterfaceType apiClientType = new ClassOrInterfaceType(null, "ApiClient");
203199

204200
NodeList<Statement> initClientStatements = new NodeList<>();
205201

206-
initClientStatements.add(new ExpressionStmt(new AssignExpr(new VariableDeclarationExpr(webClientSessionType, VAR_WEB_CLIENT_SESSION), new MethodCallExpr(new TypeExpr(webClientSessionType), "create", new NodeList<>(new MethodCallExpr(new TypeExpr(webClientType), "create", new NodeList<>(new NameExpr(FIELD_NAME_VERTX))))), Operator.ASSIGN)));
207-
initClientStatements.add(new ExpressionStmt(new MethodCallExpr(new NameExpr(FIELD_AUTHENTICATION), "addAuthHeaders", new NodeList<>(new NameExpr(VAR_WEB_CLIENT_SESSION)))));
208-
initClientStatements.add(new ExpressionStmt(new AssignExpr(new VariableDeclarationExpr(vertxRequestAdapterType, "requestAdapter"), new ObjectCreationExpr(null, vertxRequestAdapterType, new NodeList<>(new NameExpr(VAR_WEB_CLIENT_SESSION))), Operator.ASSIGN)));
202+
//initClientStatements.add(new ExpressionStmt(new AssignExpr(new VariableDeclarationExpr(webClientSessionType, VAR_WEB_CLIENT_SESSION), new MethodCallExpr(new TypeExpr(webClientSessionType), "create", new NodeList<>(new MethodCallExpr(new TypeExpr(webClientType), "create", new NodeList<>(new NameExpr(FIELD_NAME_VERTX))))), Operator.ASSIGN)));
203+
//initClientStatements.add(new ExpressionStmt(new MethodCallExpr(new NameExpr(FIELD_CLIENT_PROVIDER), "provide", new NodeList<>())));
204+
initClientStatements.add(new ExpressionStmt(new AssignExpr(new VariableDeclarationExpr(vertxRequestAdapterType, "requestAdapter"), new ObjectCreationExpr(null, vertxRequestAdapterType, new NodeList<>(new MethodCallExpr(new NameExpr(FIELD_CLIENT_PROVIDER), "provide", new NodeList<>()))), Operator.ASSIGN)));
209205
initClientStatements.add(new ExpressionStmt(new MethodCallExpr(new NameExpr("urlProvider"), "provide", new NodeList<>(new NameExpr("requestAdapter")))));
210206
initClientStatements.add(new ExpressionStmt(new AssignExpr(new NameExpr(FIELD_API_CLIENT), new ObjectCreationExpr(null, apiClientType, new NodeList<>(new NameExpr("requestAdapter"))), Operator.ASSIGN)));
211207
initClientMethod.setBody(new BlockStmt(initClientStatements));
@@ -214,7 +210,7 @@ private void initClientMethod(ClassOrInterfaceDeclaration clazz) {
214210
private void fields(ClassOrInterfaceDeclaration clazz) {
215211
clazz.addField(Vertx.class, FIELD_NAME_VERTX).addAnnotation(Inject.class);
216212
clazz.addField("ApiClient", FIELD_API_CLIENT, Keyword.PRIVATE);
217-
clazz.addField("HeaderAuthentication", FIELD_AUTHENTICATION).addAnnotation(Inject.class);
213+
clazz.addField("WebClientProvider", FIELD_CLIENT_PROVIDER).addAnnotation(Inject.class);
218214
clazz.addField("BaseUrlProvider", "urlProvider").addAnnotation(Inject.class);
219215
}
220216

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package org.operator.gen.v1alpha1;
2+
3+
import org.eclipse.microprofile.config.inject.ConfigProperty;
4+
5+
import io.vertx.core.Vertx;
6+
import io.vertx.ext.web.client.WebClient;
7+
import io.vertx.ext.web.client.WebClientSession;
8+
import jakarta.enterprise.context.Dependent;
9+
import jakarta.inject.Inject;
10+
11+
@Dependent
12+
public class AuthHeaderClientProvider implements WebClientProvider {
13+
@Inject()
14+
Vertx vertx;
15+
16+
@ConfigProperty(name = "gitea.api.token")
17+
private String token;
18+
19+
20+
@Override
21+
public WebClient provide() {
22+
WebClientSession webClientSession = WebClientSession.create(WebClient.create(vertx));
23+
webClientSession.addHeader("Authorization", "token " + token);
24+
return webClientSession;
25+
}
26+
27+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.operator.gen.v1alpha1;
2+
3+
import io.quarkus.arc.DefaultBean;
4+
import io.vertx.core.Vertx;
5+
import io.vertx.ext.web.client.WebClient;
6+
import jakarta.enterprise.context.Dependent;
7+
import jakarta.inject.Inject;
8+
9+
@DefaultBean
10+
@Dependent
11+
public class DefaultWebClientProvider implements WebClientProvider{
12+
@Inject()
13+
Vertx vertx;
14+
15+
@Override
16+
public WebClient provide() {
17+
return WebClient.create(vertx);
18+
}
19+
20+
}

samples/gitea-operator-gen/src/main/java/org/operator/gen/v1alpha1/HeaderAuthentication.java

-8
This file was deleted.

samples/gitea-operator-gen/src/main/java/org/operator/gen/v1alpha1/MyOrganizationDependent.java

-145
This file was deleted.

samples/gitea-operator-gen/src/main/java/org/operator/gen/v1alpha1/NoAuthentication.java

-16
This file was deleted.

samples/gitea-operator-gen/src/main/java/org/operator/gen/v1alpha1/TokenAuthentication.java

-19
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.operator.gen.v1alpha1;
2+
3+
import io.vertx.ext.web.client.WebClient;
4+
5+
public interface WebClientProvider {
6+
7+
WebClient provide();
8+
9+
}

samples/gitea-operator-gen/src/test/java/org/operator/gen/v1alpha1/DependentsIT.java

+2-7
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
import io.fabric8.openshift.client.OpenShiftClient;
2121
import io.kiota.http.vertx.VertXRequestAdapter;
2222
import io.vertx.core.Vertx;
23-
import io.vertx.ext.web.client.WebClient;
24-
import io.vertx.ext.web.client.WebClientSession;
2523
import jakarta.inject.Inject;
2624

2725
public abstract class DependentsIT<T, U extends CustomResource<?, ?>> {
@@ -32,18 +30,15 @@ public abstract class DependentsIT<T, U extends CustomResource<?, ?>> {
3230
@Inject
3331
Vertx vertx;
3432
@Inject
35-
HeaderAuthentication auth;
33+
AuthHeaderClientProvider clientProvider;
3634
@ConfigProperty(name = "gitea.api.uri")
3735
String giteaApiUri;
3836
@ConfigProperty(name = "test.kubernetes.namespace")
3937
String namespace;
4038

4139
@BeforeEach
4240
void setUp() {
43-
WebClient webClient = WebClient.create(vertx);
44-
WebClientSession webClientSession = WebClientSession.create(webClient);
45-
auth.addAuthHeaders(webClientSession);
46-
VertXRequestAdapter requestAdapter = new VertXRequestAdapter(webClientSession);
41+
VertXRequestAdapter requestAdapter = new VertXRequestAdapter(clientProvider.provide());
4742
requestAdapter.setBaseUrl(giteaApiUri);
4843
apiClient = new ApiClient(requestAdapter);
4944
}

0 commit comments

Comments
 (0)