Security News
The Unpaid Backbone of Open Source: Solo Maintainers Face Increasing Security Demands
Solo open source maintainers face burnout and security challenges, with 60% unpaid and 60% considering quitting.
com.ubirch.util:uuid_2.11
Advanced tools
camel-utils
resolvers ++= Seq(
Resolver.sonatypeRepo("releases")
)
libraryDependencies ++= Seq(
"com.ubirch.util" %% "camel-utils" % "1.0.0"
)
CamelActorUtil
and move endpoint uri generating code into new case classes SqsConfigConsumer
and SqsConfigProducer
org.scalatest:scalatest:3.0.5
config
resolvers ++= Seq(
Resolver.sonatypeRepo("releases")
)
libraryDependencies ++= Seq(
"com.ubirch.util" %% "config" % "0.2.2"
)
Version 0.2.0 introduced the mandatory parameter: ubirch.envid. It consists of a prefix (e.g. ubirch) and a postfix (-local, -dev, -demo, -prod). Some examples:
ubirch.envid="ubirch-prod"
ubirch.envid="ubirch-demo"
ubirch.envid="ubirch-dev"
ubirch.envid="ubirch-local"
com.typesafe:config:1.3.3
ConfigBase.stringWithDefault()
** ConfigBase.intWithDefault()
** ConfigBase.booleanWithDefault()
org.scalatest:scalatest:3.0.5
crypto
resolvers ++= Seq(
Resolver.sonatypeRepo("releases")
)
libraryDependencies ++= Seq(
"com.ubirch.util" %% "crypto" % "0.4.11"
)
joda-time:joda-time:2.10
org.joda:joda-convert:2.1.1
com.ubirch.util:config:0.2.3
Encryption
AES
DES
org.scalatest:scalatest:3.0.5
HashUtil
: replace bcrypt methods with PBKDF2EccUtil.encodePublicKey()
wasn't publicHashUtil.bcrypt*()
EccUtil.encodePublicKey
publicdate
resolvers ++= Seq(
Resolver.sonatypeRepo("releases")
)
libraryDependencies ++= Seq(
"com.ubirch.util" %% "date" % "0.5.2"
)
joda-time:joda-time:2.10
org.joda:joda-convert:2.1.1
org.scalatest:scalatest:3.0.5
DateUtil.toString_YYYY_MM_dd
DateUtil.dateRange
from Period
to Int
DateUtil.todayAtMidnight
DateUtil.dateRange
DateUtil.parseDateToUTC()
deep-check-model
resolvers ++= Seq(
Resolver.sonatypeRepo("releases"),
"elasticsearch-releases" at "https://artifacts.elastic.co/maven"
)
libraryDependencies ++= Seq(
"com.ubirch.util" %% "deep-check-model" % "0.3.1"
)
com.ubirch.util:json:0.5.1
org.json4s:json4s-*:3.6.0
com.ubirch.util:json:0.5.0
org.scalatest:scalatest:3.0.5
com.ubirch.util:json:0.4.4
DeepCheckResponseUtil
com.ubirch.util:json:0.4.3
DeepCheckResponse
from com.ubirch.util:response-util:0.1.6elasticsearch-client-binary
A client for Elasticsearch using the binary protocol through
TransportClient.
To use it mixin the trait ESSimpleStorage
or ESBulkStorage
and add the configuration documented below to your
project. If you prefer working with objects they exists as well under the same names.
In addition to this there's some other utils as well:
SortUtil
resolvers ++= Seq(
Resolver.sonatypeRepo("releases"),
"elasticsearch-releases" at "https://artifacts.elastic.co/maven"
)
libraryDependencies ++= Seq(
"com.ubirch.util" %% "elasticsearch-client-binary" % "3.0.1", // ES 6.4.0
"com.ubirch.util" %% "elasticsearch-client-binary" % "2.5.1" // ES 5.6.10
)
The following config is required to use the Elasticsearch binary client (NOTE: there's no default config!!!).
Config Item | Category | Description |
---|---|---|
esBinaryClient.connection.hosts | Connection | list of ES hosts to connect to |
esBinaryClient.connection.xpackEnabled | Connection | (optional) set to "true" to activate Shield/X-Pack (default=false) |
esBinaryClient.connection.settings | Connection | ES connection settings (like cluster, Shield/X-Pack configs, etc |
esBinaryClient.bulk.bulkActions | Flush | max number of items to trigger flush |
esBinaryClient.bulk.bulkSize | Flush | max size of of all documents (in mega bytes)) to trigger flush |
esBinaryClient.bulk.flushInterval | Flush | maximum number of seconds between flushes |
esBinaryClient.bulk.concurrentRequests | Connection Pool | maximum number of concurrent requests |
Example Config (minimum config to connect to cloud.elastic.co with Shield/X-Pack):
esBinaryClient {
connection {
hosts = ["1234asdf.us-east-1.aws.found.io:9343"]
xpackEnabled = true
settings = [
{ "cluster.name": "1234asdf" },
{ "xpack.security.user": ${ELASTIC_IO_USER}":"${ELASTIC_IO_PASSWORD} },
{ "xpack.security.transport.ssl.enabled": "true" },
{ "request.headers.X-Found-Cluster": "${cluster.name}" }
]
}
bulk { // only needed if you mixin `ESBulkStorage`
bulkActions = 10000
bulkSize = 10 # bulkSize in mega bytes
flushInterval = 1 # flush every x seconds
concurrentRequests = 2 # connection pooling: max concurrent requests
}
}
Example Config (extended config to connect to cloud.elastic.co with Shield/X-Pack):
esBinaryClient {
clusterName = "1234asdf"
connection {
hosts = [${esBinaryClient.clusterName}".us-east-1.aws.found.io:9343"]
xpackEnabled = true
settings = [
{ "cluster.name": ${esBinaryClient.clusterName} },
{ "xpack.security.user": ${ELASTIC_IO_USER}":"${ELASTIC_IO_PASSWORD} },
{ "xpack.security.transport.ssl.enabled": "true" },
{ "request.headers.X-Found-Cluster": "${cluster.name}" },
{ "xpack.ssl.key": "/path/to/client.key" }, // (optional)
{ "xpack.ssl.certificate": "/path/to/client.crt" }, // (optional)
{ "xpack.ssl.certificate_authorities": "/path/to/ca.crt" }, // (optional)
{ "transport.sniff": "true"}, // (optional)
{ "transport.ping_schedule": "5s"}, // (optional)
{ "client.transport.ping_timeout": "10s"}, // (optional) default: 5s
{ "client.transport.nodes_sampler_interval": "10s"} // (optional) default: 5s
]
}
bulk { // only needed if you mixin `ESBulkStorage`
bulkActions = 10000
bulkSize = 10 # bulkSize in mega bytes
flushInterval = 1 # flush every x seconds
concurrentRequests = 2 # connection pooling: max concurrent requests
}
}
Example Config (simple localhost cluster without Shield/X-Pack):
esBinaryClient {
connection {
hosts = ["localhost:9300", "localhost:9301"]
settings = [
{ "cluster.name": "my-test-cluster" }
]
}
bulk { // only needed if you mixin `ESBulkStorage`
bulkActions = 10000
bulkSize = 10 # bulkSize in mega bytes
flushInterval = 1 # flush every x seconds
concurrentRequests = 2 # connection pooling: max concurrent requests
}
}
com.ubirch.util:deep-check-model:0.3.1
com.ubirch.util:json:0.5.1
ESStorageBase.()
(ttl
& timestamp
)ESBulkStorageBase.storeDocBulk()
(timestamp
)com.ubirch.util:config:0.2.3
org.json4s:json4s-*:3.6.0
com.ubirch.util:json:0.5.0
com.ubirch.util:deep-check-model:0.3.0
org.scalatest:scalatest:3.0.5
com.ubirch.util:config:0.2.1
com.ubirch.util:deep-check-model:0.2.1
com.ubirch.util:json:0.4.4
com.ubirch.util:uuid:0.1.3
ESStorageBase.byDocumentId()
methodscom.ubirch.util:config:0.2.0
com.ubirch.util:config:0.2.0
ESStorageBase.getDoc
catches Elasticsearch 5.5 QueryShardExceptions, too, now (most common cause: no timestamp mapping on empty index)ESStorageBase.getDoc()
and ESStorageBase.getDoc()
ESStorageBase.connectivityCheck
to accept a doc index and typecom.ubirch.util:deep-check-model:0.2.0
com.ubirch.util:json:0.4.3
ESStorageBase.connectivityCheck
ESStorageBase
SortUtil.sortBuilder
esBinaryClient.connection.hosts
replaces:
esBinaryClient.connection.host
and esBinaryClient.connection.port
)esBinaryClient.connection.xpackEnabled
esBinaryClsient.connection.cluster
esBinaryClient.connection.settings
ESStorageBase.getDoc
catches exceptions related to missing indexes and search parse errors (usually a cause of no
mappings existing yet) and returns None instead of an exceptionESStorageBase.getDocs
imestamp
in ESBulkStorageBase.storeDocBulk() now has a default value: now.getMillisESSimpleStorage
and ESBulkStorage
This version is not compatible with 0.4.x releases
Config Item | Category | Description |
---|---|---|
esBinaryClient.connection.host | Connection | host ES is running on |
esBinaryClient.connection.port | Connection | port ES is running on |
esBinaryClient.connection.cluster | Connection | (optional) ES cluster to connect to |
ElasticsearchBulkStorage
parameters are read from a config now (NOTE: there's no default config!!!)Config Item | Category | Description |
---|---|---|
esBinaryClient.bulk.bulkActions | Flush | max number of items |
esBinaryClient.bulk.bulkSize | Flush | max size of documents of all documents (in mega bytes)) |
esBinaryClient.bulk.flushInterval | Flush | maximum number of seconds |
esBinaryClient.bulk.concurrentRequests | Connection Pool | maximum number of concurrent requests |
Example Config:
esBinaryClient {
bulk {
bulkActions = 2000 # flush: max number of changes
bulkSize = 10 # flush: bulkSize in mega bytes
flushInterval = 5 # flush: flush every x seconds
concurrentRequests = 2 # connection pool: max concurrent requests
}
}
ElasticsearchStorage
now catches SearchParseException
, toouuid
dependency to version 0.1.1ElasticsearchBulkStorage.bulkProcessor
must be lazyElasticsearchBulkStorage.storeBulkData()
method to be functionally equivalent to ElasticsearchStorage.storeDoc()
ttl
in ElasticsearchStorage.storeDoc()
is now zero by defaulttimestamp
in ElasticsearchStorage.storeDoc()
is now None by defaultElasticsearchStorage.storeDoc()
now supports timestamp functionalityElasticsearchStorage
references JsonFormats.default nowSortUtil
.ElasticsearchStorage.getDocs
.from
and size
parameters in ElasticsearchStorage.getDocs
may not be negative.ElasticsearchStorage.storeDoc
is now optional.elasticsearch-util
resolvers ++= Seq(
Resolver.sonatypeRepo("releases"),
Resolver.bintrayRepo("rick-beton", "maven"),
"elasticsearch-releases" at "https://artifacts.elastic.co/maven"
)
libraryDependencies ++= Seq(
"com.ubirch.util" %% "elasticsearch-util" % "3.0.1", // ES 6.4.0
"com.ubirch.util" %% "elasticsearch-util" % "2.5.1" // ES 5.6.10
)
elasticsearch-client-binary
elasticsearch-client-binary
elasticsearch-client-binary
elasticsearch-client-binary
elasticsearch-client-binary
elasticsearch-client-binary
ElasticsearchMappingsBase
to use the official ES driver's IndicesAdminClient
instead of HTTP callsjson
resolvers ++= Seq(
Resolver.sonatypeRepo("releases"),
Resolver.bintrayRepo("hseeberger", "maven")
)
libraryDependencies ++= Seq(
"com.ubirch.util" %% "json" % "0.5.1"
)
joda-time:joda-time:2.10
org.joda:joda-convert:2.1.1
org.json4s:json4s-native:3.6.0
de.heikoseeberger:akka-http-json4s:1.21.0
Json4sUtil#string2any
org.scalatest:scalatest:3.0.5
Json4sUtil#any2String
DeepCheckResponse
modeljson-auto-convert
all code from this module has been moved to com.ubirch.util:json:0.4.0+
lock-util
resolvers ++= Seq(
Resolver.sonatypeRepo("releases")
)
libraryDependencies ++= Seq(
"com.ubirch.util" %% "lock-util" % "0.2.2"
)
com.ubirch.util:redis-util:0.5.2
com.ubirch.util:redis-util:0.5.1
com.ubirch.util:redis-util:0.5.0
org.scalatest:scalatest:3.0.5
com.ubirch.util:config:0.2.1
com.ubirch.util:redis-util:0.4.0
mongo-utils
resolvers ++= Seq(
Resolver.sonatypeRepo("releases")
)
libraryDependencies ++= Seq(
"com.ubirch.util" %% "mongo-utils" % "0.8.4"
)
com.ubirch.util:deep-check-model:0.3.1
joda-time:joda-time:2.10
org.joda:joda-convert:2.1.1
com.ubirch.util:config:0.2.3
org.reactivemongo:reactivemongo:0.15.0
com.ubirch.util:deep-check-model:0.3.0
org.scalatest:scalatest:3.0.5
com.typesafe.akka:akka-(actor|slf4j):2.5.11
com.ubirch.util:config:0.2.1
com.ubirch.util:deep-check-model:0.2.1
com.typesafe.akka:akka-(actor|slf4j):2.4.20
com.typesafe.akka:akka-(actor|slf4j):2.4.19
MongoConstraintsBase.constraintsToDrop
MongoConstraintsBase.constraints
to MongoConstraintsBase.constraintsToCreate
MongoConstraintsBase.dropMongoConstraints
& MongoConstraintsBase.prepareMongoConstraints
)BigInt
and BigDecimal
com.ubirch.util:config:0.2.0
com.ubirch.util:deep-check-model:0.2.0
com.ubirch.util:deep-check-model:0.1.3
MongoConstraintsBase
MongoUtil.connectivityCheck
MongoUtil#db
is now a value to prevent too many open Mongo connectionsmongo-test-utils
resolvers ++= Seq(
Resolver.sonatypeRepo("releases")
)
libraryDependencies ++= Seq(
"com.ubirch.util" %% "mongo-test-utils" % "0.8.4"
)
com.ubirch.util:mongo-utils:0.8.4
com.ubirch.util:mongo-utils:0.8.3
com.ubirch.util:mongo-utils:0.8.2
com.ubirch.util:mongo-utils:0.8.0
com.ubirch.util:mongo-utils:0.7.0
com.ubirch.util:mongo-utils:0.6.0
com.ubirch.util:mongo-utils:0.5.3
com.ubirch.util:mongo-utils:0.5.1
com.ubirch.util:mongo-utils:0.5.0
com.ubirch.util:mongo-utils:0.4.1
com.ubirch.util:mongo-utils:0.4.0
com.ubirch.util:mongo-utils:0.3.7
com.ubirch.util:mongo-utils:0.3.6
com.ubirch.util:mongo-utils:0.3.5
com.ubirch.util:mongo-utils
to version 0.2.0To use MongoClientBuilder
the following configuration is needed ($PREFIX
defaults to ubirch.mongo-utils
and a default; a default configuration connecting to localhost:27017 is included):
Config Item | Mandatory | Description |
---|---|---|
$PREFIX.hosts | yes | string of cluster hosts (see https://docs.mongodb.com/manual/reference/connection-string/) |
Here's an example of a config with more than one host:
YOUR_PREFIX {
// for uri formats see: https://docs.mongodb.com/manual/reference/connection-string/
user = ${MONGO_USER}
password = ${MONGO_PASSWORD}
port = 10250
options = "sslEnabled=true&sslAllowsInvalidCert=true&connectTimeoutMS=10000&maxIdleTimeMS=60000"
host1 = "mongodb://"${ubirch.mongo-utils.user}":"${ubirch.mongo-utils.password}"@ubirch001.documents.azure.com:"${ubirch.mongo-utils.port}"?"${ubirch.mongo-utils.options}
host2 = "mongodb://"${ubirch.mongo-utils.user}":"${ubirch.mongo-utils.password}"@ubirch002.documents.azure.com:"${ubirch.mongo-utils.port}"?"${ubirch.mongo-utils.options}
// the only mandatory configPath (all the others only serve the purpose to make constructing host uris easier)
hosts = ${ubirch.mongo-utils.host1}","${ubirch.mongo-utils.host2}
}
neo4j-config
resolvers ++= Seq(
Resolver.sonatypeRepo("releases")
)
libraryDependencies ++= Seq(
"com.ubirch.util" %% "neo4j-config" % "0.1.0"
)
Through Neo4jConfigReader
the following configuration is read:
Useful Links:
Config Item | Mandatory | Default Value | Description |
---|---|---|---|
ubirch.neo4j.uri | no | "bolt://localhost:7687" | Neo4j URI |
ubirch.neo4j.userName | no | "neo4j" | database user |
ubirch.neo4j.password | no | "neo4jneo4j" | database password |
ubirch.neo4j.encryptionRequired | no | true | true if connection needs to be encrypted |
ubirch.neo4j.trustStrategy | no | "TRUST_SYSTEM_CA_SIGNED_CERTIFICATES" | strategy by which to trust TLS certificates. possible values are: TRUST_ALL_CERTIFICATES , TRUST_SYSTEM_CA_SIGNED_CERTIFICATES |
ubirch.neo4j.pool.maxLifetime | no | 60 minutes | maximum lifetime of pooled connection |
ubirch.neo4j.pool.maxSize | no | 50 | maximum number of connections in pool |
ubirch.neo4j.pool.acquisitionTimeout | no | 60 seconds | maximum number of seconds to wait when acquiring a connection from pool |
ubirch.neo4j.timeout | no | 60 seconds | maximum number of seconds to wait for response before we let a connection time out |
ubirch.neo4j.maxRetryTime | no | 60 seconds | maximum number of seconds in which to keep attempting retries of transaction functions |
ubirch.neo4j.loadBalancingStrategy | no | "LEAST_CONNECTED" | Load balancing strategy when connecting to a Neo4j cluster. Possible values are: ROUND_ROBIN , LEAST_CONNECTED |
An example config:
ubirch {
neo4j {
uri = "bolt://neo4j.ubirch-dev.ubirch.com:7687"
userName = "neo4j"
password = "123456"
encryptionRequired = true
trustStrategy = "TRUST_SYSTEM_CA_SIGNED_CERTIFICATES" // (TRUST_ALL_CERTIFICATES, TRUST_SYSTEM_CA_SIGNED_CERTIFICATES)
pool {
maxLifetime = 60 // minutes
maxPoolSize = 200
acquisitionTimeout = 60 // seconds
}
timeout = 60 // seconds
maxRetryTime = 60 // seconds
loadBalancingStrategy = "LEAST_CONNECTED" // (ROUND_ROBIN, LEAST_CONNECTED)
}
}
Minimum example config for local development:
ubirch {
neo4j {
trustStrategy = "TRUST_ALL_CERTIFICATES"
}
}
Neo4jConfigReader
To read the neo4j config with keys exactly as described above:
val neo4jConfig = new Neo4jConfigReader().neo4jConfig()
With custom prefix (instead of ubirch.neo4j
):
val neo4jConfig = new Neo4jConfigReader("ubirchKeyService.neo4j").neo4jConfig()
neo4j-utils
resolvers ++= Seq(
Resolver.sonatypeRepo("releases")
)
libraryDependencies ++= Seq(
"com.ubirch.util" %% "neo4j-utils" % "0.2.1"
)
A configuration will be needed in all environments except local. For details please refer to the configuration section
of neo4j-config
.
Neo4jParseUtil.keyValueToString()
more flexible by introducing new parameters to configure how keys are separated from values and also for the enclosing characters of the resulting stringNeo4jParseUtil.keyValueToString()
oidc-utils
resolvers ++= Seq(
Resolver.sonatypeRepo("releases")
)
libraryDependencies ++= Seq(
"com.ubirch.util" %% "oidc-utils" % "0.8.3"
)
To use the OidcDirective
the following configuration is needed:
Config Item | Mandatory | Description |
---|---|---|
ubirch.oidcUtils.redis.updateExpiry | yes | number of seconds by a token's expiry date is extended after successfully validating it |
ubirch.redisUtil.redis.host | yes | Redis host |
ubirch.redisUtil.redis.port | yes | Redis port |
ubirch.redisUtil.redis.password | no | Redis password |
A default application.conf
(connecting to localhost:6379) is included in this module.
OidcDirective
One header is required by the directive:
If the provided token is valid a UserContext
object will be returned.
An example of how to use it can be found in OidcDirectiveSpec
.
com.ubirch.util:json:0.5.1
com.ubirch.utilredis-util:0.5.2
com.ubirch.util:redis-test-util:0.5.2
com.ubirch.user:client-rest:1.0.1
com.ubirch.key:client-rest:0.11.1
OidcUtil.tokenToHashedKey()
UserContext.authToken
UserContext
to RedisOidcUtil.tokenToHashedKey()
now uses SHA-512 instead of SHA-256OidcUtilConfig
com.ubirch.util:crypto:0.4.11
com.ubirch.user:client-rest:1.0.0
com.ubirch.key:*:0.11.0
com.ubirch.key:*:0.8.0
com.ubirch.user:client-rest:0.12.2
com.ubirch.util:crypto:0.4.10
com.ubirch.utilredis-util:0.5.1
com.ubirch.util:redis-test-util:0.5.1
com.ubirch.user:client-rest:0.11.0
org.json4s:json4s-*:3.6.0
com.ubirch.util:json:0.5.0
com.ubirch.util:redis-util:0.5.0
com.ubirch.util:redis-test-util:0.5.0
com.ubirch.user:client-rest:0.10.1
com.ubirch.util:crypto:0.4.9
org.scalatest:scalatest:3.0.5
com.typesafe.akka:akka-http(-testkit):10.1.3
com.ubirch.util:json:0.4.4
com.ubirch.util:crypto:0.4.8
com.ubirch.util:redis-util:0.4.0
com.ubirch.util:redis-test-util:0.4.0
com.ubirch.user:client-rest:0.8.4
com.ubirch.util:redis-(test-)util:0.3.6
com.ubirch.util:crypto:0.4.5
com.ubirch.user:client-rest:0.8.3
UbirchTokenUtil.providerId
TokenUtil
to UbirchTokenUtil
for clarity and to avoid duplication with an auth-service utilUbirchTokenUtil.hashEmail()
TokenUtil
with method toUbirchToken()
com.ubirch.util:redis-util:0.3.5
com.ubirch.util:redis-test-util:0.3.5
com.ubirch.user:client-rest:0.7.0
com.ubirch.util:crypto:0.4.1
com.ubirch.util:crypto:0.4.0
com.ubirch.user:client-rest:0.6.4
com.ubirch.util:redis(-test)-utils:0.3.4
com.ubirch.util.oidc.directive.OidcDirective.bearerToken
is now publiccom.ubirch.util:json:0.4.3
UserContext
:
userName
locale
providerId
to UserContext
redis-test-utils
0.2.1OidcDirective
creates RedisClient
instance itselfX-UBIRCH-CONTEXT
and X-UBIRCH-PROVIDER
from OidcDirective
OidcUtil.tokenToHashedKey
accepts only a token (removed parameter provider
)redis-test-util
libraryDependencies ++= Seq(
"com.ubirch.util" %% "redis-test-util" % "0.5.2"
)
The required config is documented in the redis-util
section.
com.ubirch.util:redis-util:0.5.2
com.ubirch.util:redis-util:0.5.1
com.ubirch.util:redis-util:0.5.0
com.ubirch.util:redis-util:0.4.0
com.ubirch.util:redis-util:0.3.6
com.ubirch.util:redis-util:0.3.5
com.ubirch.util:redis-util:0.3.4
com.ubirch.util:redis-util:0.3.3
com.ubirch.util.redis.test.RedisCleanup.deleteAll
to depends on implict RedisClient
(instead of creating
the whole environment itself)redis-util
version 0.2.0redis-util
libraryDependencies ++= Seq(
"com.ubirch.util" %% "redis-util" % "0.5.2"
)
You can place the below config keys where you want in the config. When calling RedisClientUtil.getRedisClient()
the
following configuration is needed:
Config Item | Mandatory | Description |
---|---|---|
ubirch.redisUtil.host | yes | host redis is running on |
ubirch.redisUtil.port | yes | redis TCP port |
ubirch.redisUtil.password | no | redis password |
Here's an example:
ubirch.redisUtil {
host = localhost
port = 6379
password = not-a-secure-password
}
And this how you get a redis client:
```scala
implicit val system = ActorSystem()
implicit val timeout = Timeout(15 seconds)
val redis = RedisClientUtil.getRedisClient
```
com.ubirch.util:deep-check-model:0.3.1
com.ubirch.util:config:0.2.3
com.ubirch.util:deep-check-model:0.3.0
com.typesafe.akka:akka-(actor|slf4j):2.5.11
com.ubirch.util:config:0.2.1
com.ubirch.util:deep-check-model:0.2.1
com.typesafe.akka:akka-(actor|slf4j):2.4.20
com.ubirch.util:config:0.2.0
com.ubirch.util:deep-check-model:0.2.0
com.ubirch.util:deep-check-model:0.1.3
RedisClientUtil.connectivityCheck
RedisClientUtil
reads config from a fixed prefix nowresponse-util
resolvers ++= Seq(
Resolver.sonatypeRepo("releases")
)
libraryDependencies ++= Seq(
"com.ubirch.util" %% "response-util" % "0.5.0"
)
AuthUtil
com.ubirch.util:json:0.5.1
com.ubirch.util:json:0.5.0
org.scalatest:scalatest:3.0.5
com.typesafe.akka:akka-http(-testkit):10.1.3
com.ubirch.util:json:0.4.4
com.ubirch.util:json:0.4.3
com.ubirch.util:json:0.4.2
DeepCheckResponse
to new module: com.ubirch.util:deep-check-model:0.1.0ResponseUtil
to extend MyJsonProtocol
ResponseUtil
to accept AnyRef
instead of just JsonResponse
responseutil
to response-util
ResponseUtil
to allow passing in http status codes (only for errors))rest-akka-http
resolvers ++= Seq(
Resolver.sonatypeRepo("releases")
)
libraryDependencies ++= Seq(
"com.ubirch.util" %% "rest-akka-http" % "0.4.0" // for Akka HTTP 10.1.3
"com.ubirch.util" %% "rest-akka-http" % "0.3.9" // for Akka HTTP 10.0.11
"com.ubirch.util" %% "rest-akka-http" % "0.3.8" // for Akka HTTP 10.0.9
"com.ubirch.util" %% "rest-akka-http" % "0.3.7" // for Akka HTTP 10.0.6
)
org.scalatest:scalatest:3.0.5
ch.megard:akka-http-cors:0.3.0
com.typesafe.akka:akka-http(-testkit):10.1.3
rest-akka-http-test
)Authorization
to Access-Control-Allow-Headers
rest-akka-http-test
resolvers ++= Seq(
Resolver.sonatypeRepo("releases")
)
libraryDependencies ++= Seq(
"com.ubirch.util" %% "rest-akka-http-test" % "0.4.0" // for Akka HTTP 10.1.3
"com.ubirch.util" %% "rest-akka-http-test" % "0.3.9" // for Akka HTTP 10.0.11
"com.ubirch.util" %% "rest-akka-http-test" % "0.3.8" // for Akka HTTP 10.0.9
"com.ubirch.util" %% "rest-akka-http-test" % "0.3.7" // for Akka HTTP 10.0.6
)
org.scalatest:scalatest:3.0.5
com.typesafe.akka:akka-http(-testkit):10.1.3
CORSUtil
to conform with CORS libraryCORSUtil
rest-akka-http
uuid
resolvers ++= Seq(
Resolver.sonatypeRepo("releases")
)
libraryDependencies ++= Seq(
"com.ubirch.util" %% "uuid" % "0.1.3"
)
org.scalatest:scalatest:3.0.5
UUIDUtil.fromString
FAQs
UUID related utils
We found that com.ubirch.util:uuid_2.11 demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Solo open source maintainers face burnout and security challenges, with 60% unpaid and 60% considering quitting.
Security News
License exceptions modify the terms of open source licenses, impacting how software can be used, modified, and distributed. Developers should be aware of the legal implications of these exceptions.
Security News
A developer is accusing Tencent of violating the GPL by modifying a Python utility and changing its license to BSD, highlighting the importance of copyleft compliance.