Skip to content

Commit 66ddeec

Browse files
authoredJan 28, 2019
Merge pull request #10 from circleci/bostonaholic/privatize-fn
Privatize circleci.analytics-clj.core/common-fields
2 parents 8d1033e + 8aac133 commit 66ddeec

File tree

5 files changed

+59
-52
lines changed

5 files changed

+59
-52
lines changed
 

‎CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
Version 0.8.0 (Unreleased)
2+
==========================
3+
4+
* [REMOVED](https://github.com/circleci/analytics-clj/pull/10): Privatize circleci.analytics-clj.core/common-fields
5+
16
Version 0.7.1 (January 27, 2019)
27
================================
38

‎docs/circleci.analytics-clj.core.html

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
<!DOCTYPE html PUBLIC ""
22
"">
3-
<html><head><meta charset="UTF-8" /><title>circleci.analytics-clj.core documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Analytics-clj</span> <span class="project-version">0.7.1</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1 current"><a href="circleci.analytics-clj.core.html"><div class="inner"><span>circleci.analytics-clj.core</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-alias"><div class="inner"><span>alias</span></div></a></li><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-common-fields"><div class="inner"><span>common-fields</span></div></a></li><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-enqueue"><div class="inner"><span>enqueue</span></div></a></li><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-flush"><div class="inner"><span>flush</span></div></a></li><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-group"><div class="inner"><span>group</span></div></a></li><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-identify"><div class="inner"><span>identify</span></div></a></li><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-initialize"><div class="inner"><span>initialize</span></div></a></li><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-page"><div class="inner"><span>page</span></div></a></li><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-screen"><div class="inner"><span>screen</span></div></a></li><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-shutdown"><div class="inner"><span>shutdown</span></div></a></li><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-track"><div class="inner"><span>track</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">circleci.analytics-clj.core</h1><div class="doc"><pre class="plaintext"></pre></div><div class="public anchor" id="var-alias"><h3>alias</h3><h4 class="added">added in 0.4.0</h4><div class="usage"><code>(alias analytics previous-id user-id)</code><code>(alias analytics previous-id user-id options)</code></div><div class="doc"><pre class="plaintext">`alias` is how you associate one identity with another.
3+
<html><head><meta charset="UTF-8" /><title>circleci.analytics-clj.core documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Analytics-clj</span> <span class="project-version">0.7.1</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1 current"><a href="circleci.analytics-clj.core.html"><div class="inner"><span>circleci.analytics-clj.core</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-alias"><div class="inner"><span>alias</span></div></a></li><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-enqueue"><div class="inner"><span>enqueue</span></div></a></li><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-flush"><div class="inner"><span>flush</span></div></a></li><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-group"><div class="inner"><span>group</span></div></a></li><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-identify"><div class="inner"><span>identify</span></div></a></li><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-initialize"><div class="inner"><span>initialize</span></div></a></li><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-page"><div class="inner"><span>page</span></div></a></li><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-screen"><div class="inner"><span>screen</span></div></a></li><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-shutdown"><div class="inner"><span>shutdown</span></div></a></li><li class="depth-1"><a href="circleci.analytics-clj.core.html#var-track"><div class="inner"><span>track</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">circleci.analytics-clj.core</h1><div class="doc"><pre class="plaintext"></pre></div><div class="public anchor" id="var-alias"><h3>alias</h3><h4 class="added">added in 0.4.0</h4><div class="usage"><code>(alias analytics previous-id user-id)</code><code>(alias analytics previous-id user-id options)</code></div><div class="doc"><pre class="plaintext">`alias` is how you associate one identity with another.
44
This is an advanced method, but it is required to manage
5-
user identities successfully in some of our integrations.</pre></div></div><div class="public anchor" id="var-common-fields"><h3>common-fields</h3><h4 class="added">added in 0.4.0</h4><div class="usage"><code>(common-fields message-builder {:keys [anonymous-id context integration-options integrations timestamp message-id user-id]})</code></div><div class="doc"><pre class="plaintext">The `MessageBuilder` interface has a set of fields common to all messages.
6-
7-
<a href="https://segment.com/docs/spec/common/">https://segment.com/docs/spec/common/</a></pre></div></div><div class="public anchor" id="var-enqueue"><h3>enqueue</h3><h4 class="added">added in 0.4.0</h4><div class="usage"><code>(enqueue analytics message-builder)</code></div><div class="doc"><pre class="plaintext">Top-level `enqueue` function to allow for extensibility in the future.
5+
user identities successfully in some of our integrations.</pre></div></div><div class="public anchor" id="var-enqueue"><h3>enqueue</h3><h4 class="added">added in 0.4.0</h4><div class="usage"><code>(enqueue analytics message-builder)</code></div><div class="doc"><pre class="plaintext">Top-level `enqueue` function to allow for extensibility in the future.
86
</pre></div></div><div class="public anchor" id="var-flush"><h3>flush</h3><h4 class="added">added in 0.4.0</h4><div class="usage"><code>(flush analytics)</code></div><div class="doc"><pre class="plaintext">Flush events in the message queue.
97
</pre></div></div><div class="public anchor" id="var-group"><h3>group</h3><h4 class="added">added in 0.4.0</h4><div class="usage"><code>(group analytics user-id group-id)</code><code>(group analytics user-id group-id traits)</code><code>(group analytics user-id group-id traits options)</code></div><div class="doc"><pre class="plaintext">`group` lets you associate an identified user with
108
a group. A group could be a company, organization, account,

‎docs/index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
<!DOCTYPE html PUBLIC ""
22
"">
3-
<html><head><meta charset="UTF-8" /><title>Analytics-clj 0.7.1</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Analytics-clj</span> <span class="project-version">0.7.1</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 current"><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1 "><a href="circleci.analytics-clj.core.html"><div class="inner"><span>circleci.analytics-clj.core</span></div></a></li></ul></div><div class="namespace-index" id="content"><h1><span class="project-title"><span class="project-name">Analytics-clj</span> <span class="project-version">0.7.1</span></span></h1><h5 class="license">Released under the <a href="http://www.eclipse.org/legal/epl-v10.html">Eclipse Public License</a></h5><div class="doc"><p>Idiomatic Clojure wrapper for the Segment.io 2.x Java client.</p></div><h2>Installation</h2><p>To install, add the following dependency to your project or build file:</p><pre class="deps">[circleci/analytics-clj "0.7.1"]</pre><h2>Namespaces</h2><div class="namespace"><h3><a href="circleci.analytics-clj.core.html">circleci.analytics-clj.core</a></h3><div class="doc"><pre class="plaintext"></pre></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="circleci.analytics-clj.core.html#var-alias">alias</a> </li><li> <a href="circleci.analytics-clj.core.html#var-common-fields">common-fields</a> </li><li> <a href="circleci.analytics-clj.core.html#var-enqueue">enqueue</a> </li><li> <a href="circleci.analytics-clj.core.html#var-flush">flush</a> </li><li> <a href="circleci.analytics-clj.core.html#var-group">group</a> </li><li> <a href="circleci.analytics-clj.core.html#var-identify">identify</a> </li><li> <a href="circleci.analytics-clj.core.html#var-initialize">initialize</a> </li><li> <a href="circleci.analytics-clj.core.html#var-page">page</a> </li><li> <a href="circleci.analytics-clj.core.html#var-screen">screen</a> </li><li> <a href="circleci.analytics-clj.core.html#var-shutdown">shutdown</a> </li><li> <a href="circleci.analytics-clj.core.html#var-track">track</a> </li></ul></div></div></div></body></html>
3+
<html><head><meta charset="UTF-8" /><title>Analytics-clj 0.7.1</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Analytics-clj</span> <span class="project-version">0.7.1</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 current"><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1 "><a href="circleci.analytics-clj.core.html"><div class="inner"><span>circleci.analytics-clj.core</span></div></a></li></ul></div><div class="namespace-index" id="content"><h1><span class="project-title"><span class="project-name">Analytics-clj</span> <span class="project-version">0.7.1</span></span></h1><h5 class="license">Released under the <a href="http://www.eclipse.org/legal/epl-v10.html">Eclipse Public License</a></h5><div class="doc"><p>Idiomatic Clojure wrapper for the Segment.io 2.x Java client.</p></div><h2>Installation</h2><p>To install, add the following dependency to your project or build file:</p><pre class="deps">[circleci/analytics-clj "0.7.1"]</pre><h2>Namespaces</h2><div class="namespace"><h3><a href="circleci.analytics-clj.core.html">circleci.analytics-clj.core</a></h3><div class="doc"><pre class="plaintext"></pre></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="circleci.analytics-clj.core.html#var-alias">alias</a> </li><li> <a href="circleci.analytics-clj.core.html#var-enqueue">enqueue</a> </li><li> <a href="circleci.analytics-clj.core.html#var-flush">flush</a> </li><li> <a href="circleci.analytics-clj.core.html#var-group">group</a> </li><li> <a href="circleci.analytics-clj.core.html#var-identify">identify</a> </li><li> <a href="circleci.analytics-clj.core.html#var-initialize">initialize</a> </li><li> <a href="circleci.analytics-clj.core.html#var-page">page</a> </li><li> <a href="circleci.analytics-clj.core.html#var-screen">screen</a> </li><li> <a href="circleci.analytics-clj.core.html#var-shutdown">shutdown</a> </li><li> <a href="circleci.analytics-clj.core.html#var-track">track</a> </li></ul></div></div></div></body></html>

‎src/circleci/analytics_clj/common.clj

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
(ns circleci.analytics-clj.common
2+
(:require [circleci.analytics-clj.external :refer :all]
3+
[circleci.analytics-clj.utils :refer [string-keys]]))
4+
5+
(def ^:private ctx {"library" {"name" "analytics-clj"
6+
"version" "0.7.1"}})
7+
8+
(defn common-fields
9+
"The `MessageBuilder` interface has a set of fields common to all messages.
10+
11+
https://segment.com/docs/spec/common/"
12+
13+
{:added "0.4.0"}
14+
15+
[message-builder {:keys [anonymous-id context integration-options integrations timestamp message-id user-id]}]
16+
(letfn [(enable-integrations [message-builder integrations]
17+
(doseq [[integration enable?] integrations]
18+
(enable-integration* message-builder integration enable?)))
19+
20+
(enable-integration-options [message-builder integration-options]
21+
(doseq [[integration options] integration-options]
22+
(integration-options* message-builder integration (string-keys options))))]
23+
24+
(doto message-builder
25+
(context* (merge ctx (string-keys context)))
26+
27+
(cond-> (not (nil? anonymous-id))
28+
(anonymous-id* anonymous-id))
29+
30+
(cond-> (not (nil? integration-options))
31+
(enable-integration-options integration-options))
32+
33+
(cond-> (not (nil? integrations))
34+
(enable-integrations integrations))
35+
36+
(cond-> (not (nil? timestamp))
37+
(timestamp* timestamp))
38+
39+
(cond-> (not (nil? message-id))
40+
(message-id* message-id))
41+
42+
(cond-> (not (nil? user-id))
43+
(user-id* user-id)))))

‎src/circleci/analytics_clj/core.clj

+8-47
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
(ns circleci.analytics-clj.core
22
(:refer-clojure :exclude [alias flush])
3-
(:require [circleci.analytics-clj.external :refer :all]
3+
(:require [circleci.analytics-clj.common :as common]
4+
[circleci.analytics-clj.external :refer :all]
45
[circleci.analytics-clj.utils :refer [string-keys]])
56
(:import (com.segment.analytics Analytics)
67
(com.segment.analytics.messages AliasMessage
@@ -10,9 +11,6 @@
1011
ScreenMessage
1112
TrackMessage)))
1213

13-
(def ^:private ctx {"library" {"name" "analytics-clj"
14-
"version" "0.7.1"}})
15-
1614
(defn initialize
1715
"Start building an Analytics instance."
1816

@@ -59,43 +57,6 @@
5957
[^Analytics analytics]
6058
(.shutdown analytics))
6159

62-
(defn common-fields
63-
"The `MessageBuilder` interface has a set of fields common to all messages.
64-
65-
https://segment.com/docs/spec/common/"
66-
67-
{:added "0.4.0"}
68-
69-
[message-builder {:keys [anonymous-id context integration-options integrations timestamp message-id user-id]}]
70-
(letfn [(enable-integrations [message-builder integrations]
71-
(doseq [[integration enable?] integrations]
72-
(enable-integration* message-builder integration enable?)))
73-
74-
(enable-integration-options [message-builder integration-options]
75-
(doseq [[integration options] integration-options]
76-
(integration-options* message-builder integration (string-keys options))))]
77-
78-
(doto message-builder
79-
(context* (merge ctx (string-keys context)))
80-
81-
(cond-> (not (nil? anonymous-id))
82-
(anonymous-id* anonymous-id))
83-
84-
(cond-> (not (nil? integration-options))
85-
(enable-integration-options integration-options))
86-
87-
(cond-> (not (nil? integrations))
88-
(enable-integrations integrations))
89-
90-
(cond-> (not (nil? timestamp))
91-
(timestamp* timestamp))
92-
93-
(cond-> (not (nil? message-id))
94-
(message-id* message-id))
95-
96-
(cond-> (not (nil? user-id))
97-
(user-id* user-id)))))
98-
9960
(defn identify
10061
"`identify` lets you tie a user to their actions and
10162
record traits about them. It includes a unique User ID
@@ -111,7 +72,7 @@
11172

11273
([^Analytics analytics user-id traits options]
11374
(enqueue analytics (doto (IdentifyMessage/builder)
114-
(common-fields (merge {:user-id user-id} options))
75+
(common/common-fields (merge {:user-id user-id} options))
11576
(cond-> (not (nil? traits)) (traits* (string-keys traits)))))))
11677

11778
(defn track
@@ -129,7 +90,7 @@
12990

13091
([^Analytics analytics user-id event properties options]
13192
(enqueue analytics (doto (TrackMessage/builder event)
132-
(common-fields (merge {:user-id user-id} options))
93+
(common/common-fields (merge {:user-id user-id} options))
13394
(cond-> (not (nil? properties)) (properties* (string-keys properties)))))))
13495

13596
(defn screen
@@ -147,7 +108,7 @@
147108

148109
([^Analytics analytics user-id name properties options]
149110
(enqueue analytics (doto (ScreenMessage/builder name)
150-
(common-fields (merge {:user-id user-id} options))
111+
(common/common-fields (merge {:user-id user-id} options))
151112
(cond-> (not (nil? properties)) (properties* (string-keys properties)))))))
152113

153114
(defn page
@@ -165,7 +126,7 @@
165126

166127
([^Analytics analytics user-id name properties options]
167128
(enqueue analytics (doto (PageMessage/builder name)
168-
(common-fields (merge {:user-id user-id} options))
129+
(common/common-fields (merge {:user-id user-id} options))
169130
(cond-> (not (nil? properties)) (properties* (string-keys properties)))))))
170131

171132
(defn group
@@ -184,7 +145,7 @@
184145

185146
([^Analytics analytics user-id group-id traits options]
186147
(enqueue analytics (doto (GroupMessage/builder group-id)
187-
(common-fields (merge {:user-id user-id} options))
148+
(common/common-fields (merge {:user-id user-id} options))
188149
(cond-> (not (nil? traits)) (traits* (string-keys traits)))))))
189150

190151
(defn alias
@@ -199,4 +160,4 @@
199160

200161
([^Analytics analytics previous-id user-id options]
201162
(enqueue analytics (doto (AliasMessage/builder previous-id)
202-
(common-fields (merge {:user-id user-id} options))))))
163+
(common/common-fields (merge {:user-id user-id} options))))))

0 commit comments

Comments
 (0)
Failed to load comments.