aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala
diff options
context:
space:
mode:
authorvlad <vlad@drivergrp.com>2016-10-21 16:07:05 -0400
committervlad <vlad@drivergrp.com>2016-10-21 16:07:05 -0400
commit02810f5eac3b4ce6a5d1128281a01b2a2ed0647c (patch)
treea733b421759216a7f12d227d2f912eecdfa842aa /src/main/scala
parent7c77f5ff23e4b0f8d5e189492bc4f25f847adc00 (diff)
downloaddriver-core-02810f5eac3b4ce6a5d1128281a01b2a2ed0647c.tar.gz
driver-core-02810f5eac3b4ce6a5d1128281a01b2a2ed0647c.tar.bz2
driver-core-02810f5eac3b4ce6a5d1128281a01b2a2ed0647c.zip
Renamed package to xyz, New formatting, authorize directive supporting multiple permissions
Diffstat (limited to 'src/main/scala')
-rw-r--r--src/main/scala/xyz/driver/core/app.scala (renamed from src/main/scala/com/drivergrp/core/app.scala)74
-rw-r--r--src/main/scala/xyz/driver/core/auth.scala (renamed from src/main/scala/com/drivergrp/core/auth.scala)18
-rw-r--r--src/main/scala/xyz/driver/core/config.scala (renamed from src/main/scala/com/drivergrp/core/config.scala)2
-rw-r--r--src/main/scala/xyz/driver/core/core.scala (renamed from src/main/scala/com/drivergrp/core/core.scala)2
-rw-r--r--src/main/scala/xyz/driver/core/crypto.scala (renamed from src/main/scala/com/drivergrp/core/crypto.scala)4
-rw-r--r--src/main/scala/xyz/driver/core/database.scala (renamed from src/main/scala/com/drivergrp/core/database.scala)4
-rw-r--r--src/main/scala/xyz/driver/core/file.scala (renamed from src/main/scala/com/drivergrp/core/file.scala)16
-rw-r--r--src/main/scala/xyz/driver/core/generators.scala (renamed from src/main/scala/com/drivergrp/core/generators.scala)6
-rw-r--r--src/main/scala/xyz/driver/core/json.scala (renamed from src/main/scala/com/drivergrp/core/json.scala)7
-rw-r--r--src/main/scala/xyz/driver/core/logging.scala (renamed from src/main/scala/com/drivergrp/core/logging.scala)4
-rw-r--r--src/main/scala/xyz/driver/core/messages.scala (renamed from src/main/scala/com/drivergrp/core/messages.scala)4
-rw-r--r--src/main/scala/xyz/driver/core/rest.scala (renamed from src/main/scala/com/drivergrp/core/rest.scala)14
-rw-r--r--src/main/scala/xyz/driver/core/stats.scala (renamed from src/main/scala/com/drivergrp/core/stats.scala)6
-rw-r--r--src/main/scala/xyz/driver/core/time.scala (renamed from src/main/scala/com/drivergrp/core/time.scala)2
14 files changed, 83 insertions, 80 deletions
diff --git a/src/main/scala/com/drivergrp/core/app.scala b/src/main/scala/xyz/driver/core/app.scala
index f6100f0..e080e1b 100644
--- a/src/main/scala/com/drivergrp/core/app.scala
+++ b/src/main/scala/xyz/driver/core/app.scala
@@ -1,4 +1,4 @@
-package com.drivergrp.core
+package xyz.driver.core
import akka.actor.ActorSystem
import akka.http.scaladsl.Http
@@ -9,14 +9,15 @@ import akka.http.scaladsl.server.Directives._
import akka.http.scaladsl.server.RouteResult._
import akka.http.scaladsl.server.{ExceptionHandler, Route, RouteConcatenation}
import akka.stream.ActorMaterializer
-import com.drivergrp.core.logging.{Logger, TypesafeScalaLogger}
-import com.drivergrp.core.rest.Swagger
-import com.drivergrp.core.stats.SystemStats
-import com.drivergrp.core.time.Time
-import com.drivergrp.core.time.provider.{SystemTimeProvider, TimeProvider}
import com.typesafe.config.Config
import org.slf4j.LoggerFactory
import spray.json.DefaultJsonProtocol
+import xyz.driver.core
+import xyz.driver.core.logging.{Logger, TypesafeScalaLogger}
+import xyz.driver.core.rest.Swagger
+import xyz.driver.core.stats.SystemStats
+import xyz.driver.core.time.Time
+import xyz.driver.core.time.provider.{SystemTimeProvider, TimeProvider}
import scala.compat.Platform.ConcurrentModificationException
import scala.concurrent.duration._
@@ -29,8 +30,8 @@ object app {
modules: Seq[Module],
time: TimeProvider = new SystemTimeProvider(),
log: Logger = new TypesafeScalaLogger(
- com.typesafe.scalalogging.Logger(LoggerFactory.getLogger(classOf[DriverApp]))),
- config: Config = com.drivergrp.core.config.loadDefaultConfig,
+ com.typesafe.scalalogging.Logger(LoggerFactory.getLogger(classOf[DriverApp]))),
+ config: Config = core.config.loadDefaultConfig,
interface: String = "::0",
baseUrl: String = "localhost:8080",
port: Int = 8080) {
@@ -71,8 +72,8 @@ object app {
log.debug(s"Request is not allowed to $uri ($requestUuid)", is)
complete(
- HttpResponse(BadRequest,
- entity = s"""{ "requestUuid": "$requestUuid", "message": "${is.getMessage}" }"""))
+ HttpResponse(BadRequest,
+ entity = s"""{ "requestUuid": "$requestUuid", "message": "${is.getMessage}" }"""))
}
case cm: ConcurrentModificationException =>
@@ -82,8 +83,7 @@ object app {
log.debug(s"Concurrent modification of the resource $uri ($requestUuid)", cm)
complete(
- HttpResponse(Conflict,
- entity = s"""{ "requestUuid": "$requestUuid", "message": "${cm.getMessage}" }"""))
+ HttpResponse(Conflict, entity = s"""{ "requestUuid": "$requestUuid", "message": "${cm.getMessage}" }"""))
}
case t: Throwable =>
@@ -93,8 +93,8 @@ object app {
log.error(s"Request to $uri could not be handled normally ($requestUuid)", t)
complete(
- HttpResponse(InternalServerError,
- entity = s"""{ "requestUuid": "$requestUuid", "message": "${t.getMessage}" }"""))
+ HttpResponse(InternalServerError,
+ entity = s"""{ "requestUuid": "$requestUuid", "message": "${t.getMessage}" }"""))
}
}
@@ -112,14 +112,14 @@ object app {
path("version") {
val currentTime = time.currentTime().millis
complete(
- Map(
- "version" -> version,
- "gitHash" -> gitHash,
- "modules" -> modules.map(_.name).mkString(", "),
- "startupTime" -> startupTime.millis.toString,
- "serverTime" -> currentTime.toString,
- "uptime" -> (currentTime - startupTime.millis).toString
- ))
+ Map(
+ "version" -> version,
+ "gitHash" -> gitHash,
+ "modules" -> modules.map(_.name).mkString(", "),
+ "startupTime" -> startupTime.millis.toString,
+ "serverTime" -> currentTime.toString,
+ "uptime" -> (currentTime - startupTime.millis).toString
+ ))
}
}
@@ -133,25 +133,25 @@ object app {
path("health") {
complete(
- Map(
- "availableProcessors" -> SystemStats.availableProcessors.toJson,
- "memoryUsage" -> Map(
- "free" -> memoryUsage.free.toJson,
- "total" -> memoryUsage.total.toJson,
- "max" -> memoryUsage.max.toJson
- ).toJson,
- "gcStats" -> Map(
- "garbageCollectionTime" -> gcStats.garbageCollectionTime.toJson,
- "totalGarbageCollections" -> gcStats.totalGarbageCollections.toJson
- ).toJson,
- "fileSystemSpace" -> SystemStats.fileSystemSpace.map { f =>
+ Map(
+ "availableProcessors" -> SystemStats.availableProcessors.toJson,
+ "memoryUsage" -> Map(
+ "free" -> memoryUsage.free.toJson,
+ "total" -> memoryUsage.total.toJson,
+ "max" -> memoryUsage.max.toJson
+ ).toJson,
+ "gcStats" -> Map(
+ "garbageCollectionTime" -> gcStats.garbageCollectionTime.toJson,
+ "totalGarbageCollections" -> gcStats.totalGarbageCollections.toJson
+ ).toJson,
+ "fileSystemSpace" -> SystemStats.fileSystemSpace.map { f =>
Map("path" -> f.path.toJson,
"freeSpace" -> f.freeSpace.toJson,
"totalSpace" -> f.totalSpace.toJson,
"usableSpace" -> f.usableSpace.toJson)
}.toJson,
- "operatingSystem" -> SystemStats.operatingSystemStats.toJson
- ))
+ "operatingSystem" -> SystemStats.operatingSystemStats.toJson
+ ))
}
}
@@ -206,7 +206,7 @@ object app {
}
class EmptyModule extends Module {
- val name = "Nothing"
+ val name = "Nothing"
def route: Route = complete(StatusCodes.OK)
def routeTypes = Seq.empty[Type]
}
diff --git a/src/main/scala/com/drivergrp/core/auth.scala b/src/main/scala/xyz/driver/core/auth.scala
index e857ef0..874f1e1 100644
--- a/src/main/scala/com/drivergrp/core/auth.scala
+++ b/src/main/scala/xyz/driver/core/auth.scala
@@ -1,4 +1,4 @@
-package com.drivergrp.core
+package xyz.driver.core
import akka.http.scaladsl.model.headers.HttpChallenges
import akka.http.scaladsl.server.AuthenticationFailedRejection.CredentialsRejected
@@ -87,21 +87,22 @@ object auth {
protected def authStatus(authToken: AuthToken): OptionT[Future, U]
- def authorize(permission: Permission): Directive1[(AuthToken, U)] = {
+ def authorize(permissions: Permission*): Directive1[(AuthToken, U)] = {
parameters('authToken.?).flatMap { parameterTokenValue =>
optionalHeaderValueByName(AuthService.AuthenticationTokenHeader).flatMap { headerTokenValue =>
- verifyAuthToken(headerTokenValue.orElse(parameterTokenValue), permission)
+ verifyAuthToken(headerTokenValue.orElse(parameterTokenValue), permissions.toSet)
}
}
}
- private def verifyAuthToken(tokenOption: Option[String], permission: Permission): Directive1[(AuthToken, U)] =
+ private def verifyAuthToken(tokenOption: Option[String],
+ permissions: Set[Permission]): Directive1[(AuthToken, U)] =
tokenOption match {
case Some(tokenValue) =>
val token = AuthToken(Base64[Macaroon](tokenValue))
onComplete(authStatus(token).run).flatMap { tokenUserResult =>
- checkPermissions(tokenUserResult, permission, token)
+ checkPermissions(tokenUserResult, permissions, token)
}
case None =>
@@ -109,13 +110,14 @@ object auth {
}
private def checkPermissions(userResult: Try[Option[U]],
- permission: Permission,
+ permissions: Set[Permission],
token: AuthToken): Directive1[(AuthToken, U)] = {
userResult match {
case Success(Some(user)) =>
- if (user.roles.exists(_.hasPermission(permission))) provide(token -> user)
+ if (permissions.forall(user.permissions.contains)) provide(token -> user)
else {
- val challenge = HttpChallenges.basic(s"User does not have the required permission $permission")
+ val challenge =
+ HttpChallenges.basic(s"User does not have the required permissions: ${permissions.mkString(", ")}")
reject(AuthenticationFailedRejection(CredentialsRejected, challenge))
}
diff --git a/src/main/scala/com/drivergrp/core/config.scala b/src/main/scala/xyz/driver/core/config.scala
index 29cd9ed..112986e 100644
--- a/src/main/scala/com/drivergrp/core/config.scala
+++ b/src/main/scala/xyz/driver/core/config.scala
@@ -1,4 +1,4 @@
-package com.drivergrp.core
+package xyz.driver.core
import java.io.File
import com.typesafe.config.{Config, ConfigFactory}
diff --git a/src/main/scala/com/drivergrp/core/core.scala b/src/main/scala/xyz/driver/core/core.scala
index 158447f..b7fbeb6 100644
--- a/src/main/scala/com/drivergrp/core/core.scala
+++ b/src/main/scala/xyz/driver/core/core.scala
@@ -1,4 +1,4 @@
-package com.drivergrp
+package xyz.driver
import scalaz.Equal
diff --git a/src/main/scala/com/drivergrp/core/crypto.scala b/src/main/scala/xyz/driver/core/crypto.scala
index 5f63eb9..d001e0f 100644
--- a/src/main/scala/com/drivergrp/core/crypto.scala
+++ b/src/main/scala/xyz/driver/core/crypto.scala
@@ -1,6 +1,6 @@
-package com.drivergrp.core
+package xyz.driver.core
-import com.drivergrp.core.auth.AuthToken
+import xyz.driver.core.auth.AuthToken
object crypto {
diff --git a/src/main/scala/com/drivergrp/core/database.scala b/src/main/scala/xyz/driver/core/database.scala
index 581c5de..1039be4 100644
--- a/src/main/scala/com/drivergrp/core/database.scala
+++ b/src/main/scala/xyz/driver/core/database.scala
@@ -1,6 +1,6 @@
-package com.drivergrp.core
+package xyz.driver.core
-import com.drivergrp.core.time.Time
+import xyz.driver.core.time.Time
import scala.concurrent.Future
import slick.backend.DatabaseConfig
diff --git a/src/main/scala/com/drivergrp/core/file.scala b/src/main/scala/xyz/driver/core/file.scala
index 20bd36e..93715d0 100644
--- a/src/main/scala/com/drivergrp/core/file.scala
+++ b/src/main/scala/xyz/driver/core/file.scala
@@ -1,4 +1,4 @@
-package com.drivergrp.core
+package xyz.driver.core
import java.io.File
import java.nio.file.{Path, Paths}
@@ -6,8 +6,8 @@ import java.util.UUID._
import com.amazonaws.services.s3.AmazonS3
import com.amazonaws.services.s3.model.{Bucket, GetObjectRequest, ListObjectsV2Request}
-import com.drivergrp.core.revision.Revision
-import com.drivergrp.core.time.Time
+import xyz.driver.core.revision.Revision
+import xyz.driver.core.time.Time
import scala.concurrent.{ExecutionContext, Future}
import scalaz.{ListT, OptionT}
@@ -15,10 +15,10 @@ import scalaz.{ListT, OptionT}
object file {
final case class FileLink(
- name: Name[File],
- location: Path,
- revision: Revision[File],
- lastModificationDate: Time
+ name: Name[File],
+ location: Path,
+ revision: Revision[File],
+ lastModificationDate: Time
)
trait FileService {
@@ -114,7 +114,7 @@ object file {
if (localSource.renameTo(destinationFile)) ()
else {
throw new Exception(
- s"Failed to move file from `${localSource.getCanonicalPath}` to `${destinationFile.getCanonicalPath}`")
+ s"Failed to move file from `${localSource.getCanonicalPath}` to `${destinationFile.getCanonicalPath}`")
}
} else {
throw new Exception(s"Failed to create parent directories for file `${destinationFile.getCanonicalPath}`")
diff --git a/src/main/scala/com/drivergrp/core/generators.scala b/src/main/scala/xyz/driver/core/generators.scala
index 10df7db..bb026a9 100644
--- a/src/main/scala/com/drivergrp/core/generators.scala
+++ b/src/main/scala/xyz/driver/core/generators.scala
@@ -1,9 +1,9 @@
-package com.drivergrp.core
+package xyz.driver.core
import java.math.MathContext
-import com.drivergrp.core.revision.Revision
-import com.drivergrp.core.time.{Time, TimeRange}
+import xyz.driver.core.revision.Revision
+import xyz.driver.core.time.{Time, TimeRange}
import scala.reflect.ClassTag
import scala.util.Random
diff --git a/src/main/scala/com/drivergrp/core/json.scala b/src/main/scala/xyz/driver/core/json.scala
index 9a30161..51679c3 100644
--- a/src/main/scala/com/drivergrp/core/json.scala
+++ b/src/main/scala/xyz/driver/core/json.scala
@@ -1,12 +1,13 @@
-package com.drivergrp.core
+package xyz.driver.core
import akka.http.scaladsl.model.Uri.Path
import akka.http.scaladsl.server.PathMatcher.Matched
import akka.http.scaladsl.server.{PathMatcher, _}
import akka.http.scaladsl.unmarshalling.Unmarshaller
-import com.drivergrp.core.revision.Revision
-import com.drivergrp.core.time.Time
+import xyz.driver.core.revision.Revision
+import xyz.driver.core.time.Time
import spray.json.{DeserializationException, JsNumber, _}
+import xyz.driver.core.time.Time
import scala.reflect.runtime.universe._
diff --git a/src/main/scala/com/drivergrp/core/logging.scala b/src/main/scala/xyz/driver/core/logging.scala
index 2c8c670..599c824 100644
--- a/src/main/scala/com/drivergrp/core/logging.scala
+++ b/src/main/scala/xyz/driver/core/logging.scala
@@ -1,4 +1,4 @@
-package com.drivergrp.core
+package xyz.driver.core
import java.text.SimpleDateFormat
import java.util.Date
@@ -168,7 +168,7 @@ object logging {
private def logContext(message: StringBuilder, loggingEvent: ILoggingEvent) = {
Option(loggingEvent.getMDCPropertyMap).map(_.asScala).filter(_.nonEmpty).foreach { context =>
message.append(
- context map { case (key, value) => s"$key$FieldSeparator$value" } mkString ("Context: ", " ", newline)
+ context map { case (key, value) => s"$key$FieldSeparator$value" } mkString ("Context: ", " ", newline)
)
}
}
diff --git a/src/main/scala/com/drivergrp/core/messages.scala b/src/main/scala/xyz/driver/core/messages.scala
index 3a97401..94d9889 100644
--- a/src/main/scala/com/drivergrp/core/messages.scala
+++ b/src/main/scala/xyz/driver/core/messages.scala
@@ -1,9 +1,9 @@
-package com.drivergrp.core
+package xyz.driver.core
import java.util.Locale
-import com.drivergrp.core.logging.Logger
import com.typesafe.config.Config
+import xyz.driver.core.logging.Logger
import scala.collection.JavaConverters._
diff --git a/src/main/scala/com/drivergrp/core/rest.scala b/src/main/scala/xyz/driver/core/rest.scala
index d97e13e..c615d99 100644
--- a/src/main/scala/com/drivergrp/core/rest.scala
+++ b/src/main/scala/xyz/driver/core/rest.scala
@@ -1,4 +1,4 @@
-package com.drivergrp.core
+package xyz.driver.core
import akka.actor.ActorSystem
import akka.http.scaladsl.Http
@@ -8,15 +8,15 @@ import akka.http.scaladsl.unmarshalling.Unmarshal
import akka.stream.ActorMaterializer
import akka.stream.scaladsl.Flow
import akka.util.ByteString
-import com.drivergrp.core.auth.{AuthService, AuthToken}
-import com.drivergrp.core.crypto.Crypto
-import com.drivergrp.core.logging.Logger
-import com.drivergrp.core.stats.Stats
-import com.drivergrp.core.time.TimeRange
-import com.drivergrp.core.time.provider.TimeProvider
import com.github.swagger.akka.model._
import com.github.swagger.akka.{HasActorSystem, SwaggerHttpService}
import com.typesafe.config.Config
+import xyz.driver.core.auth.{AuthService, AuthToken}
+import xyz.driver.core.crypto.Crypto
+import xyz.driver.core.logging.Logger
+import xyz.driver.core.stats.Stats
+import xyz.driver.core.time.TimeRange
+import xyz.driver.core.time.provider.TimeProvider
import scala.concurrent.{ExecutionContext, Future}
import scala.util.{Failure, Success}
diff --git a/src/main/scala/com/drivergrp/core/stats.scala b/src/main/scala/xyz/driver/core/stats.scala
index 2af4b6a..5759012 100644
--- a/src/main/scala/com/drivergrp/core/stats.scala
+++ b/src/main/scala/xyz/driver/core/stats.scala
@@ -1,11 +1,11 @@
-package com.drivergrp.core
+package xyz.driver.core
import java.io.File
import java.lang.management.ManagementFactory
import java.lang.reflect.Modifier
-import com.drivergrp.core.logging.Logger
-import com.drivergrp.core.time.{Time, TimeRange}
+import xyz.driver.core.logging.Logger
+import xyz.driver.core.time.{Time, TimeRange}
object stats {
diff --git a/src/main/scala/com/drivergrp/core/time.scala b/src/main/scala/xyz/driver/core/time.scala
index 9bafb00..625d6a2 100644
--- a/src/main/scala/com/drivergrp/core/time.scala
+++ b/src/main/scala/xyz/driver/core/time.scala
@@ -1,4 +1,4 @@
-package com.drivergrp.core
+package xyz.driver.core
import java.text.SimpleDateFormat
import java.util._