1 package com.atlassian.asap.feign;
2
3 import com.atlassian.asap.api.Jwt;
4 import com.atlassian.asap.api.JwtBuilder;
5 import com.atlassian.asap.api.client.http.AuthorizationHeaderGenerator;
6 import com.atlassian.asap.api.exception.CannotRetrieveKeyException;
7 import com.atlassian.asap.api.exception.InvalidTokenException;
8 import feign.RequestInterceptor;
9 import feign.RequestTemplate;
10
11 import java.util.Objects;
12
13
14
15
16 public class AsapInterceptor implements RequestInterceptor {
17 private final AuthorizationHeaderGenerator authorizationHeaderGenerator;
18 private final Jwt jwtPrototype;
19
20 public AsapInterceptor(AuthorizationHeaderGenerator authorizationHeaderGenerator, Jwt jwtPrototype) {
21 this.authorizationHeaderGenerator = Objects.requireNonNull(authorizationHeaderGenerator);
22 this.jwtPrototype = Objects.requireNonNull(jwtPrototype);
23 }
24
25 @Override
26 public void apply(RequestTemplate requestTemplate) {
27 Jwt jwt = JwtBuilder.newFromPrototype(jwtPrototype).build();
28 try {
29 requestTemplate.header("Authorization", authorizationHeaderGenerator.generateAuthorizationHeader(jwt));
30 } catch (InvalidTokenException e) {
31 throw new RuntimeException("Invalid prototype token", e);
32 } catch (CannotRetrieveKeyException e) {
33 e.printStackTrace();
34 }
35 }
36 }