logger = $logger;
$this->serializer = $serializer;
$this->mattermostService = $mattermostService;
}
/**
* Send message to a mattermost chat from alertmanager.
*
* Docs
* - alertmanager
* - mattermost
*
* @Route("/api/v1/send_message/alertmanager", methods={"POST"})
* @OA\Tag(name="mattermost")
* @OA\RequestBody(
* @OA\JsonContent(
* ref=@Model(type=AlertmanagerMessage::class)
* )
* )
* @OA\Response(
* response=200,
* description="Success delivery"
* )
*/
public function sendMessageFromAlertmanager(Request $request): Response
{
try {
$this->logger->notice($request->getContent());
$message = $this->serializer->deserialize(
$request->getContent(),
AlertmanagerMessage::class,
'json'
);
$response = $this->mattermostService->sendAlertmanagerMessage($message);
return new Response($response->getBody()->getContents());
} catch (Throwable $e) {
$this->logger->critical($e->getMessage());
return new Response(
$e->getMessage(),
0 === $e->getCode() ? Response::HTTP_INTERNAL_SERVER_ERROR : $e->getCode()
);
}
}
/**
* Send message to a mattermost chat from grafana.
*
* Docs
* - grafana
* - mattermost
*
* @Route("/api/v1/send_message/grafana", methods={"POST"})
* @OA\Tag(name="mattermost")
* @OA\RequestBody(
* @OA\JsonContent(
* ref=@Model(type=GrafanaMessage::class)
* )
* )
* @OA\Response(
* response=200,
* description="Success delivery"
* )
*/
public function sendMessageFromGrafana(Request $request): Response
{
try {
$this->logger->notice($request->getContent());
$message = $this->serializer->deserialize(
$request->getContent(),
GrafanaMessage::class,
'json'
);
$response = $this->mattermostService->sendGrafanaMessage($message);
return new Response($response->getBody()->getContents());
} catch (Throwable $e) {
$this->logger->critical($e->getMessage());
return new Response(
$e->getMessage(),
0 === $e->getCode() ? Response::HTTP_INTERNAL_SERVER_ERROR : $e->getCode()
);
}
}
}