func()

in lambda/rapi/handler/runtimelogs.go [27:79]


func (h *runtimeLogsHandler) ServeHTTP(writer http.ResponseWriter, request *http.Request) {
	agentName, err := h.verifyAgentID(writer, request)
	if err != nil {
		log.Errorf("Agent Verification Error: %s", err)
		switch err := err.(type) {
		case *ErrAgentIdentifierUnknown:
			rendering.RenderForbiddenWithTypeMsg(writer, request, errAgentIdentifierUnknown, "Unknown extension %s", err.agentID.String())
			h.telemetrySubscription.RecordCounterMetric(telemetry.SubscribeClientErr, 1)
		default:
			rendering.RenderInternalServerError(writer, request)
			h.telemetrySubscription.RecordCounterMetric(telemetry.SubscribeServerErr, 1)
		}
		return
	}

	delete(request.Header, LambdaAgentIdentifier)

	body, err := h.getBody(writer, request)
	if err != nil {
		log.Error(err)
		rendering.RenderInternalServerError(writer, request)
		h.telemetrySubscription.RecordCounterMetric(telemetry.SubscribeServerErr, 1)
		return
	}

	respBody, status, headers, err := h.telemetrySubscription.Subscribe(agentName, bytes.NewReader(body), request.Header, request.RemoteAddr)
	if err != nil {
		log.Errorf("Telemetry API error: %s", err)
		switch err {
		case telemetry.ErrTelemetryServiceOff:
			rendering.RenderForbiddenWithTypeMsg(writer, request,
				h.telemetrySubscription.GetServiceClosedErrorType(), "%s", h.telemetrySubscription.GetServiceClosedErrorMessage())
			h.telemetrySubscription.RecordCounterMetric(telemetry.SubscribeClientErr, 1)
		default:
			rendering.RenderInternalServerError(writer, request)
			h.telemetrySubscription.RecordCounterMetric(telemetry.SubscribeServerErr, 1)
		}
		return
	}

	rendering.RenderRuntimeLogsResponse(writer, respBody, status, headers)
	switch status / 100 {
	case 2: // 2xx
		if strings.Contains(string(respBody), "OK") {
			h.telemetrySubscription.RecordCounterMetric(telemetry.NumSubscribers, 1)
		}
		h.telemetrySubscription.RecordCounterMetric(telemetry.SubscribeSuccess, 1)
	case 4: // 4xx
		h.telemetrySubscription.RecordCounterMetric(telemetry.SubscribeClientErr, 1)
	case 5: // 5xx
		h.telemetrySubscription.RecordCounterMetric(telemetry.SubscribeServerErr, 1)
	}
}