diff --git a/deltachat/rpc.go b/deltachat/rpc.go index a778732..49707e0 100644 --- a/deltachat/rpc.go +++ b/deltachat/rpc.go @@ -133,6 +133,11 @@ func (rpc *Rpc) SetConfig(accountId AccountId, key string, value option.Option[s return rpc.Transport.Call(rpc.Context, "set_config", accountId, key, value) } +// Set account configuration value from qr code +func (rpc *Rpc) SetConfigFromQr(accountId AccountId, qrContent string) error { + return rpc.Transport.Call(rpc.Context, "set_config_from_qr", accountId, qrContent) +} + // Tweak several account configuration values in a batch. func (rpc *Rpc) BatchSetConfig(accountId AccountId, config map[string]option.Option[string]) error { return rpc.Transport.Call(rpc.Context, "batch_set_config", accountId, config) diff --git a/examples/basic/.gitignore b/examples/basic/.gitignore new file mode 100644 index 0000000..e6573f2 --- /dev/null +++ b/examples/basic/.gitignore @@ -0,0 +1 @@ +accounts diff --git a/examples/basic/Readme.md b/examples/basic/Readme.md new file mode 100644 index 0000000..9c1ce6d --- /dev/null +++ b/examples/basic/Readme.md @@ -0,0 +1,10 @@ +# Basic Examples + + +```sh +go run echobot.go DCACCOUNT:https://nine.testrun.org/new +``` + +```sh +go run client.go DCACCOUNT:https://nine.testrun.org/new +``` diff --git a/examples/client.go b/examples/basic/client.go similarity index 91% rename from examples/client.go rename to examples/basic/client.go index 8ddea5e..7fbce19 100644 --- a/examples/client.go +++ b/examples/basic/client.go @@ -51,12 +51,7 @@ func main() { rpc.StartIo(accId) } else { log.Println("Account not configured, configuring...") - rpc.BatchSetConfig(accId, - map[string]option.Option[string]{ - "addr": option.Some(os.Args[1]), - "mail_pw": option.Some(os.Args[2]), - }, - ) + rpc.SetConfigFromQr(accId, os.Args[1]) if err := rpc.Configure(accId); err != nil { log.Fatalln(err) } @@ -64,6 +59,8 @@ func main() { addr, _ := rpc.GetConfig(accId, "addr") log.Println("Using account:", addr.Unwrap()) + inviteLink, _ := rpc.GetChatSecurejoinQrCode(accId, option.None[deltachat.ChatId]()) + log.Println("Listening on:", inviteLink) for { accId2, event, err := rpc.GetNextEvent() diff --git a/examples/echobot.go b/examples/basic/echobot.go similarity index 83% rename from examples/echobot.go rename to examples/basic/echobot.go index fc95a45..b1ede40 100644 --- a/examples/echobot.go +++ b/examples/basic/echobot.go @@ -6,6 +6,7 @@ import ( "os" "github.com/chatmail/rpc-client-go/deltachat" + "github.com/chatmail/rpc-client-go/deltachat/option" "github.com/chatmail/rpc-client-go/deltachat/transport" ) @@ -44,13 +45,14 @@ func main() { if isConf, _ := bot.Rpc.IsConfigured(accId); !isConf { log.Println("Bot not configured, configuring...") - err := bot.Configure(accId, os.Args[1], os.Args[2]) + rpc.SetConfigFromQr(accId, os.Args[1]) + err := bot.Rpc.Configure(accId) if err != nil { log.Fatalln(err) } } - addr, _ := bot.Rpc.GetConfig(accId, "configured_addr") - log.Println("Listening at:", addr.Unwrap()) + inviteLink, _ := bot.Rpc.GetChatSecurejoinQrCode(accId, option.None[deltachat.ChatId]()) + log.Println("Listening at:", inviteLink) bot.Run() } diff --git a/examples/basic/go.mod b/examples/basic/go.mod new file mode 100644 index 0000000..f4589f6 --- /dev/null +++ b/examples/basic/go.mod @@ -0,0 +1,13 @@ +module echobot + +go 1.25.1 + +replace github.com/chatmail/rpc-client-go => ../../ + +require github.com/chatmail/rpc-client-go v0.0.0-00010101000000-000000000000 + +require ( + github.com/creachadair/jrpc2 v1.1.2 // indirect + github.com/creachadair/mds v0.8.2 // indirect + golang.org/x/sync v0.6.0 // indirect +) diff --git a/examples/basic/go.sum b/examples/basic/go.sum new file mode 100644 index 0000000..e1f08dc --- /dev/null +++ b/examples/basic/go.sum @@ -0,0 +1,18 @@ +github.com/creachadair/jrpc2 v1.1.2 h1:UOYMipEFYlwd5qmcvs9GZBurn3oXt1UDIX5JLjWWFzo= +github.com/creachadair/jrpc2 v1.1.2/go.mod h1:JcCe2Eny3lIvVwZLm92WXyU+tNUgTBWFCLMsfNkjEGk= +github.com/creachadair/mds v0.8.2 h1:+Jvq8XBrREerXI/QZpNAeiLjIBuVMOl8p3v+mKgSexY= +github.com/creachadair/mds v0.8.2/go.mod h1:4vrFYUzTXMJpMBU+OA292I6IUxKWCCfZkgXg+/kBZMo= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/examples/go.mod b/examples/go.mod deleted file mode 100644 index e69de29..0000000