MCPcopy Index your code
hub / github.com/Preloading/TwitterAPIBridge / DeleteTweet

Function DeleteTweet

twitterv1/interaction.go:321–388  ·  view source on GitHub ↗

This handles deleting a tweet, retweet, or reply

(c *fiber.Ctx)

Source from the content-addressed store, hash-verified

319
320// This handles deleting a tweet, retweet, or reply
321func DeleteTweet(c *fiber.Ctx) error {
322 postId := c.Params("id")
323 user_did, pds, _, oauthToken, err := GetAuthFromReq(c)
324
325 if err != nil {
326 return MissingAuth(c, err)
327 }
328
329 // Fetch ID
330 idBigInt, err := strconv.ParseInt(postId, 10, 64)
331 if err != nil {
332 return ReturnError(c, "Invalid ID format", 195, 403)
333 }
334 postIdPtr, _, repostUser, err := bridge.TwitterMsgIdToBluesky(&idBigInt)
335 if err != nil {
336 return ReturnError(c, "Id not found.", 144, fiber.StatusNotFound)
337 }
338 postId = *postIdPtr
339
340 postToDelete, err := blueskyapi.GetPost(*pds, *oauthToken, postId, 0, 0)
341
342 if err != nil {
343 fmt.Println("Error:", err)
344 return HandleBlueskyError(c, err.Error(), "com.atproto.repo.deleteRecord", DeleteTweet)
345 }
346
347 collection := "app.bsky.feed.post"
348 // Check if the post is a retweet
349 if repostUser != nil && *repostUser != "" {
350 if *repostUser != *user_did {
351 return ReturnError(c, "You can only delete your own retweets", 195, fiber.StatusForbidden)
352 }
353 collection = "app.bsky.feed.repost"
354 postId = *postToDelete.Thread.Post.Viewer.Repost
355 } else {
356 if postToDelete.Thread.Post.Author.DID != *user_did {
357 return ReturnError(c, "You can only delete your own tweets", 195, fiber.StatusForbidden)
358 }
359 }
360
361 if err := blueskyapi.DeleteRecord(*pds, *oauthToken, postId, *user_did, collection); err != nil {
362 fmt.Println("Error:", err)
363 return HandleBlueskyError(c, err.Error(), "com.atproto.repo.deleteRecord", DeleteTweet)
364 }
365
366 db_controller.StoreAnalyticData(db_controller.AnalyticData{
367 DataType: "deleted_post",
368 IPAddress: c.IP(),
369 UserAgent: c.Get("User-Agent"),
370 Language: c.Get("Accept-Language"),
371 TwitterClient: c.Get("X-Twitter-Client"),
372 TwitterClientVersion: c.Get("X-Twitter-Client-Version"),
373 Timestamp: time.Now(),
374 })
375
376 postToDelete.Thread.Post.URI = postId
377 postToDelete.Thread.Post.Author.DID = *user_did
378

Callers

nothing calls this directly

Calls 9

TwitterMsgIdToBlueskyFunction · 0.92
StoreAnalyticDataFunction · 0.92
GetAuthFromReqFunction · 0.85
MissingAuthFunction · 0.85
ReturnErrorFunction · 0.85
HandleBlueskyErrorFunction · 0.85
EncodeAndSendFunction · 0.85
TranslatePostToTweetFunction · 0.85
GetMethod · 0.45

Tested by

no test coverage detected