(ctx context.Context, event cloudevents.Event, discord *entities.Discord)
| 254 | } |
| 255 | |
| 256 | func (service *DiscordService) sendMessage(ctx context.Context, event cloudevents.Event, discord *entities.Discord) { |
| 257 | ctx, span, ctxLogger := service.tracer.StartWithLogger(ctx, service.logger) |
| 258 | defer span.End() |
| 259 | |
| 260 | payload := new(events.MessagePhoneReceivedPayload) |
| 261 | if err := event.DataAs(payload); err != nil { |
| 262 | ctxLogger.Error(stacktrace.Propagate(err, fmt.Sprintf("cannot unmarshal event [%s] with ID [%s] into [%T]", event.Type(), event.ID(), payload))) |
| 263 | return |
| 264 | } |
| 265 | |
| 266 | request := service.createDiscordMessage(ctxLogger, payload) |
| 267 | message, response, err := service.client.Channel.CreateMessage(ctx, discord.IncomingChannelID, request) |
| 268 | if err != nil { |
| 269 | msg := fmt.Sprintf("cannot send [%s] event to discord channel [%s] for user [%s]", event.Type(), discord.IncomingChannelID, discord.UserID) |
| 270 | ctxLogger.Warn(service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))) |
| 271 | |
| 272 | eventPayload := &events.DiscordSendFailedPayload{ |
| 273 | DiscordID: discord.ID, |
| 274 | UserID: discord.UserID, |
| 275 | MessageID: payload.MessageID, |
| 276 | Owner: payload.Owner, |
| 277 | EventType: event.Type(), |
| 278 | ErrorMessage: err.Error(), |
| 279 | DiscordChannelID: discord.IncomingChannelID, |
| 280 | } |
| 281 | |
| 282 | if response != nil { |
| 283 | eventPayload.HTTPResponseStatusCode = &response.HTTPResponse.StatusCode |
| 284 | eventPayload.ErrorMessage = string(*response.Body) |
| 285 | } |
| 286 | |
| 287 | service.handleDiscordMessageFailed(ctx, event.Source(), eventPayload) |
| 288 | return |
| 289 | } |
| 290 | |
| 291 | ctxLogger.Info(fmt.Sprintf("sent discord message [%s] to channel [%s] for [%s] event with ID [%s]", message["id"].(string), discord.IncomingChannelID, event.Type(), event.ID())) |
| 292 | } |
| 293 | |
| 294 | func (service *DiscordService) createDiscordMessage(ctxLogger telemetry.Logger, payload *events.MessagePhoneReceivedPayload) fiber.Map { |
| 295 | return fiber.Map{ |
no test coverage detected