cmr.client.common.util
Utility functions for general use by both the Clojure client and the ClojureScript client.
create-http-client-constructor
(create-http-client-constructor client-constructor-var client-data-constructor)
This is a utility function that returns a function for creating clients of a particular type, e.g., ingest, search, or access-control clients.
The arguments details are as follows:
client-constructor-var
- this is the var of that is assigned the value of the call tocreate-service-client-constructor
; it is passed so that the anonymous function below has something to refer to in support of multiple aritiesclient-data-constructor
- this is the constrcutor for the record that is used for the implementation of the protocol (that which is extended)
create-service-client-constructor
(create-service-client-constructor servie-type client-constructor-var client-data-constructor options-fn http-client-constructor)
This is a utility function that returns a function for creating clients of a particular type, e.g., ingest, search, or access-control clients.
The arguments details are as follows:
service-type
- must be one of the supported service types, notably:ingest
,:search
, or:access-control
client-constructor-var
- this is the var of that is assigned the value of the call tocreate-service-client-constructor
; it is passed so that the anonymous function below has something to refer to in support of multiple aritiesclient-data-constructor
- this is the constrcutor for the record that is used for the implementation of the protocol (that which is extended)options-fn
- a functin which creates the client client options, including basic defaults, for the implementation; it should be a function that in turn calls aCMR*ClientOpions
constructorhttp-client-constructor
- a function that instrantiates the CMR HTTP client used by all CMR service type clients (different for Clojure and ClojureScript)
This docstring is a bit dense; for more clarity, be sure to view the calls made to this function in both the Clojure and ClojureScript clients.
get-default-endpoint
(get-default-endpoint options service-key)
Get the default endpoint; if the client options specify an endpoint, then use that one.
get-endpoint
(get-endpoint service-key)
(get-endpoint environment-type service-key)
Get the default endpoint for a given CMR service. If an environment type is provided, override the default and get the endpoint for that type.
import-def
macro
(import-def from-ns def-name)
Import a single function or var:
(import-def a b) => (def b a/b)
import-vars
macro
(import-vars & imports)
Import multiple defs from multiple namespaces.
This works for vars and functions, but not macros. Uses the same syntax as potemkin.namespaces/import-vars
, namely:
(import-vars
[m.n.ns1 a b]
[x.y.ns2 d e f])
parse-endpoint
(parse-endpoint endpoint)
(parse-endpoint endpoint service-key)
Given a string or a deployment environment and a service key, retur the service endpoint.
with-callback
(with-callback chan callback)
A utility function for running a callback function when a channel receives data.