Skip to content

Cleanup project #13

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Jun 16, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
version: 2.1

executor_defaults: &executor_defaults
working_directory: ~/repo

# We exercise the following JVMs:
# * those officially supported by Clojure (atm: 8 and 11)
# * plus, whatever the latest version is.
executors:
openjdk8:
docker:
- image: circleci/clojure:openjdk-8-lein-2.9.5
environment:
LEIN_ROOT: "true"
JVM_OPTS: -Xmx3200m
<<: *executor_defaults
openjdk11:
docker:
- image: circleci/clojure:openjdk-11-lein-2.9.5
environment:
LEIN_ROOT: "true"
JVM_OPTS: -Xmx3200m --illegal-access=deny
<<: *executor_defaults
openjdk16:
docker:
- image: circleci/clojure:openjdk-16-lein-2.9.5-buster
environment:
LEIN_ROOT: "true"
JVM_OPTS: -Xmx3200m --illegal-access=deny
<<: *executor_defaults

jobs:
test:
parameters:
executor:
type: executor
clojure-version:
type: string
executor: << parameters.executor >>
steps:
- checkout

- restore_cache:
keys:
- v1-dependencies-{{ checksum "project.clj" }}

- run:
name: Fetch dependencies
command: |
lein with-profile +test deps

- save_cache:
paths:
- ~/.m2
key: v1-dependencies-{{ checksum "project.clj" }}

- run:
name: Run test suite
command: lein with-profile -user,-dev,+test,+<< parameters.clojure-version >> do clean, test

workflows:
default:
jobs:
- test:
matrix:
parameters:
executor: [openjdk8, openjdk11, openjdk16]
clojure-version: ["1.7", "1.8", "1.9", "1.10"]
1 change: 0 additions & 1 deletion .travis.yml

This file was deleted.

9 changes: 0 additions & 9 deletions Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,15 +72,6 @@ More example requests:
;; Send form params as a urlencoded body
(client/post "http//site.com" {:form-params {:foo "bar"}})

;; Multipart form uploads/posts
;; a map or vector works as the multipart object. Use a vector of
;; vectors if you need to preserve order, a map otherwise.
(client/post "http//example.org" {:multipart [["title" "My Awesome Picture"]
["Content/type" "image/jpeg"]
["file" (clojure.java.io/file "pic.jpg")]]})
;; Multipart values can be one of the following:
;; String, InputStream, File, or a byte-array

;; Basic authentication
(client/get "http://site.com/protected" {:basic-auth ["user" "pass"]})
(client/get "http://site.com/protected" {:basic-auth "user:pass"})
Expand Down
22 changes: 13 additions & 9 deletions project.clj
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,19 @@
:url "http://www.opensource.org/licenses/mit-license.php"}
:dependencies [[org.clojure/clojure "1.8.0"]
[slingshot "0.12.2"]]
:profiles {:dev {:dependencies [[ring/ring-jetty-adapter "1.3.2"]
[ring/ring-devel "1.3.2"]]}
:1.4 {:dependencies [[org.clojure/clojure "1.4.0"]]}
:1.5 {:dependencies [[org.clojure/clojure "1.5.0"]]}
:profiles {:test {:dependencies [[ring/ring-jetty-adapter "1.3.2"]
[ch.qos.logback/logback-classic "1.2.3"
:exclusions [org.slf4j/slf4j-api]]
[org.slf4j/jcl-over-slf4j "1.7.26"]
[org.slf4j/jul-to-slf4j "1.7.26"]
[org.slf4j/log4j-over-slf4j "1.7.26"]]
:resource-paths ["test-resources"]}
:1.7 {:dependencies [[org.clojure/clojure "1.7.0"]]}
:1.8 {:dependencies [[org.clojure/clojure "1.8.0"]]}
:1.9 {:dependencies [[org.clojure/clojure "1.9.0"]]}}
:test-selectors {:default #(not (:integration %))
:integration :integration
:all (constantly true)}
:aliases {"all" ["with-profile" "dev,1.4:dev,1.5:dev,1.6:dev,1.7:dev,1.8:dev,1.9"]}
:1.9 {:dependencies [[org.clojure/clojure "1.9.0"]]}
:1.10 {:dependencies [[org.clojure/clojure "1.10.3"]]}}
:test-selectors {:default (constantly true)
:all (constantly true)
:unit #(not (:integration %))
:integration :integration}
:checksum-deps true)
4 changes: 2 additions & 2 deletions src/clj_http/lite/client.clj
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
(ns clj-http.lite.client
"Batteries-included HTTP client."
(:use [slingshot.slingshot :only [throw+]])
(:require [clojure.string :as str]
[clojure.java.io :as io]
[clj-http.lite.core :as core]
[clj-http.lite.links :refer [wrap-links]]
[clj-http.lite.util :as util])
[clj-http.lite.util :as util]
[slingshot.slingshot :refer [throw+]])
(:import (java.io InputStream File)
(java.net URL UnknownHostException))
(:refer-clojure :exclude (get update)))
Expand Down
11 changes: 6 additions & 5 deletions src/clj_http/lite/core.clj
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,9 @@
(proxy [HostnameVerifier] []
(verify [^String hostname ^SSLSession session] true)))

(defn trust-invalid-manager []
(defn trust-invalid-manager
"This allows the ssl socket to connect with invalid/self-signed SSL certs."
[]
(reify X509TrustManager
(getAcceptedIssuers [this] nil)
(checkClientTrusted [this certs authType])
Expand All @@ -62,20 +63,20 @@
the clj-http uses ByteArrays for the bodies."
[{:keys [request-method scheme server-name server-port uri query-string
headers content-type character-encoding body socket-timeout
conn-timeout multipart debug insecure? save-request? follow-redirects
conn-timeout debug insecure? save-request? follow-redirects
chunk-size] :as req}]
(let [http-url (str (name scheme) "://" server-name
(when server-port (str ":" server-port))
uri
(when query-string (str "?" query-string)))
_ (when insecure?
(do (HttpsURLConnection/setDefaultSSLSocketFactory
(HttpsURLConnection/setDefaultSSLSocketFactory
(.getSocketFactory
(doto (SSLContext/getInstance "SSL")
(.init nil (into-array TrustManager [(trust-invalid-manager)])
(new SecureRandom)))))
(HttpsURLConnection/setDefaultHostnameVerifier (my-host-verifier))))
^HttpURLConnection conn (.openConnection ^URL (URL. http-url))]
(HttpsURLConnection/setDefaultHostnameVerifier (my-host-verifier)))
^HttpURLConnection conn (.openConnection (URL. http-url))]
(when (and content-type character-encoding)
(.setRequestProperty conn "Content-Type" (str content-type
"; charset="
Expand Down
19 changes: 19 additions & 0 deletions test-resources/logback.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{ISO8601,Europe/London} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>

<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>

<logger name="org.eclipse.jetty.server" level="ERROR"/>
<logger name="org.eclipse.jetty.util.log" level="ERROR"/>
<logger name="org.eclipse.jetty.util.ssl" level="ERROR"/>
<logger name="org.eclipse.jetty.util.thread" level="ERROR"/>
<logger name="org.eclipse.jetty.util.component" level="ERROR"/>
<logger name="org.eclipse.jetty.io.nio" level="ERROR"/>
</configuration>
22 changes: 8 additions & 14 deletions test/clj_http/test/client.clj
Original file line number Diff line number Diff line change
@@ -1,29 +1,23 @@
(ns clj-http.test.client
(:use [clojure.test]
[clj-http.test.core :only [run-server]])
(:require [clj-http.lite.client :as client]
[clj-http.lite.util :as util])
[clj-http.test.core :refer [base-req current-port with-server]]
[clj-http.lite.util :as util]
[clojure.test :refer [deftest is testing use-fixtures]])
(:import (java.net UnknownHostException)
(java.util Arrays)))

(def base-req
{:scheme :http
:server-name "localhost"
:server-port 18080})
(use-fixtures :each with-server)

(deftest ^{:integration true} roundtrip
(run-server)
(Thread/sleep 1000)
;; roundtrip with scheme as a keyword
(let [resp (client/request (merge base-req {:uri "/get" :method :get}))]
(let [resp (client/request (merge (base-req) {:uri "/get" :method :get}))]
(is (= 200 (:status resp)))
#_(is (= "close" (get-in resp [:headers "connection"])))
(is (= "get" (:body resp))))
;; roundtrip with scheme as a string
(let [resp (client/request (merge base-req {:uri "/get" :method :get
:scheme "http"}))]
(let [resp (client/request (merge (base-req) {:uri "/get"
:method :get
:scheme "http"}))]
(is (= 200 (:status resp)))
#_(is (= "close" (get-in resp [:headers "connection"])))
(is (= "get" (:body resp)))))

(defn is-passed [middleware req]
Expand Down
Loading