6
1
mirror of https://git.mills.io/saltyim/saltyim.git synced 2024-06-16 03:48:24 +00:00

feat: set outbox nick@domain to destination (#113)

Co-authored-by: Jon Lundy <jon@xuu.cc>
Reviewed-on: https://git.mills.io/saltyim/saltyim/pulls/113
Reviewed-by: James Mills <james@mills.io>
This commit is contained in:
xuu 2022-03-31 23:06:33 +00:00
parent 4544b1c4cf
commit 9da59f133d
2 changed files with 15 additions and 11 deletions

@ -218,10 +218,14 @@ func (cli *Client) Outbox() *url.URL {
return ep
}
func (cli *Client) OutboxAddr() *Addr {
func (cli *Client) OutboxAddr(to *Addr) *Addr {
return &Addr{
endpoint: cli.Outbox(),
key: cli.me.key,
User: to.User,
Domain: to.Domain,
endpoint: cli.Outbox(),
key: cli.me.key,
capabilities: cli.me.capabilities,
}
}
@ -352,7 +356,7 @@ func (cli *Client) Send(user, msg string) error {
return err
}
return cli.SendToAddr(cli.OutboxAddr(), msg)
return cli.SendToAddr(cli.OutboxAddr(addr), msg)
}
func (cli *Client) SendToAddr(addr *Addr, msg string) error {

@ -68,7 +68,7 @@ type Addr struct {
discoveredDomain string
avatar string
capabilities Capabilities
checkedAvatar bool
checkedAvatar bool
}
// IsZero returns true if the address is empty
@ -83,14 +83,14 @@ func (a *Addr) MarshalJSON() ([]byte, error) {
Domain string
Key string
Endpoint string
Avatar string
Avatar string
}{
User: a.User,
Domain: a.Domain,
Addr: a.String(),
Key: a.key.ID().String(),
Endpoint: a.Endpoint().String(),
Avatar: a.Avatar(),
Avatar: a.Avatar(),
})
}
@ -101,7 +101,7 @@ func (a *Addr) UnmarshalJSON(data []byte) error {
Domain string
Key string
Endpoint string
Avatar string
Avatar string
}{}
if err := json.Unmarshal(data, &res); err != nil {
@ -122,7 +122,7 @@ func (a *Addr) UnmarshalJSON(data []byte) error {
return fmt.Errorf("error parsing public key %q: %w", res.Key, err)
}
a.key = key
a.avatar = res.Avatar
a.avatar = res.Avatar
return nil
}
@ -133,7 +133,7 @@ func (a *Addr) String() string {
// Hash returns the Hex(SHA256Sum()) of the Address
func (a *Addr) Hash() string {
return fmt.Sprintf("%x", sha256.Sum256([]byte(a.String())))
return fmt.Sprintf("%x", sha256.Sum256([]byte(strings.ToLower(a.String()))))
}
// Formatted returns a formatted user used in the Salty Message Format
@ -220,7 +220,7 @@ func (a *Addr) Avatar() string {
if target, err := resolver.LookupSRV("avatars", "tcp", a.Domain); err == nil {
a.avatar = fmt.Sprintf("https://%s/avatar/%s", target, a.Hash())
}
a.checkedAvatar = true
a.checkedAvatar = true
return a.avatar
}