1
#pragma once
2

            
3
#include <chrono>
4
#include <string>
5
#include <vector>
6

            
7
#include "envoy/common/pure.h"
8

            
9
namespace Envoy {
10
namespace Extensions {
11
namespace Http {
12
namespace InjectedCredentials {
13
namespace OAuth2 {
14
/**
15
 * Callback interface to enable the OAuth client to trigger actions upon completion of an
16
 * asynchronous HTTP request/response.
17
 */
18
class FilterCallbacks {
19
public:
20
25
  virtual ~FilterCallbacks() = default;
21
  enum class FailureReason {
22
    StreamReset,
23
    BadToken,
24
    BadResponseCode,
25
  };
26

            
27
  virtual void onGetAccessTokenSuccess(const std::string& access_token,
28
                                       std::chrono::seconds expires_in) PURE;
29
  virtual void onGetAccessTokenFailure(FailureReason) PURE;
30
};
31

            
32
} // namespace OAuth2
33
} // namespace InjectedCredentials
34
} // namespace Http
35
} // namespace Extensions
36
} // namespace Envoy