Skip to content

Commit a47fb67

Browse files
authoredJan 28, 2019
Merge pull request #4 from circleci/bostonaholic/update-segment
update segment 2.0.0
2 parents fdadbe3 + cce2539 commit a47fb67

File tree

6 files changed

+35
-15
lines changed

6 files changed

+35
-15
lines changed
 

‎CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
Version 0.6.0 (Unreleased)
2+
==========================
3+
4+
* [ADDED](https://github.com/circleci/analytics-clj/pull/4): Allow sending a custom message ID.
5+
* Support for Segment 2.0.0
6+
17
Version 0.5.0 (January 24, 2019)
28
================================
39

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"">
33
<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.5.0</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.
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 user-id]})</code></div><div class="doc"><pre class="plaintext">The `MessageBuilder` interface has a set of fields common to all messages.
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.
66

77
<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.
88
</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.

‎project.clj

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
:license {:name "Eclipse Public License"
55
:url "http://www.eclipse.org/legal/epl-v10.html"}
66
:dependencies [[org.clojure/clojure "1.8.0"]
7-
[com.segment.analytics.java/analytics "2.0.0-RC7"]]
7+
[com.segment.analytics.java/analytics "2.0.0"]]
88
:profiles {:dev {:dependencies [[bond "0.2.6"]]}}
99
:plugins [[lein-codox "0.10.5"]]
1010
:codox {:output-path "docs"

‎src/circleci/analytics_clj/core.clj

+4-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363

6464
{:added "0.4.0"}
6565

66-
[message-builder {:keys [anonymous-id context integration-options integrations timestamp user-id]}]
66+
[message-builder {:keys [anonymous-id context integration-options integrations timestamp message-id user-id]}]
6767
(letfn [(enable-integrations [message-builder integrations]
6868
(doseq [[integration enable?] integrations]
6969
(enable-integration* message-builder integration enable?)))
@@ -87,6 +87,9 @@
8787
(cond-> (not (nil? timestamp))
8888
(timestamp* timestamp))
8989

90+
(cond-> (not (nil? message-id))
91+
(message-id* message-id))
92+
9093
(cond-> (not (nil? user-id))
9194
(user-id* user-id)))))
9295

‎src/circleci/analytics_clj/external.clj

+15-11
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,23 @@
33

44
;;; com.segment.analytics.Analytics$Builder
55

6-
(defn client* [analytics-builder client]
6+
(defn client* [^com.segment.analytics.Analytics$Builder analytics-builder client]
77
(doto analytics-builder
88
(.client client)))
99

10-
(defn log* [analytics-builder log]
10+
(defn log* [^com.segment.analytics.Analytics$Builder analytics-builder log]
1111
(doto analytics-builder
1212
(.log log)))
1313

14-
(defn endpoint* [analytics-builder endpoint]
14+
(defn endpoint* [^com.segment.analytics.Analytics$Builder analytics-builder endpoint]
1515
(doto analytics-builder
1616
(.endpoint endpoint)))
1717

18-
(defn network-executor* [analytics-builder network-executor]
18+
(defn network-executor* [^com.segment.analytics.Analytics$Builder analytics-builder network-executor]
1919
(doto analytics-builder
2020
(.networkExecutor network-executor)))
2121

22-
(defn callback* [analytics-builder callback]
22+
(defn callback* [^com.segment.analytics.Analytics$Builder analytics-builder callback]
2323
(doto analytics-builder
2424
(.callback callback)))
2525

@@ -41,18 +41,22 @@
4141
(doto message-builder
4242
(.integrationOptions integration options)))
4343

44-
(defn properties* [^MessageBuilder message-builder properties]
45-
(doto message-builder
46-
(.properties properties)))
47-
4844
(defn timestamp* [^MessageBuilder message-builder timestamp]
4945
(doto message-builder
5046
(.timestamp timestamp)))
5147

52-
(defn traits* [^MessageBuilder message-builder traits]
48+
(defn message-id* [^MessageBuilder message-builder message-id]
5349
(doto message-builder
54-
(.traits traits)))
50+
(.messageId message-id)))
5551

5652
(defn user-id* [^MessageBuilder message-builder user-id]
5753
(doto message-builder
5854
(.userId user-id)))
55+
56+
(defn properties* [message-builder properties]
57+
(doto message-builder
58+
(.properties properties)))
59+
60+
(defn traits* [message-builder traits]
61+
(doto message-builder
62+
(.traits traits)))

‎test/circleci/analytics_clj/core_test.clj

+8-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,14 @@
8585
(bond/with-spy [e/timestamp*]
8686
(a/track analytics "1234" "signup" {"company" "Acme Inc."} {:timestamp timestamp})
8787
(is (= 1 (-> e/timestamp* bond/calls count)))
88-
(is (= timestamp (-> e/timestamp* bond/calls first :args second)))))))
88+
(is (= timestamp (-> e/timestamp* bond/calls first :args second))))))
89+
90+
(testing "sending a custom message ID"
91+
(let [message-id (java.util.UUID/randomUUID)]
92+
(bond/with-spy [e/message-id*]
93+
(a/track analytics "1234" "signup" {"company" "Acme Inc."} {:message-id message-id})
94+
(is (= 1 (-> e/message-id* bond/calls count)))
95+
(is (= message-id (-> e/message-id* bond/calls first :args second)))))))
8996

9097
(deftest test-screen
9198
(testing "a simple screen call"

0 commit comments

Comments
 (0)
Failed to load comments.