Skip to content

Commit 506fb93

Browse files
authored
Merge pull request #22 from keboola/deps-update
development update and refinements
2 parents 531e27e + 360af4a commit 506fb93

File tree

97 files changed

+3336
-5300
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

97 files changed

+3336
-5300
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,5 @@
44
/.nrepl-history
55
/.nrepl-port
66
/src/keboola/facebook/api/sandbox.clj
7+
/.fbtokens-env
8+
*tern-port

Dockerfile

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,11 @@
1-
FROM openjdk:8
1+
FROM clojure:boot-2.7.2-alpine
22
MAINTAINER <[email protected]>
33

4-
# download&install boot
5-
RUN wget -O /usr/bin/boot https://github.com/boot-clj/boot-bin/releases/download/latest/boot.sh \
6-
&& chmod +x /usr/bin/boot
4+
# ENV BOOT_JVM_OPTIONS=-Xmx256m
5+
ENV BOOT_CLOJURE_VERSION=1.9.0-beta1
76

8-
# Setup ENV
9-
ENV JAVA_HOME /opt/java
10-
ENV BOOT_HOME /.boot
11-
ENV BOOT_AS_ROOT yes
12-
ENV BOOT_LOCAL_REPO /m2
13-
ENV BOOT_JVM_OPTIONS=-Xmx256m
14-
ENV BOOT_CLOJURE_VERSION=1.9.0-alpha14
15-
ENV BOOT_VERSION=2.7.2
16-
17-
# download & install deps, cache REPL and web deps
18-
RUN boot repl -e '(System/exit 0)' && rm -rf target
197
ADD . /code
208
WORKDIR /code
21-
RUN boot build-insights
9+
RUN boot build
2210
EXPOSE 1111
23-
ENTRYPOINT ["java", "-jar", "-Xmx1g","targetinsights/exinsights-0.0.1.jar", "-d" , "/data/"]
11+
ENTRYPOINT ["java", "-jar", "-Xmx1g","target/ex-fb-graph-api-1.0.jar", "-d" , "/data/"]

Makefile

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
# Makefile commands to manage and simplify development
33

44
DATADIR = ${PWD}/tmp/
5+
FILTER =".*"
6+
-include .fbtokens-env
7+
export
58

69
#starts clojure repl in a docker container
710
repl:
@@ -11,13 +14,13 @@ repl:
1114
bash:
1215
docker-compose run --rm --entrypoint /bin/bash app
1316

14-
# builds java app jar file - result is targetinsights/project.jar file
17+
# builds java app jar file - result is targe/project.jar file
1518
build-jar:
16-
boot build-insights
19+
boot build
1720

1821
# build docker image from dockerfile
1922
build-image:
20-
docker build -t keboola/ex-facebook-insights .
23+
docker build -t keboola/ex-facebook-graph-api .
2124

2225
# runs extractor docker container - docker-runner command
2326
run-docker:
@@ -26,15 +29,17 @@ run-docker:
2629
# runs extractor a compiled jar file as java app. Built via boot build
2730
# command or make build-jar command.
2831
run-jar:
29-
java -Xmx1g -jar targetinsights/exinsights-0.0.1.jar -d $(DATADIR)
32+
java -Xmx1g -jar target/ex-fb-graph-api-1.0.jar -d $(DATADIR)
3033

3134
# runs extractor directly from boot ie runs as clojure program
3235
run-boot:
33-
boot run-insights --args "-d $(DATADIR)"
36+
boot run-extractor --args "-d $(DATADIR)"
37+
regenerate-snapshots:
38+
boot regenerate-snapshots "-f$(FILTER)"
3439

3540
docker-test:
3641
docker-compose run app test
3742

3843
# runs jar with visual vm profiler. Needs visualVM to be running with Start up profiler plugin
3944
run-jar-agent:
40-
java -Xmx256m -agentpath:/Applications/VisualVM.app/Contents/Resources/visualvm/profiler/lib/deployed/jdk16/mac/libprofilerinterface.jnilib=/Applications/VisualVM.app/Contents/Resources/visualvm/profiler/lib,5140 -jar targetinsights/project.jar -d tmp/
45+
java -Xmx256m -agentpath:/Applications/VisualVM.app/Contents/Resources/visualvm/profiler/lib/deployed/jdk16/mac/libprofilerinterface.jnilib=/Applications/VisualVM.app/Contents/Resources/visualvm/profiler/lib,5140 -jar target/ex-fb-graph-api-1.0.jar -d tmp/

build.boot

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,60 +2,63 @@
22
(set-env!
33
:source-paths #{"src" "test"}
44
:dependencies '[
5-
[org.clojure/clojure "1.9.0-alpha14"]
6-
[cheshire "5.6.3"]
7-
[clj-http "3.3.0"]
5+
[org.clojure/clojure "1.9.0-beta1"]
6+
[cheshire "5.8.0"]
7+
[clj-http "3.7.0"]
88
[clojure-csv/clojure-csv "2.0.1"]
99
[de.ubercode.clostache/clostache "1.4.0"]
1010
[org.clojure/tools.cli "0.3.5"]
11-
[semantic-csv "0.1.0"]
12-
[org.clojure/data.csv "0.1.3"]
11+
[semantic-csv "0.2.0"]
12+
[org.clojure/data.csv "0.1.4"]
1313
[org.clojure/test.check "0.9.0"]
14-
[org.clojure/core.async "0.2.395"]
14+
[org.clojure/core.async "0.3.443"]
1515
[adzerk/boot-test "1.2.0" :scope "test"]
1616
[clj-http-fake "1.0.3"]
1717
[slingshot "0.12.2"]
18-
[clj-time "0.12.2"]])
18+
[clj-time "0.14.0"]])
1919

20-
(require '[keboola.facebook.insights-extractor.core])
21-
(require '[keboola.regression-tests.core])
20+
(require '[keboola.facebook.extractor.core])
21+
(require '[keboola.snapshots.core])
2222
(require '[adzerk.boot-test :refer :all])
2323

24-
(deftask run-insights
25-
"run insights extractor"
24+
(deftask run-extractor
25+
"run extractor"
2626
[x args VAL str "arguments string for main- function"]
2727
(if-not args
2828
(do (boot.util/fail "arguments string x is requried. ")
2929
(*usage*)))
30-
((resolve 'keboola.facebook.insights-extractor.core/-main) args))
30+
((resolve 'keboola.facebook.extractor.core/-main) args))
3131

3232
(deftask generate-test
3333
"given data dir with config.json, this task runs extraktor,
34-
record api calls, create regression tests with recrded api calls and compare result dirs"
35-
[d data VAL str "name of directory in test/keboola/regresion_tests containing config.json"
34+
record api calls, create snapshot tests with recrded api calls and compare result dirs"
35+
[d data VAL str "name of directory in test/keboola/snapshots containing config.json"
3636
s skip-token bool "skip token anonymization in config.json"]
3737
(if-not data
3838
(do (boot.util/fail "arguments string d is requried. ")
3939
(*usage*)))
40-
((resolve 'keboola.regression-tests.core/generate-test) data (not skip-token)))
40+
((resolve 'keboola.snapshots.core/generate-test) data (not skip-token)))
4141

42-
(deftask build-insights
43-
"Builds an uberjar of insights extractor that can be run with java -jar"
42+
(deftask regenerate-snapshots [f dirfilter VAL str "regexp to filter dirs to process"]
43+
((resolve 'keboola.snapshots.core/regenerate-all-snapshot-dirs) dirfilter))
44+
45+
(deftask build
46+
"Builds an uberjar extractor that can be run with java -jar"
4447
[]
4548
(comp
4649
(aot :all true)
47-
(pom :project 'exinsights
48-
:version "0.0.1")
50+
(pom :project 'ex-fb-graph-api
51+
:version "1.0")
4952
(uber)
50-
(jar :main 'keboola.facebook.insights-extractor.core)
51-
(target :dir #{"targetinsights"})))
53+
(jar :main 'keboola.facebook.extractor.core)
54+
(target :dir #{"target"})))
5255

5356
(deftask start-docker-repl
5457
"run repl server on 1111 port"
5558
[]
5659
(require 'boot.repl)
5760
(swap! boot.repl/*default-dependencies*
58-
concat '[[cider/cider-nrepl "0.15.0-SNAPSHOT"]])
61+
concat '[[cider/cider-nrepl "0.15.1"]])
5962
(swap! boot.repl/*default-middleware*
6063
conj 'cider.nrepl/cider-middleware)
6164
(repl :bind "0.0.0.0" :port 1111)

src/keboola/docker/config.clj

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
(ns keboola.docker.config
22
(:require [cheshire.core :refer [parse-string]]
33
[clojure.string :refer [trim]]))
4-
4+
55

66
(def default-dir "/data/")
77

@@ -17,7 +17,7 @@
1717
file-content (slurp (trim (str dirpath "config.json")))]
1818
(parse-string file-content true))))
1919

20-
(def load-config (memoize load-config-once))
20+
(def load-config load-config-once)
2121

2222
(defn mkdirp [path]
2323
(let [dir (java.io.File. path)]
@@ -31,15 +31,15 @@
3131
([datadir]
3232
(let [result (mkdirp (str (check-path (trim datadir)) "out/tables/"))]
3333
result)))
34-
35-
34+
35+
3636
(defn config [& datadir]
3737
(apply load-config datadir))
3838

3939

4040
(defn parameters [& datadir]
4141
(:parameters (apply load-config datadir)))
42-
42+
4343

4444
(defn app-access-token [& datadir]
4545
(let

src/keboola/facebook/api/parser.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
(ns keboola.facebook.api.parser
2-
(:require [clojure.spec :as s]
2+
(:require [clojure.spec.alpha :as s]
33
[keboola.facebook.api.specs :as ds]
44
[keboola.docker.runtime :refer [app-error]]
55
[clj-time.core :as t]

src/keboola/facebook/api/request.clj

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
(ns keboola.facebook.api.request
2-
(:require [clojure.spec :as s]
2+
(:require [clojure.spec.alpha :as s]
33
[keboola.facebook.api.parser :as parser]
44
[keboola.docker.runtime :refer [log-strings app-error log-error]]
55
[slingshot.slingshot :refer [try+ throw+]]
@@ -117,14 +117,14 @@
117117
:fb-graph-node (:fb-graph-node params)
118118
:name (:table-name params)
119119
:data new-response}]
120-
120+
121121
(contains? new-response (keyword ex-account-id))
122122
[{
123123
:parent-id ex-account-id
124124
:fb-graph-node top-node
125125
:name top-node
126126
:data new-response}]
127-
127+
128128
:else
129129
(app-error (str "Unknown page structure:" (keys new-response) "next-page" next-page-url (dissoc params :body-data :response)))))))
130130

@@ -162,7 +162,7 @@
162162
response (make-get-request full-url query-params)
163163
response-body (:body response)
164164
sanitized-path (keyword (string/replace path #"/" "_"))]
165-
165+
166166
(log-strings "calling" full-url "with" preparsed-fields ids preparsed-since preparsed-until)
167167
(if (some? ids)
168168
(mapcat
@@ -174,7 +174,7 @@
174174
:table-name "page"
175175
:body-data [(if (not-empty path) {sanitized-path (second %)} (second %))]
176176
:response response-body})
177-
177+
178178
response-body)
179179
;else - no ids response
180180
(page-and-collect
@@ -185,7 +185,7 @@
185185
:table-name "page"
186186
:body-data [(if (not-empty path) {sanitized-path response-body} response-body)]
187187
:response (if (not-empty path) {sanitized-path response-body} response-body)}))))
188-
188+
189189

190190
(defn- collect-result [response api-fn]
191191
(lazy-seq
@@ -203,7 +203,7 @@
203203
(collect-result
204204
(:body (request-fn full-url))
205205
request-fn)))
206-
206+
207207

208208
(defn get-accounts [access-token & {:keys [version]}]
209209
(apply concat (get-request access-token "me/accounts" :version version)))

src/keboola/facebook/api/specs.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
(ns keboola.facebook.api.specs
2-
(:require [clojure.spec :as s]
2+
(:require [clojure.spec.alpha :as s]
33
[clojure.string :refer [blank?]]
44
[clojure.test.check.generators :as gen]))
55

src/keboola/facebook/insights_extractor/core.clj renamed to src/keboola/facebook/extractor/core.clj

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
1-
(ns keboola.facebook.insights-extractor.core
1+
(ns keboola.facebook.extractor.core
22
(:gen-class)
3-
(:require [clojure.tools.cli :refer [parse-opts]]
3+
(:require [clojure.string :as string]
4+
[clojure.tools.cli :refer [parse-opts]]
45
[keboola.docker.config :as docker-config]
6+
[keboola.docker.runtime
7+
:as
8+
docker-runtime
9+
:refer
10+
[app-error log log-error-and-exit log-strings user-error]]
11+
[keboola.facebook.extractor.query :as query]
12+
[keboola.facebook.extractor.sync-actions :as sync-actions]
513
[keboola.http.client :refer [fb-requests-count]]
6-
[keboola.docker.runtime :as docker-runtime :refer [log-error-and-exit user-error app-error]]
7-
[keboola.facebook.insights-extractor.query :as query]
8-
[keboola.facebook.insights-extractor.sync-actions :as sync-actions]
914
[keboola.utils.json-to-csv :as csv]
10-
[keboola.docker.runtime :refer [log log-strings]]
11-
[slingshot.slingshot :refer [try+ throw+]]
12-
[clojure.string :as string]))
15+
[slingshot.slingshot :refer [throw+ try+]]))
1316

1417
(def cli-options [["-d" "--dataDir path" "Path to data directory e.g. /data"]])
1518

1619
(defn usage [options-summary]
17-
(->> ["Keboola Facebook Insights Extractor"
20+
(->> ["Keboola Facebook Graph Api Extractor"
1821
"Usage: program-name options"
1922
"Options:"
2023
options-summary]

src/keboola/facebook/insights_extractor/output.clj renamed to src/keboola/facebook/extractor/output.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
(ns keboola.facebook.insights-extractor.output
1+
(ns keboola.facebook.extractor.output
22
(:require [keboola.utils.json-to-csv :as csv]
33
[keboola.docker.runtime :as runtime]
44
[keboola.docker.config :refer [mkdirp]]

0 commit comments

Comments
 (0)