0

認証用のディレクティブが 1 つあるとします。認証後、ログインしたいと思います。これは私がこれまで行っていることです:

get(...) {
  myauthdirective() { v =>
     myloggingdirective(v) {
        ...
     }
  }
}

そのため、認証が必要になるたびに 2 つのディレクティブを使用するのではなく、それを 1 つのディレクティブに変換したいと考えています。

フラット マップを使用してみましたが、authenticate が Directive1 を返し、logRequestResponse が Directive0 を返すため、うまくいかないようです。

// Does not work!
authenticate(myAuthMagnet).flatMap {
  case ca: returnType => logRequestResponse(LoggingMagnet(logme(ca)))
}

ということで map で試してみたのですが、私のロギングマグネット機能には入らないようです。

// Does not work either!
authenticate(myAuthMagnet).map {
  case ca: returnType => 
    logRequestResponse(LoggingMagnet(logme(ca))) // does not go into logme function for some reason
    ca
}

リクエスト オブジェクトとレスポンス オブジェクトも必要なので、logme を直接呼び出すこともできません。

異なるディレクティブ タイプを返す 2 つのディレクティブを持つ新しいディレクティブを作成する方法はありますか? ありがとう。

4

1 に答える 1