Changeset 92 in code for trunk/upstream.go


Ignore:
Timestamp:
Mar 13, 2020, 10:26:43 AM (5 years ago)
Author:
contact
Message:

Add upstream CAP LS support

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/upstream.go

    r83 r92  
    4848        channels   map[string]*upstreamChannel
    4949        history    map[string]uint64
     50        caps       map[string]string
    5051}
    5152
     
    7879                channels: make(map[string]*upstreamChannel),
    7980                history:  make(map[string]uint64),
     81                caps:     make(map[string]string),
    8082        }
    8183
     
    167169        case "NOTICE":
    168170                uc.logger.Print(msg)
     171        case "CAP":
     172                if len(msg.Params) < 2 {
     173                        return newNeedMoreParamsError(msg.Command)
     174                }
     175                caps := strings.Fields(msg.Params[len(msg.Params) - 1])
     176                more := msg.Params[len(msg.Params) - 2] == "*"
     177
     178                for _, s := range caps {
     179                        kv := strings.SplitN(s, "=", 2)
     180                        k := strings.ToLower(kv[0])
     181                        var v string
     182                        if len(kv) >= 2 {
     183                                v = kv[1]
     184                        }
     185                        uc.caps[k] = v
     186                }
     187
     188                if !more {
     189                        uc.SendMessage(&irc.Message{
     190                                Command: "CAP",
     191                                Params:  []string{"END"},
     192                        })
     193                }
    169194        case irc.RPL_WELCOME:
    170195                uc.registered = true
     
    432457
    433458        uc.SendMessage(&irc.Message{
     459                Command: "CAP",
     460                Params:  []string{"LS", "302"},
     461        })
     462
     463        uc.SendMessage(&irc.Message{
    434464                Command: "NICK",
    435465                Params:  []string{uc.nick},
Note: See TracChangeset for help on using the changeset viewer.