Browse Source

consolidate some time-setting code

tags/v1.2.0-rc1
Shivaram Lingamneni 5 years ago
parent
commit
8dca545264
2 changed files with 13 additions and 17 deletions
  1. 10
    8
      irc/client.go
  2. 3
    9
      irc/responsebuffer.go

+ 10
- 8
irc/client.go View File

@@ -1160,12 +1160,7 @@ func (session *Session) sendFromClientInternal(blocking bool, serverTime time.Ti
1160 1160
 		msg.SetTag("msgid", msgid)
1161 1161
 	}
1162 1162
 	// attach server-time
1163
-	if session.capabilities.Has(caps.ServerTime) {
1164
-		if serverTime.IsZero() {
1165
-			serverTime = time.Now().UTC()
1166
-		}
1167
-		msg.SetTag("time", serverTime.Format(IRCv3TimestampFormat))
1168
-	}
1163
+	session.setTimeTag(&msg, serverTime)
1169 1164
 
1170 1165
 	return session.SendRawMessage(msg, blocking)
1171 1166
 }
@@ -1246,10 +1241,17 @@ func (client *Client) Send(tags map[string]string, prefix string, command string
1246 1241
 
1247 1242
 func (session *Session) Send(tags map[string]string, prefix string, command string, params ...string) (err error) {
1248 1243
 	msg := ircmsg.MakeMessage(tags, prefix, command, params...)
1244
+	session.setTimeTag(&msg, time.Time{})
1245
+	return session.SendRawMessage(msg, false)
1246
+}
1247
+
1248
+func (session *Session) setTimeTag(msg *ircmsg.IrcMessage, serverTime time.Time) {
1249 1249
 	if session.capabilities.Has(caps.ServerTime) && !msg.HasTag("time") {
1250
-		msg.SetTag("time", time.Now().UTC().Format(IRCv3TimestampFormat))
1250
+		if serverTime.IsZero() {
1251
+			serverTime = time.Now()
1252
+		}
1253
+		msg.SetTag("time", serverTime.UTC().Format(IRCv3TimestampFormat))
1251 1254
 	}
1252
-	return session.SendRawMessage(msg, false)
1253 1255
 }
1254 1256
 
1255 1257
 // Notice sends the client a notice from the server.

+ 3
- 9
irc/responsebuffer.go View File

@@ -93,9 +93,7 @@ func (rb *ResponseBuffer) AddFromClient(time time.Time, msgid string, fromNickMa
93 93
 		msg.SetTag("msgid", msgid)
94 94
 	}
95 95
 	// attach server-time
96
-	if rb.session.capabilities.Has(caps.ServerTime) && !msg.HasTag("time") {
97
-		msg.SetTag("time", time.UTC().Format(IRCv3TimestampFormat))
98
-	}
96
+	rb.session.setTimeTag(&msg, time)
99 97
 
100 98
 	rb.AddMessage(msg)
101 99
 }
@@ -223,9 +221,7 @@ func (rb *ResponseBuffer) flushInternal(final bool, blocking bool) error {
223 221
 		// ACK message
224 222
 		message := ircmsg.MakeMessage(nil, rb.session.client.server.name, "ACK")
225 223
 		message.SetTag(caps.LabelTagName, rb.Label)
226
-		if rb.session.capabilities.Has(caps.ServerTime) {
227
-			message.SetTag("time", time.Now().UTC().Format(IRCv3TimestampFormat))
228
-		}
224
+		rb.session.setTimeTag(&message, time.Time{})
229 225
 		rb.session.SendRawMessage(message, blocking)
230 226
 	} else if useLabel && len(rb.messages) == 1 && rb.batchID == "" && final {
231 227
 		// single labeled message
@@ -235,9 +231,7 @@ func (rb *ResponseBuffer) flushInternal(final bool, blocking bool) error {
235 231
 	// send each message out
236 232
 	for _, message := range rb.messages {
237 233
 		// attach server-time if needed
238
-		if rb.session.capabilities.Has(caps.ServerTime) && !message.HasTag("time") {
239
-			message.SetTag("time", time.Now().UTC().Format(IRCv3TimestampFormat))
240
-		}
234
+		rb.session.setTimeTag(&message, time.Time{})
241 235
 
242 236
 		// attach batch ID, unless this message was part of a nested batch and is
243 237
 		// already tagged

Loading…
Cancel
Save