1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.linecorp.centraldogma.server.mirror;
18
19 import java.net.URI;
20 import java.util.Collections;
21 import java.util.Optional;
22 import java.util.Set;
23 import java.util.regex.Pattern;
24
25 import com.fasterxml.jackson.annotation.JsonSubTypes;
26 import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
27 import com.fasterxml.jackson.annotation.JsonTypeInfo;
28
29 import com.linecorp.centraldogma.server.internal.mirror.credential.AccessTokenMirrorCredential;
30 import com.linecorp.centraldogma.server.internal.mirror.credential.NoneMirrorCredential;
31 import com.linecorp.centraldogma.server.internal.mirror.credential.PasswordMirrorCredential;
32 import com.linecorp.centraldogma.server.internal.mirror.credential.PublicKeyMirrorCredential;
33
34
35
36
37 @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
38 @JsonSubTypes({
39 @Type(value = NoneMirrorCredential.class, name = "none"),
40 @Type(value = PasswordMirrorCredential.class, name = "password"),
41 @Type(value = PublicKeyMirrorCredential.class, name = "public_key"),
42 @Type(value = AccessTokenMirrorCredential.class, name = "access_token")
43 })
44 public interface MirrorCredential {
45
46 MirrorCredential FALLBACK = new NoneMirrorCredential(null, Collections.singleton(Pattern.compile("^.*$")));
47
48
49
50
51 Optional<String> id();
52
53
54
55
56 Set<Pattern> hostnamePatterns();
57
58
59
60
61
62
63 boolean matches(URI uri);
64 }