Skip to content

Instantly share code, notes, and snippets.

@kulikov
Created November 14, 2014 12:44
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save kulikov/e7f1ae80804f503bccde to your computer and use it in GitHub Desktop.
package eu.inn.forgame.api.rest
import spray.routing.Route
import eu.inn.util.akka.ActorSystemComponent
import eu.inn.util.http.RestServiceComponent
import eu.inn.util.servicebus.ServiceBusComponent
import eu.inn.datamodel.forgame.auth.IssueToken
import eu.inn.forgame.api.directives.{AuthProviderComponent, AuthUser}
case class TestClass(name: String, age: Int)
case class TestClassNew(param: String)
trait TokensComponent {
this: ActorSystemComponent
with RestServiceComponent
with AuthProviderComponent
with ServiceBusComponent
lazy val tokensRoutes = new RestRoutes {
def routes: Route =
auth { user: AuthUser
(pathEnd & metrics("api.tokens")) {
rateLimit("issue-account-token", "userId" user.id) {
post {
formField(Fields.Expiration.?) { expiration
complete(serviceBus ?? IssueToken(user.id.toString, user.token, expiration))
}
}
}
} ~
post {
path("test") {
contentAs[TestClass]("application/vnd.acme.person") { tc
complete("tc: " + tc)
} ~
contentAs[TestClassNew]("application/vnd.acme.new") { tcw
complete("tc new: " + tcw)
}
}
}
}
}
}
@kulikov
Copy link
Author

kulikov commented Nov 14, 2014

"/users/:id/presons/:id?" => { "vnd.acme.person" -> PersonClass, "vnd.acme.new" -> NewPersonClass }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment