Lunar Interceptor
You can install the Lunar Interceptor either via the Lunar Control Plane for a guided process or manually by following the specific installation documentation for your environment.
Supported Languages:
- Python: Python 3+, AioHttp 3.8.3+, Requests v2.15.1+, Tornado 6.0+
- Java: SDK8+, OkHTTP 3.14.9+
- Node.js: Node.js v14.18.0+, v15.7.0+, v16.0.0+, v18.0.0+, Axios v1.0.0+, http/https/fetch (v18+)
How Lunar Interceptors Work
Lunar Interceptors capture outgoing HTTP/S requests from your application, route them through the Lunar.dev Gateway, and return the API provider's response back to the application. If the Gateway is unavailable, traffic defaults to the original destination.
For more details on the Failsafe Mechanism, refer to the Failsafe Mechanism documentation.
Interceptor Installation and Configuration
Installation:
- Python
- Node.JS
- Java
pip3 install 'lunar-interceptor==0.4.*'
npm install lunar-interceptor@2.x.x
wget -O lunarInterceptor.jar https://s01.oss.sonatype.org/content/repositories/releases/dev/lunar/interceptor/lunar-interceptor/0.1.1/lunar-interceptor-0.1.1.jar
Configuration:
The only required configuration is the LUNAR_PROXY_HOST
environment variable. This variable should be set to the host or IP of Lunar Proxy, including the port it is listening on.
For example:
export LUNAR_PROXY_HOST="localhost:8000"
This environment variable sets the host and port for Lunar Gateway. Set this to localhost:8000
if you're running Lunar Proxy in a local Docker container. The value assigned to LUNAR_PROXY_HOST
should only include the hostname and port, without the HTTP
prefix. For example, use localhost:8000
and not http://localhost:8000
.
Usage
Import Lunar Interceptor into the application entry point at the beginning of the file.
import lunar_interceptor
# imports ...
# your code
def main():
Run Your App and Validate Proxy/Interceptor Linkage
Run your app and consume API traffic. Then, use the Discover command to validate that the requests were passed through Lunar Proxy, and that your installed interceptor is correctly listed.
kubectl exec <lunar-proxy-pod-name> -- discover
Java-Specific Usage:
Enable the instrumentation agent by using the -javaagent
flag with the JVM.
export JAVA_TOOL_OPTIONS="-javaagent:PATH/TO/lunarInterceptor.jar"
Or
java -javaagent:PATH/TO/lunarInterceptor.jar -jar PATH/TO/YOURS.jar
[Optional] Controlling Traffic Forwarding with the x-lunar-allow
Header
You can manage whether traffic is routed through the Lunar.dev API Consumption Gateway by using the x-lunar-allow
header. Ensure that the value of this header is passed as a string:
"true"
: The Interceptor forwards the request to the Lunar.dev API Consumption Gateway."false"
: The Interceptor bypasses the gateway and sends the request directly to the API provider.
[Optional] Identifying Your Consumer by the x-lunar-consumer-tag
Header
Add the x-lunar-consumer-tag
header to your requests with a value indicating the originating application or service. This header will be removed before the request is forwarded to third-party providers.