Changeset 119 in code for trunk/downstream.go
- Timestamp:
- Mar 18, 2020, 11:06:48 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/downstream.go
r117 r119 120 120 } 121 121 122 func (dc *downstreamConn) marshalChannel(uc *upstreamConn, name string) string {123 return name124 }125 126 122 func (dc *downstreamConn) forEachNetwork(f func(*network)) { 127 123 if dc.network != nil { … … 155 151 } 156 152 153 func (dc *downstreamConn) marshalEntity(uc *upstreamConn, name string) string { 154 for _, r := range name { 155 switch r { 156 // TODO: support upstream ISUPPORT channel prefixes 157 case '#', '&', '+', '!': 158 return dc.marshalChannel(uc, name) 159 } 160 break 161 } 162 return dc.marshalNick(uc, name) 163 } 164 165 func (dc *downstreamConn) marshalChannel(uc *upstreamConn, name string) string { 166 if dc.upstream() != nil { 167 return name 168 } 169 return name + "/" + uc.network.GetName() 170 } 171 157 172 func (dc *downstreamConn) unmarshalChannel(name string) (*upstreamConn, string, error) { 158 173 if uc := dc.upstream(); uc != nil { … … 160 175 } 161 176 162 // TODO: extract network name from channel name if dc.upstream == nil 177 network := "" 178 if i := strings.LastIndexByte(name, '/'); i >= 0 { 179 network = name[i+1:] 180 name = name[:i] 181 } 182 183 if network != "" { 184 var conn *upstreamConn 185 dc.forEachUpstream(func(uc *upstreamConn) { 186 if network != uc.network.GetName() { 187 return 188 } 189 conn = uc 190 }) 191 return conn, name, nil 192 } 193 163 194 var channel *upstreamChannel 164 195 var err error … … 188 219 return dc.nick 189 220 } 190 return nick 221 if dc.upstream() != nil { 222 return nick 223 } 224 return nick + "/" + uc.network.GetName() 191 225 } 192 226 … … 195 229 return dc.prefix() 196 230 } 197 return prefix 231 if dc.upstream() != nil { 232 return prefix 233 } 234 return &irc.Prefix{ 235 Name: prefix.Name + "/" + uc.network.GetName(), 236 User: prefix.User, 237 Host: prefix.Host, 238 } 198 239 } 199 240 … … 260 301 switch msg.Command { 261 302 case "PRIVMSG": 262 // TODO: detect whether it's a user or a channel263 msg.Params[0] = dc.marshal Channel(uc, msg.Params[0])303 msg.Prefix = dc.marshalUserPrefix(uc, msg.Prefix) 304 msg.Params[0] = dc.marshalEntity(uc, msg.Params[0]) 264 305 default: 265 306 panic("expected to consume a PRIVMSG message")
Note:
See TracChangeset
for help on using the changeset viewer.