-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #90 from Opetushallitus/OY-5034_tyopoydan_emailien…
…_palastelu OY-5034 tyopoydan emailien palastelu
- Loading branch information
Showing
13 changed files
with
282 additions
and
161 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,8 @@ | ||
## Viestinvälityspalvelu kirjasto | ||
|
||
Kirjaston avulla asiakasjärjestelmät voivat käyttää viestinvälityspalvelua java-rajapinnan läpi. | ||
Kirjaston avulla asiakasjärjestelmät voivat käyttää viestinvälityspalvelua java-rajapinnan läpi. Käyttöön tarvitaan | ||
tämä riippuvuus, sekä palvelutunnus jolla on tarvittavat oikeudet viestien lähettämiseksi. Kirjaston transitiiviset | ||
riippuvuudet on pyritty minimoimaan. | ||
|
||
### Käyttö | ||
|
||
|
@@ -9,16 +11,20 @@ Client instanssi luodaan builderilla, esim: | |
``` | ||
ViestinvalitysClient client = ClientBuilder.viestinvalitysClientBuilder() | ||
.withEndpoint(<viestinvälityspalvelun osoite, esim: "https://viestinvalitys.hahtuvaopintopolku.fi">) | ||
.withUsername(<käyttäjätunnus>) | ||
.withUsername(<palvelutunnus>) | ||
.withPassword(<salana>) | ||
.withCasEndpoint(<cas-osoite, esim: https://virkalija.hahtuvaopintopolku.fi/cas>) | ||
.withCallerId(<caller id>) | ||
.build() | ||
``` | ||
|
||
Tämän jälkeen client-instanssilla voi luoda pyyntöjä jotka luovat liitteitä, lähetyksiä, ja viestejä, sekä tarkastelevat näiden tilaa, Esim. seuraavasti: | ||
Tämän jälkeen client-instanssilla voi luoda pyyntöjä jotka luovat liitteitä, lähetyksiä, ja viestejä, sekä tarkastella | ||
näiden tilaa, Esim. seuraavasti: | ||
|
||
Voidaan joko luoda ensin lähetys ja liittää samaan lähetykseen useita viestejä | ||
Voidaan joko luoda ensin lähetys ja liittää samaan lähetykseen useita viestejä. Lähetysten käyttö on tarpeellista esim. | ||
tilanteissa joissa a) haluataan tarkastella useita vastaanottajakohtaisesti kustomoituja viestejä kokonaisuutena, tai | ||
b) viestin kokonaisvastaanottajamäärä ylittää yksittäisen viestin maksimivastaanottajamäärän (ks. lähetysrajapinnan | ||
Viesti-luokka), jolloin viesti täytyy palastella useammaksi viestiksi. | ||
|
||
``` | ||
LuolahetysResponse luoLahetysResponse = viestinvalitysClient.luoLahetys( | ||
|
@@ -33,7 +39,10 @@ ViestinvalitysBuilder.lahetysBuilder() | |
ViestinvalitysBuilder.viestiBuilder() | ||
.withOtsikko("viestin otsikko") | ||
.withHtmlSisalto("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /><title></title></head><body style=\"margin: 0; font-family: 'Open Sans', Arial, sans-serif;\"><H1>Otsikko</h1><p>Viestin sisältö</p><p>Ystävällisin terveisin<br/>Opintopolku</p></body></html>") | ||
.withHtmlSisalto("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" | ||
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html><head><meta http-equiv=\"Content-Type\" | ||
content=\"text/html; charset=UTF-8\" /><title></title></head><body style=\"margin: 0; font-family: 'Open Sans', | ||
Arial, sans-serif;\"><H1>Otsikko</h1><p>Viestin sisältö</p><p>Ystävällisin terveisin<br/>Opintopolku</p></body></html>") | ||
.withKielet("fi") | ||
.withVastaanottajat(ViestinvalitysBuilder.vastaanottajatBuilder() | ||
.withVastaanottaja(Optional.empty(), "[email protected]") | ||
|
@@ -64,6 +73,28 @@ Tai luoda viestejä erillisinä lähetyksinä | |
.withLahettaja(Optional.empty(), "[email protected]") | ||
.build()) | ||
``` | ||
|
||
On suositeltavaa käyttää builder-luokkia lähetysten, viestien jne. luomiseen. Tällöin kaikki pakolliset kentät tulevat | ||
kaikissa tilanteissa täytettyä. | ||
|
||
### Validointi | ||
|
||
Rajapinta pyrkii validoimaan kaikkien pyyntöjen kaikki kentät, ja kaikille kentille on pyritty asettamaan esim. | ||
maksimipituus. Erityisesti tulee huomata että yksittäisellä viestillä on maksimimäärä vastaanottajia, ja tätä | ||
suuremmalle vastaanottajajoukolle suunnatut viestit tulee palastella useammaksi yksittäiseksi viestiksi. Yksittäisten | ||
kenttien rajoitteet on pyritty kuvaamaan kattavasti Swagger-kuvauksessa, joka puolestaan pyrkii perustumaan suoraan | ||
lähdekoodissa olevien vakioihin ylläpidettävyyden varmistamiseksi. | ||
|
||
### Idempotency-avain -toiminnallisuus | ||
|
||
Rajapinta sisältää toiminnallisuuden jonka avulla voidaan varmistua siitä ettei samaa viestiä lähetetä toistuvasti | ||
viestinvälityspalvelun tai asiakasjärjestelmän virheen seurauksena. Viestin mukaan voidaan liittää uniikki | ||
idempotencyKey-avain, joka tallennetaan viestinvälityspalveluun. Mikäli sama asiakasjärjestelmä (ts. cas-identiteetti) | ||
yrittää lähettää uutta viestiä samalla avaimella, palautetaan aikaisemman viestin tiedot. | ||
|
||
HUOMAA että jos lähetettävä viesti on palasteltu useammaksi viestiksi koska vastaanottajien kokonaismäärä ylittää | ||
yksittäisen viestin maksimivastaanottajamäärä, pitää kaikille viesteille luonnollisesti olla oma idempotency-avain! | ||
|
||
### Kirjaston päivitys | ||
|
||
Jos kirjastoa on tarve muuttaa tai päivittää, nosta projektin parent-pomissa oleva revision | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -18,10 +18,10 @@ import scala.jdk.CollectionConverters.* | |
* @param sahkopostiOsoite | ||
*/ | ||
case class LahettajaImpl( | ||
@(Schema @field)(example = "Opintopolku", maxLength = ViestiImpl.VIESTI_NIMI_MAX_PITUUS) | ||
@(Schema @field)(example = "Opintopolku", maxLength = Viesti.VIESTI_NIMI_MAX_PITUUS) | ||
@BeanProperty nimi: Optional[String], | ||
|
||
@(Schema @field)(description="Domainin pitää olla opintopolku.fi", example = "[email protected]", requiredMode=RequiredMode.REQUIRED) | ||
@(Schema @field)(description="Domainin pitää olla opintopolku.fi", example = "[email protected]", requiredMode=RequiredMode.REQUIRED, maxLength = Viesti.VIESTI_OSOITE_MAX_PITUUS) | ||
@BeanProperty sahkopostiOsoite: Optional[String], | ||
) extends Lahettaja { | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.