1
0
Fork 0
mirror of https://github.com/diamondburned/cchat-mock.git synced 2024-10-18 05:24:30 +00:00
cchat-mock/internal/service/authenticator.go

72 lines
1.6 KiB
Go

package service
import (
"github.com/diamondburned/cchat"
"github.com/diamondburned/cchat-mock/internal/internet"
"github.com/diamondburned/cchat-mock/internal/session"
"github.com/diamondburned/cchat/text"
"github.com/pkg/errors"
)
type Authenticator struct{}
var _ cchat.Authenticator = (*Authenticator)(nil)
func (Authenticator) Name() text.Rich {
return text.Plain("Slow Authentication")
}
func (Authenticator) Description() text.Rich {
return text.Plain("")
}
func (Authenticator) AuthenticateForm() []cchat.AuthenticateEntry {
return []cchat.AuthenticateEntry{
{
Name: "Username",
},
{
Name: "Password (ignored)",
Secret: true,
},
{
Name: "Paragraph (ignored)",
Multiline: true,
},
}
}
func (Authenticator) Authenticate(form []string) (cchat.Session, cchat.AuthenticateError) {
// SLOW IO TIME.
err := internet.SimulateAustralian()
if err == nil {
return session.New(form[0], ""), nil
}
return nil, cchat.WrapAuthenticateError(errors.Wrap(err, "Authentication failed"))
}
type FastAuthenticator struct{}
var _ cchat.Authenticator = (*FastAuthenticator)(nil)
func (FastAuthenticator) Name() text.Rich {
return text.Plain("Fast Authenticator")
}
func (FastAuthenticator) Description() text.Rich {
return text.Plain("Internet fails and slow-downs disabled.")
}
func (FastAuthenticator) AuthenticateForm() []cchat.AuthenticateEntry {
return []cchat.AuthenticateEntry{
{
Name: "Username (fast)",
},
}
}
func (FastAuthenticator) Authenticate(form []string) (cchat.Session, cchat.AuthenticateError) {
return session.New(form[0], ""), nil
}