Search in sources :

Example 1 with SseResponseEventDataProvider

use of org.wso2.carbon.apimgt.gateway.handlers.streaming.sse.analytics.SseResponseEventDataProvider in project carbon-apimgt by wso2.

the class SseApiHandler method isThrottled.

private boolean isThrottled(org.apache.axis2.context.MessageContext axisCtx, MessageContext synCtx) {
    AuthenticationContext authenticationContext = APISecurityUtils.getAuthenticationContext(synCtx);
    ThrottleInfo throttleInfo = getThrottlingInfo(authenticationContext, synCtx);
    boolean isThrottled = SseUtils.isRequestBlocked(authenticationContext, throttleInfo.getApiContext(), throttleInfo.getApiVersion(), authenticationContext.getUsername(), throttleInfo.getRemoteIp(), CarbonContext.getThreadLocalCarbonContext().getTenantDomain());
    if (!isThrottled) {
        // do throttling if request is not blocked by global conditions only
        isThrottled = SseUtils.isThrottled(throttleInfo.getSubscriberTenantDomain(), throttleInfo.getResourceLevelThrottleKey(), throttleInfo.getSubscriptionLevelThrottleKey(), throttleInfo.getApplicationLevelThrottleKey());
    }
    if (isThrottled) {
        handleThrottledOut(synCtx);
        return true;
    }
    if (APIUtil.isAnalyticsEnabled()) {
        AnalyticsDataProvider provider = new SseResponseEventDataProvider(synCtx);
        axisCtx.setProperty(SSE_ANALYTICS_INFO, provider);
    }
    return false;
}
Also used : SseResponseEventDataProvider(org.wso2.carbon.apimgt.gateway.handlers.streaming.sse.analytics.SseResponseEventDataProvider) AuthenticationContext(org.wso2.carbon.apimgt.gateway.handlers.security.AuthenticationContext) ThrottleInfo(org.wso2.carbon.apimgt.gateway.handlers.streaming.sse.throttling.ThrottleInfo) AnalyticsDataProvider(org.wso2.carbon.apimgt.common.analytics.collectors.AnalyticsDataProvider)

Example 2 with SseResponseEventDataProvider

use of org.wso2.carbon.apimgt.gateway.handlers.streaming.sse.analytics.SseResponseEventDataProvider in project carbon-apimgt by wso2.

the class SseResponseStreamInterceptor method publishAnalyticsData.

private void publishAnalyticsData(int eventCount, MessageContext axi2Ctx) throws AnalyticsException {
    Object responseEventProvider = axi2Ctx.getProperty(SSE_ANALYTICS_INFO);
    if (responseEventProvider == null) {
        log.error("SSE Analytics event provider is null.");
        return;
    }
    SseResponseEventDataProvider provider = (SseResponseEventDataProvider) responseEventProvider;
    provider.setResponseCode((int) axi2Ctx.getProperty(SynapseConstants.HTTP_SC));
    GenericRequestDataCollector dataCollector = new GenericRequestDataCollector(provider);
    for (int count = 0; count < eventCount; count++) {
        dataCollector.collectData();
    }
}
Also used : SseResponseEventDataProvider(org.wso2.carbon.apimgt.gateway.handlers.streaming.sse.analytics.SseResponseEventDataProvider) GenericRequestDataCollector(org.wso2.carbon.apimgt.common.analytics.collectors.impl.GenericRequestDataCollector) JSONObject(org.json.JSONObject)

Aggregations

SseResponseEventDataProvider (org.wso2.carbon.apimgt.gateway.handlers.streaming.sse.analytics.SseResponseEventDataProvider)2 JSONObject (org.json.JSONObject)1 AnalyticsDataProvider (org.wso2.carbon.apimgt.common.analytics.collectors.AnalyticsDataProvider)1 GenericRequestDataCollector (org.wso2.carbon.apimgt.common.analytics.collectors.impl.GenericRequestDataCollector)1 AuthenticationContext (org.wso2.carbon.apimgt.gateway.handlers.security.AuthenticationContext)1 ThrottleInfo (org.wso2.carbon.apimgt.gateway.handlers.streaming.sse.throttling.ThrottleInfo)1