func()

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


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 "+err.agentID.String())
			h.logsSubscriptionAPI.RecordCounterMetric(logsapi.SubscribeClientErr, 1)
		default:
			rendering.RenderInternalServerError(writer, request)
			h.logsSubscriptionAPI.RecordCounterMetric(logsapi.SubscribeServerErr, 1)
		}
		return
	}

	delete(request.Header, LambdaAgentIdentifier)

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

	respBody, status, headers, err := h.logsSubscriptionAPI.Subscribe(agentName, bytes.NewReader(body), request.Header)
	if err != nil {
		log.Errorf("Telemetry API error: %s", err)
		switch err {
		case logsapi.ErrTelemetryServiceOff:
			rendering.RenderForbiddenWithTypeMsg(writer, request,
				errLogsSubscriptionClosed, "Logs API subscription is closed already")
			h.logsSubscriptionAPI.RecordCounterMetric(logsapi.SubscribeClientErr, 1)
		default:
			rendering.RenderInternalServerError(writer, request)
			h.logsSubscriptionAPI.RecordCounterMetric(logsapi.SubscribeServerErr, 1)
		}
		return
	}

	rendering.RenderRuntimeLogsResponse(writer, respBody, status, headers)
	switch status / 100 {
	case 2: // 2xx
		h.logsSubscriptionAPI.RecordCounterMetric(logsapi.SubscribeSuccess, 1)
	case 4: // 4xx
		h.logsSubscriptionAPI.RecordCounterMetric(logsapi.SubscribeClientErr, 1)
	case 5: // 5xx
		h.logsSubscriptionAPI.RecordCounterMetric(logsapi.SubscribeServerErr, 1)
	}
}