-
Notifications
You must be signed in to change notification settings - Fork 7
/
builder.clj
64 lines (52 loc) · 2.15 KB
/
builder.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
(ns unleash-client-clojure.builder
(:import [no.finn.unleash CustomHttpHeadersProvider UnleashContextProvider]
[no.finn.unleash.util UnleashConfig UnleashConfig$Builder UnleashScheduledExecutor]
[no.finn.unleash.event UnleashSubscriber]))
(defn build ^UnleashConfig
[app-name ^String instance-id ^String api & fs]
(let [bldr
(-> (UnleashConfig$Builder.)
(.appName app-name)
(.instanceId instance-id)
(.unleashAPI api))]
(.build ^UnleashConfig$Builder
(reduce
(fn
([] bldr)
([bldr f]
(f bldr)))
bldr
fs))))
(defn custom-http-header [header-name header-value]
(fn [^UnleashConfig$Builder bldr]
(.customHttpHeader bldr header-name header-value)))
(defn send-metrics-interval [^Long interval-seconds]
(fn [^UnleashConfig$Builder bldr]
(.sendMetricsInterval bldr interval-seconds)))
(defn fetch-toggles-interval [^Long interval-seconds]
(fn [^UnleashConfig$Builder bldr]
(.fetchTogglesInterval bldr interval-seconds)))
(defn synchronous-fetch-on-initialisation [enable?]
(fn [^UnleashConfig$Builder bldr]
(.synchronousFetchOnInitialisation bldr enable?)))
(defn enable-proxy-authentication-by-jvm-properties []
(fn [^UnleashConfig$Builder bldr]
(.enableProxyAuthenticationByJvmProperties bldr)))
(defn backup-file [^String backup-file]
(fn [^UnleashConfig$Builder bldr]
(.backupFile bldr backup-file)))
(defn environment [^String environment]
(fn [^UnleashConfig$Builder bldr]
(.environment bldr environment)))
(defn custom-http-header-provider [^CustomHttpHeadersProvider provider]
(fn [^UnleashConfig$Builder bldr]
(.customHttpHeadersProvider bldr provider)))
(defn unleash-context-provider [^UnleashContextProvider provider]
(fn [^UnleashConfig$Builder bldr]
(.unleashContextProvider bldr provider)))
(defn scheduled-executor [^UnleashScheduledExecutor executor]
(fn [^UnleashConfig$Builder bldr]
(.scheduledExecutor bldr executor)))
(defn subscriber [^UnleashSubscriber subscriber]
(fn [^UnleashConfig$Builder bldr]
(.subscriber bldr subscriber)))