Skip to content

Commit

Permalink
add reply-thread-parent display-name and user-id
Browse files Browse the repository at this point in the history
  • Loading branch information
MahdiBM committed Nov 4, 2023
1 parent ae18008 commit 8980f3d
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 4 deletions.
16 changes: 13 additions & 3 deletions Sources/TwitchIRC/IncomingMessage/PrivateMessage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,21 @@ public struct PrivateMessage: MessageWithBadges {
public var userLogin = String()
/// Replied thread's message's id.
public var messageId = String()
/// Replied user's display name.
public var displayName = String()
/// Replied user's user id.
public var userId = String()

internal init(
userLogin: String,
messageId: String
messageId: String,
displayName: String,
userId: String
) {
self.userLogin = userLogin
self.messageId = messageId
self.displayName = displayName
self.userId = userId
}

public init() { }
Expand Down Expand Up @@ -188,7 +196,9 @@ public struct PrivateMessage: MessageWithBadges {
)
self.replyThreadParent = .init(
userLogin: parser.string(for: "reply-thread-parent-user-login"),
messageId: parser.string(for: "reply-thread-parent-msg-id")
messageId: parser.string(for: "reply-thread-parent-msg-id"),
displayName: parser.string(for: "reply-thread-parent-display-name"),
userId: parser.string(for: "reply-thread-parent-user-id")
)
self.pinnedChat = .init(
amount: parser.uint(for: "pinned-chat-paid-amount"),
Expand All @@ -200,7 +210,7 @@ public struct PrivateMessage: MessageWithBadges {
)

let deprecatedKeys = ["turbo", "mod", "vip", "subscriber", "user-type"]
let occasionalKeys = [["crowd-chant-parent-msg-id"], ["bits"], ["emote-only"], ["msg-id"], ["custom-reward-id"], ["client-nonce"], ["flags"], ["first-msg"], ["reply-parent-display-name", "reply-parent-user-login", "reply-parent-msg-body", "reply-parent-msg-id", "reply-parent-user-id"], ["pinned-chat-paid-amount", "pinned-chat-paid-canonical-amount", "pinned-chat-paid-currency", "pinned-chat-paid-exponent"], ["pinned-chat-paid-is-system-message", "pinned-chat-paid-level"], ["reply-thread-parent-user-login", "reply-thread-parent-msg-id"]]
let occasionalKeys = [["crowd-chant-parent-msg-id"], ["bits"], ["emote-only"], ["msg-id"], ["custom-reward-id"], ["client-nonce"], ["flags"], ["first-msg"], ["reply-parent-display-name", "reply-parent-user-login", "reply-parent-msg-body", "reply-parent-msg-id", "reply-parent-user-id"], ["pinned-chat-paid-amount", "pinned-chat-paid-canonical-amount", "pinned-chat-paid-currency", "pinned-chat-paid-exponent"], ["pinned-chat-paid-is-system-message", "pinned-chat-paid-level"], ["reply-thread-parent-user-login", "reply-thread-parent-msg-id"], ["reply-thread-parent-display-name", "reply-thread-parent-user-id"]]

self.parsingLeftOvers = parser.getLeftOvers(
excludedUnusedKeys: deprecatedKeys,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,40 @@ final class PrivateMessageTests: XCTestCase {
XCTAssertEqual(msg.userId, "686358047")
XCTAssertTrue(msg.replyParent == .init(displayName: "RoyaleAlchemist", userLogin: "royalealchemist", message: "Clash\\sRoyale\\sAPI\\sestá\\sde\\svuelta\\sPogChamp\\sPogChamp\\s.\\sSi\\shubo\\sun\\smantenimiento\\so\\suna\\sinterrupción\\sdel\\sservicio,\\sya\\sdebería\\shaber\\sterminado.\\sRoyale\\sAlchemist\\snecesitará\\sentre\\s5\\sy\\s1 0\\sminutos\\spara\\srecuperarse\\spor\\scompleto\\s|\\s@Pompeyo4", id: "0e772349-8bcd-42cb-9c91-1c9eece83af8", userId: "684111155")
)
XCTAssertTrue(msg.replyThreadParent == .init(userLogin: "royalealchemist", messageId: "0e772349-8bcd-42cb-9c91-1c9eece83af8"))
XCTAssertTrue(msg.replyThreadParent == .init(userLogin: "royalealchemist", messageId: "0e772349-8bcd-42cb-9c91-1c9eece83af8", displayName: "", userId: ""))
XCTAssertTrue(msg.pinnedChat == .init())
XCTAssertTrue(msg.parsingLeftOvers.isEmpty, "Non-empty parsing left-overs: \(msg.parsingLeftOvers)")
}

func testParsedValues10() throws {
let string = #"@badge-info=;badges=rplace-2023/1;client-nonce=115b634f5401db203a9b2d920d51a2a1;color=#FF0000;display-name=SoyWasha;emotes=;first-msg=0;flags=;id=6cdf9fed-253e-4b16-9878-dd69719a867f;mod=0;reply-parent-display-name=PF_josegamer;reply-parent-msg-body=por\\sque\\sverayork??;reply-parent-msg-id=b6543543-798c-4260-a84e-5495af2b1c32;reply-parent-user-id=545021421;reply-parent-user-login=pf_josegamer;reply-thread-parent-display-name=PF_josegamer;reply-thread-parent-msg-id=b6543543-798c-4260-a84e-5495af2b1c32;reply-thread-parent-user-id=545021421;reply-thread-parent-user-login=pf_josegamer;returning-chatter=0;room-id=204708397;subscriber=0;tmi-sent-ts=1699075686188;turbo=0;user-id=708631959;user-type= :soywasha!soywasha@soywasha.tmi.twitch.tv PRIVMSG #yosoyricklive :@PF_josegamer es la mezcla de veracruz y nueva york xd"#

let msg: PrivateMessage = try TestUtils.parseAndUnwrap(string: string)

XCTAssertEqual(msg.channel, "yosoyricklive")
XCTAssertEqual(msg.message, "@PF_josegamer es la mezcla de veracruz y nueva york xd")
XCTAssertEqual(msg.badgeInfo, [])
XCTAssertEqual(msg.badges, ["rplace-2023/1"])
XCTAssertEqual(msg.bits, "")
XCTAssertEqual(msg.color, "#FF0000")
XCTAssertEqual(msg.displayName, "SoyWasha")
XCTAssertEqual(msg.userLogin, "soywasha")
XCTAssertEqual(msg.emotes, "")
XCTAssertEqual(msg.emoteOnly, false)
XCTAssertEqual(msg.flags, [])
XCTAssertEqual(msg.firstMessage, false)
XCTAssertEqual(msg.returningChatter, false)
XCTAssertEqual(msg.messageId, "")
XCTAssertEqual(msg.id, "6cdf9fed-253e-4b16-9878-dd69719a867f")
XCTAssertEqual(msg.crowdChantParentMessageId, "")
XCTAssertEqual(msg.customRewardId, "")
XCTAssertEqual(msg.roomId, "204708397")
XCTAssertEqual(msg.tmiSentTs, 1699075686188)
XCTAssertEqual(msg.clientNonce, "115b634f5401db203a9b2d920d51a2a1")
XCTAssertEqual(msg.userId, "708631959")
XCTAssertTrue(msg.replyParent == .init(displayName: "PF_josegamer", userLogin: "pf_josegamer", message: "por\\\\sque\\\\sverayork??", id: "b6543543-798c-4260-a84e-5495af2b1c32", userId: "545021421"), "\(msg.replyParent)"
)
XCTAssertTrue(msg.replyThreadParent == .init(userLogin: "pf_josegamer", messageId: "b6543543-798c-4260-a84e-5495af2b1c32", displayName: "PF_josegamer", userId: "545021421"), "\(msg.replyThreadParent)")
XCTAssertTrue(msg.pinnedChat == .init())
XCTAssertTrue(msg.parsingLeftOvers.isEmpty, "Non-empty parsing left-overs: \(msg.parsingLeftOvers)")
}
Expand Down

0 comments on commit 8980f3d

Please sign in to comment.