package wikiauth import ( "github.com/sadbox/mediawiki" ) // WikiAuth is the structure responsible for wiki authentication. It's immuitable // and thread safe. The only time it connects is to log in. type WikiAuth struct { url string } // New creates a new wiki authenticator instance. func New(url string) *WikiAuth { return &WikiAuth{url} } // Login connects to the wiki and logs in. It will not reuse clients between // logins, so it's thus threadsafe. func (wikiAuth *WikiAuth) Login(username, password string) error { client, err := mediawiki.New(wikiAuth.url, "") if err != nil { return err } client.Username = username client.Password = password err = client.Login() if err != nil { return err } client.Logout() return nil }