From 08f13f71dd18a4656cee1beca5b2e666f83f1129 Mon Sep 17 00:00:00 2001 From: sispeo <42068883+fperot74@users.noreply.github.com> Date: Thu, 9 Jul 2020 14:31:38 +0200 Subject: [PATCH] [CLOUDTRUST-2636] Add send email method --- Gopkg.lock | 39 +++++++++++++++++++-------------------- Gopkg.toml | 2 +- api/account.go | 20 ++++++++++++++++++-- 3 files changed, 38 insertions(+), 23 deletions(-) diff --git a/Gopkg.lock b/Gopkg.lock index 233de3f..ac0c88d 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -2,12 +2,12 @@ [[projects]] - digest = "1:2c7abdf1364ef3db046635ca5bb2cc26838ccb45a2b6608849e7b7fc6493423d" + digest = "1:c3f573bbf2ab26cdf2bdc8a4080e1a876927b7746992b36426f833567a569eae" name = "github.com/cloudtrust/common-service" packages = ["errors"] pruneopts = "" - revision = "c9a387c12b76cd979ddf8be40168f3e19f643184" - version = "v2.2.1" + revision = "22a293b4b2de317dd0260d47c62b862101551597" + version = "v2.2.2" [[projects]] digest = "1:bb7f91ab4d1c44a3bb2651c613463c134165bda0282fca891a63b88d1b501997" @@ -114,16 +114,16 @@ version = "v1.0.5" [[projects]] - digest = "1:9cc06d7468e429919ead45fc408b26838b4dfb12075f9756685ac6eae867b1a3" + digest = "1:83fd2513b9f6ae0997bf646db6b74e9e00131e31002116fda597175f25add42d" name = "github.com/stretchr/testify" packages = ["assert"] pruneopts = "" - revision = "004e3cb72213e5e727e4e08f668ee6c8f27e5d32" - version = "v1.6.0" + revision = "f654a9112bbeac49ca2cd45bfbe11533c4666cf8" + version = "v1.6.1" [[projects]] branch = "master" - digest = "1:90e0a5569023a45d6f5ba62cf7b250b89a4310107e42c45b76481f518bb09cc7" + digest = "1:2b1ff27f17455187b412669f2aa359be51dc79661bd34cf8f54fa67e1ea106d0" name = "golang.org/x/crypto" packages = [ "ed25519", @@ -131,11 +131,11 @@ "pbkdf2", ] pruneopts = "" - revision = "279210d13fedf5be6d476bad5df6a015042bb905" + revision = "ab33eee955e00ff7c973405b2780aca48d293014" [[projects]] branch = "master" - digest = "1:7254fd3f1a6e5ae98ab721ce6f3f09a79a59d3a1426e045fabc2548101e37333" + digest = "1:92cf07fb2067987a7b46e1f63aa50ccde3ee8a7315ffca3e4e8a3a147ac9a717" name = "golang.org/x/net" packages = [ "context", @@ -144,7 +144,7 @@ "publicsuffix", ] pruneopts = "" - revision = "627f9648deb96c27737b83199d44bb5c1010cbcf" + revision = "ab34263943818b32f575efc978a3d24e80b04bd7" [[projects]] branch = "master" @@ -158,7 +158,7 @@ revision = "bf48bf16ab8d622ce64ec6ce98d2c98f916b6303" [[projects]] - digest = "1:740b51a55815493a8d0f2b1e0d0ae48fe48953bf7eaf3fcc4198823bf67768c0" + digest = "1:fccda34e4c58111b1908d8d69bf8d57c41c8e2542bc18ec8cd38c4fa21057f71" name = "golang.org/x/text" packages = [ "collate", @@ -179,8 +179,8 @@ "unicode/rangetable", ] pruneopts = "" - revision = "342b2e1fbaa52c93f31447ad2c6abc048c63e475" - version = "v0.3.2" + revision = "23ae387dee1f90d29a23c0e87ee0b46038fbed0e" + version = "v0.3.3" [[projects]] digest = "1:2724bc9a6f84121903b6e33edc295b8182a95bb36535244fe2477ae64ba17654" @@ -199,7 +199,7 @@ version = "v1.6.6" [[projects]] - digest = "1:7579d802036911f3a087652830860739fcd8a03967ad5a3531e190aefe647f9d" + digest = "1:0d049ff01749ce1d6092c85cb90a02dfdb3b401939b13415b7e608f36bc8ecee" name = "google.golang.org/protobuf" packages = [ "encoding/prototext", @@ -212,12 +212,11 @@ "internal/encoding/tag", "internal/encoding/text", "internal/errors", - "internal/fieldnum", "internal/fieldsort", "internal/filedesc", "internal/filetype", "internal/flags", - "internal/genname", + "internal/genid", "internal/impl", "internal/mapsort", "internal/pragma", @@ -231,8 +230,8 @@ "runtime/protoimpl", ] pruneopts = "" - revision = "5c3dd7024aed895adfe053f26b5a479e991cbca9" - version = "v1.24.0" + revision = "3f7a61f89bb6813f89d981d1870ed68da0b3c3f1" + version = "v1.25.0" [[projects]] digest = "1:95fa5eae3b22887e8aea55ad4f93bc1374d586f7dd3504cf0010845ccc0a95a8" @@ -271,11 +270,11 @@ [[projects]] branch = "v3" - digest = "1:4eec9bf48dd37d5c72af308fb8609bb61ed7c18dc2677848ff1da45edb1dbbfd" + digest = "1:2e9c4d6def1d36dcd17730e00c06b49a2e97ea5e1e639bcd24fa60fa43e33ad6" name = "gopkg.in/yaml.v3" packages = ["."] pruneopts = "" - revision = "e3079894b1e86c57cd48ff0d67dfd45de276d131" + revision = "eeeca48fe7764f320e4870d231902bf9c1be2c08" [solve-meta] analyzer-name = "dep" diff --git a/Gopkg.toml b/Gopkg.toml index 715d04f..e75801f 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -22,7 +22,7 @@ [[constraint]] name = "github.com/cloudtrust/common-service" - version = "2.2.1" + version = "2.2.2" [[constraint]] name = "github.com/pkg/errors" diff --git a/api/account.go b/api/account.go index a9626b1..385e8b3 100644 --- a/api/account.go +++ b/api/account.go @@ -2,14 +2,17 @@ package api import ( "github.com/cloudtrust/keycloak-client" + "gopkg.in/h2non/gentleman.v2/plugin" "gopkg.in/h2non/gentleman.v2/plugins/body" "gopkg.in/h2non/gentleman.v2/plugins/headers" + "gopkg.in/h2non/gentleman.v2/plugins/query" "gopkg.in/h2non/gentleman.v2/plugins/url" ) const ( accountExtensionAPIPath = "/auth/realms/master/api/account/realms/:realm" accountExecuteActionsEmail = accountExtensionAPIPath + "/execute-actions-email" + accountSendEmail = accountExtensionAPIPath + "/send-email" accountCredentialsPath = accountExtensionAPIPath + "/credentials" accountPasswordPath = accountCredentialsPath + "/password" accountCredentialsRegistratorsPath = accountCredentialsPath + "/registrators" @@ -80,12 +83,25 @@ func (c *AccountClient) UpdateAccount(accessToken string, realm string, user key return err } -// DeleteAccount delete current user +// DeleteAccount deletes current user func (c *AccountClient) DeleteAccount(accessToken string, realmName string) error { return c.client.delete(accessToken, url.Path(accountExtensionAPIPath), url.Param("realm", realmName), hdrAcceptJSON) } -// ExecuteActionsEmail send an email with required actions to the user +// ExecuteActionsEmail sends an email with required actions to the user func (c *AccountClient) ExecuteActionsEmail(accessToken string, realmName string, actions []string) error { return c.client.put(accessToken, url.Path(accountExecuteActionsEmail), url.Param("realm", realmName), body.JSON(actions)) } + +// SendEmail sends an email +func (c *AccountClient) SendEmail(accessToken, realmName, template, subject string, recipient *string, attributes map[string]string) error { + var plugins []plugin.Plugin + plugins = append(plugins, url.Path(accountSendEmail), url.Param("realm", realmName)) + plugins = append(plugins, query.Add("template", template), query.Add("subject", subject)) + if recipient != nil && len(*recipient) >= 0 { + plugins = append(plugins, query.Add("recipient", *recipient)) + } + plugins = append(plugins, body.JSON(attributes)) + _, err := c.client.post(accessToken, nil, plugins...) + return err +}