Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package controllers
- import scala.concurrent.Future
- import javax.inject.Inject
- import play.api.mvc._
- import play.api.libs.concurrent.Execution.Implicits.defaultContext
- import models.sms.smsApi
- class Sms @Inject()() extends Controller {
- private lazy val apiCaller = new smsApi
- def handleApi(api: String) = Action.async{request =>
- val f = Future[String]{ apiCaller.parseMethod(api) }
- val q = f.flatMap {
- case s => Future(s)
- case _ => Future("Error")
- }
- q.map(i => Ok(i))
- }
- }
- -----------------------------------------------------------------------------------------------------------------------
- package models.sms
- import play.api.libs.json._
- class smsApi {
- private lazy val actionHandler = Map[ String, Function[String,String] ](
- "get_state" -> { getState ( _ ) },
- "invalid_request" -> { invalidReq( _ ) }
- )
- def parseMethod(arg: String): String = {
- val rfc = try {
- (Json.parse(arg) \ "p_action").as[String]
- } catch {
- case e: JsResultException => "invalid_request"
- }
- if( actionHandler.contains(rfc) )
- actionHandler( rfc )(arg)
- else
- noApiMethodFound
- }
- def getState (agr:String ): String = {
- ""
- }
- def noApiMethodFound: String = {
- Json.toJson( Map("meta"->"Error","data"->"No method found") ).toString
- }
- def invalidReq(arg: String): String = {
- Json.toJson( Map("meta"->"Error","data"->"Invalid request type") ).toString
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement