Commit a65a9fdea6535804b08fcafbc784d7c98346147a
1 parent
165ecd86
data_to_send type has 2 content component (text and html)
Showing
4 changed files
with
20 additions
and
526 deletions
Show diff stats
ds_files/ds_types.anubis
| @@ -123,7 +123,8 @@ public define List(DS_Type_File) calexium_lib_types_description = | @@ -123,7 +123,8 @@ public define List(DS_Type_File) calexium_lib_types_description = | ||
| 123 | component(list, ds_type("Email_Address"), "cc", comment("email sent as copy to that list of recipients")), | 123 | component(list, ds_type("Email_Address"), "cc", comment("email sent as copy to that list of recipients")), |
| 124 | component(list, ds_type("Email_Address"), "bcc", comment("email sent as blank carbon copy to that list of recipients")), | 124 | component(list, ds_type("Email_Address"), "bcc", comment("email sent as blank carbon copy to that list of recipients")), |
| 125 | component(string, "subject", comment("subject of email. Supposed to be UTF8")), | 125 | component(string, "subject", comment("subject of email. Supposed to be UTF8")), |
| 126 | - component(string, "content", comment("content of the email")), | 126 | + component(string, "text_content", comment("content of the email in text format")), |
| 127 | + component(string, "html_content", comment("content of the email in html format")), | ||
| 127 | component(list, ds_type("File_ref"), "attached_files", comment("list of files to attach to this email")), | 128 | component(list, ds_type("File_ref"), "attached_files", comment("list of files to attach to this email")), |
| 128 | component(bool, "send_copy",comment("send copy to sender by bcc (useful when the email is sent by an automat)")), | 129 | component(bool, "send_copy",comment("send copy to sender by bcc (useful when the email is sent by an automat)")), |
| 129 | component(string, "reply_to", comment("reply to !!")) | 130 | component(string, "reply_to", comment("reply to !!")) |
examples/minimal_web_site.anubis deleted
| 1 | - | ||
| 2 | - | ||
| 3 | - *Project* The Anubis Project | ||
| 4 | - | ||
| 5 | - *Title* A minimal web site. | ||
| 6 | - | ||
| 7 | - *Copyright* Copyright © David RENÉ | ||
| 8 | - | ||
| 9 | - *Released* | ||
| 10 | - | ||
| 11 | - *Author* David RENÉ | ||
| 12 | - | ||
| 13 | - *Overview* | ||
| 14 | - | ||
| 15 | - This file is just an example which may help to start making a web site with | ||
| 16 | - Anubis Calexium Library | ||
| 17 | - It was based on the example for making a minimal web site made by Alain Prouté and located | ||
| 18 | - in examples/network folder in standard library example | ||
| 19 | - | ||
| 20 | - This example is absolutely minimalist and manage only page. | ||
| 21 | - | ||
| 22 | - | ||
| 23 | -read tools/basis.anubis // required for 'make_directory' and . | ||
| 24 | -read system/convert.anubis | ||
| 25 | -read web/CXM_common.anubis // required for type 'Web_arg' | ||
| 26 | -read web/CXM_multihost_http_server.anubis // required for type 'HTTP_Info' | ||
| 27 | -read web/CXM_making_a_web_site.anubis | ||
| 28 | -read web/mime.anubis // required for list of known MIME types | ||
| 29 | - | ||
| 30 | - | ||
| 31 | - | ||
| 32 | - | ||
| 33 | - *** Server directory. | ||
| 34 | - | ||
| 35 | - A directory for putting files for all web sites. There will be one subdirectory per web | ||
| 36 | - site. | ||
| 37 | - | ||
| 38 | -define String web_sites_directory = my_anubis_directory+"/web_sites". | ||
| 39 | - | ||
| 40 | - | ||
| 41 | - *** Example site 1. | ||
| 42 | - | ||
| 43 | - Computing the pages of site 1. There is just one page. The type '$State' (see | ||
| 44 | - 'web/CXM_making_a_web_site.anubis') has been chosen as 'One'. If this type were more | ||
| 45 | - elaborate, the function 'compute_page_1' could compute several different pages (for | ||
| 46 | - example, one per alternative of this type). Anyway, there is only one such function for | ||
| 47 | - each web site. | ||
| 48 | - | ||
| 49 | -define HTTP_Answer | ||
| 50 | - compute_page_1 | ||
| 51 | - ( | ||
| 52 | - One state | ||
| 53 | - )= | ||
| 54 | - html_page | ||
| 55 | - ( | ||
| 56 | - "Example Site 1", // title of web site | ||
| 57 | - [], // list of 'META' tags (empty for this site) | ||
| 58 | - body // body of page | ||
| 59 | - ( | ||
| 60 | - // list of body options | ||
| 61 | - [ | ||
| 62 | - background_color(rgb(255,200,200)) | ||
| 63 | - // add more body options here | ||
| 64 | - ], | ||
| 65 | - | ||
| 66 | - // content of page | ||
| 67 | - center(text([size(14)],"This is the 'Example 1' web site.")) | ||
| 68 | - ) | ||
| 69 | - ) | ||
| 70 | -. | ||
| 71 | - | ||
| 72 | - | ||
| 73 | - | ||
| 74 | - Making the description of web site 1. In this description, several elements are the | ||
| 75 | - bare minimum. There is no action at all, no data base, almost nothing. See | ||
| 76 | - 'web/making_a_web_site.anubis' for the declaration of the function | ||
| 77 | - 'make_web_site_description'. | ||
| 78 | - | ||
| 79 | -define Web_Site | ||
| 80 | - example_site_1 | ||
| 81 | - = | ||
| 82 | - // make the directory for web site 1 | ||
| 83 | - // (subdirectories of it will be created automatically by the HTTP server) | ||
| 84 | - forget((String)make_directory(web_sites_directory+"/example_site_1")); | ||
| 85 | - | ||
| 86 | - // make a list of all possible 'host names' for web site 1: | ||
| 87 | - with addresses = (List(String)) | ||
| 88 | - [ | ||
| 89 | - "example-site-1", | ||
| 90 | - "127.0.0.1", | ||
| 91 | - "192.168.0.1" | ||
| 92 | - // add more adresses here | ||
| 93 | - ], | ||
| 94 | - | ||
| 95 | - // now make the description of the web site | ||
| 96 | - make_web_site_description( | ||
| 97 | - | ||
| 98 | - //this is the unique ID of the web site. This ID will be use for prepend the cookies | ||
| 99 | - //names belonging to that web site | ||
| 100 | - "example", | ||
| 101 | - | ||
| 102 | - // the list of addresses defined above | ||
| 103 | - addresses, | ||
| 104 | - | ||
| 105 | - // directory for the files of web site 1 | ||
| 106 | - web_sites_directory+"/example_site_1", | ||
| 107 | - | ||
| 108 | - // directory for the states of that web_site | ||
| 109 | - web_sites_directory+"/example_site_1/states", | ||
| 110 | - | ||
| 111 | - // initializing function | ||
| 112 | - (One u) |-> u, // nothing to initialize for web site 1 | ||
| 113 | - | ||
| 114 | - // the function producing the initial state | ||
| 115 | - (HTTP_Info info, | ||
| 116 | - List(Web_arg) lwa, | ||
| 117 | - Bool is_https) |-> unique, // there is ony one possible state for web site 1 | ||
| 118 | - | ||
| 119 | - // the function for handling expired tickets | ||
| 120 | - // (tickets are kept on the server's disk and represent states. They are used for | ||
| 121 | - // passing session informations from pages to pages. See | ||
| 122 | - // 'web/CXM_making_a_web_site.anubis' for detailed explanations.) | ||
| 123 | - (One expired, | ||
| 124 | - Maybe(String) mb_action_name, | ||
| 125 | - HTTP_Info info, | ||
| 126 | - List(Web_arg) lwa, | ||
| 127 | - Bool is_https) |-> unique, // keep the same state | ||
| 128 | - | ||
| 129 | - // the function for handling lost tickets | ||
| 130 | - (Maybe(String) mb_action_name, | ||
| 131 | - HTTP_Info info, | ||
| 132 | - List(Web_arg) lwa, | ||
| 133 | - Bool is_https) |-> unique, // restart with default state | ||
| 134 | - | ||
| 135 | - // list of all actions | ||
| 136 | - [ ], // no action for web site 1 | ||
| 137 | - | ||
| 138 | - // the function for computing the pages of web site 1 (it is defined above) | ||
| 139 | - compute_page_1, | ||
| 140 | - | ||
| 141 | - // the function for producing additional HTTP headers | ||
| 142 | - (One u) |-> [], | ||
| 143 | - | ||
| 144 | - // timeout for tickets (in seconds) | ||
| 145 | - 3600, // does'nt matter since only one state | ||
| 146 | - | ||
| 147 | - // list of redirections (one for each address) | ||
| 148 | - // (see 'web/CXM_common.anubis' for the type 'Redirection') | ||
| 149 | - redirection_list(map((String address) |-> redirect("/",address,"/site1.awp"), addresses)), | ||
| 150 | - | ||
| 151 | - // character encoding for web site 1 | ||
| 152 | - "UTF-8", | ||
| 153 | - | ||
| 154 | - // list of URI extensions producing a console/journal message | ||
| 155 | - [ | ||
| 156 | - ".awp", // pages computed by this program | ||
| 157 | - ".jpg", // images, etc... | ||
| 158 | - ".gif", | ||
| 159 | - ".png" | ||
| 160 | - // add more extensions here (they must be known; see 'web/mime.anubis') | ||
| 161 | - ], | ||
| 162 | - | ||
| 163 | - // list of HTTP headers which are traced in the console/journal messages | ||
| 164 | - [ | ||
| 165 | - "host", | ||
| 166 | - "user-agent" | ||
| 167 | - // add more HTTP headers here | ||
| 168 | - ], | ||
| 169 | - | ||
| 170 | - // secret string (used by 'private download') | ||
| 171 | - "HUD76GRD56FD7GFDS4RT", // for a real site, please choose another one | ||
| 172 | - // it must remain secret | ||
| 173 | - | ||
| 174 | - // list of known MIME types (taken from 'web/mime.anubis') | ||
| 175 | - known_mime_types, | ||
| 176 | - | ||
| 177 | - // action to be performed before a file is sent | ||
| 178 | - // (for example, this may be used for counting downloads) | ||
| 179 | - (String action_name, | ||
| 180 | - List(Web_arg) lwa) |-> unique // no action at all | ||
| 181 | - ) | ||
| 182 | -. | ||
| 183 | - | ||
| 184 | - | ||
| 185 | - | ||
| 186 | - | ||
| 187 | - *** Example site 2. | ||
| 188 | - | ||
| 189 | - Imagine another web site here... | ||
| 190 | - | ||
| 191 | - | ||
| 192 | - | ||
| 193 | - | ||
| 194 | - | ||
| 195 | - *** Starting all our web sites together. | ||
| 196 | - | ||
| 197 | -global define One | ||
| 198 | - minimal_web_site | ||
| 199 | - ( | ||
| 200 | - List(String) args | ||
| 201 | - ) = | ||
| 202 | - // make the directory for all web sites (if needed) | ||
| 203 | - forget((String) make_directory(web_sites_directory)); | ||
| 204 | - | ||
| 205 | - with http_port = (Word32)8000, | ||
| 206 | - https_port = (Word32)4430, | ||
| 207 | - // create a variable for handling the shutdown of our web sites | ||
| 208 | - with shutdown_required = var(false), | ||
| 209 | - with is_shutdown = (One u) |-> *shutdown_required, | ||
| 210 | - | ||
| 211 | - // start all web sites | ||
| 212 | - if start_web_sites( | ||
| 213 | - 0, // listen on all IP addresses | ||
| 214 | - http_port, // port for HTTP | ||
| 215 | - https_port, // port for HTTPS | ||
| 216 | - "www.georges.example.com", // common name of SSL certificate | ||
| 217 | - [ | ||
| 218 | - example_site_1 | ||
| 219 | - // add other web sites here | ||
| 220 | - ], | ||
| 221 | - is_shutdown) is | ||
| 222 | - { | ||
| 223 | - cannot_bind_to_port(n) then println("Cannot bind to port: "+n), | ||
| 224 | - cannot_bind_to_port(n,m) then println("Cannot bind to ports: "+n+", "+m), | ||
| 225 | - ok(s1,s2) then println("Servers started on ports "+http_port+" (HTTP) and "+https_port+" (HTTPS).") | ||
| 226 | - } | ||
| 227 | -. | ||
| 228 | - | ||
| 229 | - | ||
| 230 | - |
examples/minimal_web_site_vc.anubis deleted
| 1 | - | ||
| 2 | - | ||
| 3 | - *Project* The Anubis Project | ||
| 4 | - | ||
| 5 | - *Title* A minimal web site. | ||
| 6 | - | ||
| 7 | - *Copyright* Copyright © David RENÉ. | ||
| 8 | - | ||
| 9 | - *Released* | ||
| 10 | - | ||
| 11 | - *Author* David RENÉ | ||
| 12 | - | ||
| 13 | - *Overview* | ||
| 14 | - | ||
| 15 | - This file is just an example which may help to start making a web site with | ||
| 16 | - Anubis Calexium Library | ||
| 17 | - It was based on the example for making a minimal web site made by Alain Prouté and located | ||
| 18 | - in examples/network folder in standard library example | ||
| 19 | - | ||
| 20 | - This example is absolutely minimalist and manage only page. | ||
| 21 | - | ||
| 22 | - | ||
| 23 | -read tools/basis.anubis // required for 'make_directory' and . | ||
| 24 | -read system/convert.anubis | ||
| 25 | -read calexium_lib/web/CXM_common.anubis // required for type 'Web_arg' | ||
| 26 | -read calexium_lib/web/CXM_multihost_http_server.anubis // required for type 'HTTP_Info' | ||
| 27 | -read calexium_lib/web/CXM_controller.anubis | ||
| 28 | -read calexium_lib/web/CXM_making_a_web_site.anubis | ||
| 29 | -read web/mime.anubis // required for list of known MIME types | ||
| 30 | -read calexium_lib/web/CXM_web_arg_utils.anubis | ||
| 31 | -read calexium_lib/web/CXM_form.anubis | ||
| 32 | -read calexium_lib/web/jQuery/CXM_jquery_button.anubis | ||
| 33 | - | ||
| 34 | - *** Server directory. | ||
| 35 | - | ||
| 36 | - A directory for putting files for all web sites. There will be one subdirectory per web | ||
| 37 | - site. | ||
| 38 | - | ||
| 39 | -define String web_sites_directory = my_anubis_directory+"/web_sites". | ||
| 40 | - | ||
| 41 | - | ||
| 42 | -define HTML_Partial_Content | ||
| 43 | - create_login_form | ||
| 44 | - = | ||
| 45 | - | ||
| 46 | - partial_content( | ||
| 47 | - [css(css_file("css/login.css"))], | ||
| 48 | - div([id("login")], | ||
| 49 | - sequence([ | ||
| 50 | - //BODY | ||
| 51 | - div([id("login_body")], | ||
| 52 | - cxm_form( "login_form", [], "do_login", [], [], | ||
| 53 | - [ | ||
| 54 | - input (label(("LOGIN_NAME"), no_help), wan("login_name"), init(""), narrow, non_mandatory), | ||
| 55 | - password_input(label(("PASSWORD"), no_help), wan("password"), init(""), narrow, non_mandatory), | ||
| 56 | - partial(img_submit_button(("CONNECTION"), "login_form" )) | ||
| 57 | - ]) | ||
| 58 | - ), | ||
| 59 | - ]) | ||
| 60 | - )). | ||
| 61 | - | ||
| 62 | -define HTTP_Answer | ||
| 63 | - go_login | ||
| 64 | - ( | ||
| 65 | - One state | ||
| 66 | - )= | ||
| 67 | - html_page | ||
| 68 | - ( | ||
| 69 | - "Example Site 1", // title of web site | ||
| 70 | - [], // list of 'META' tags (empty for this site) | ||
| 71 | - body // body of page | ||
| 72 | - ( | ||
| 73 | - // list of body options | ||
| 74 | - [ | ||
| 75 | - background_color(rgb(255,200,200)) | ||
| 76 | - // add more body options here | ||
| 77 | - ], | ||
| 78 | - | ||
| 79 | - // content of page | ||
| 80 | - partial(create_login_form) | ||
| 81 | - ) | ||
| 82 | - ) | ||
| 83 | -. | ||
| 84 | - | ||
| 85 | -define HTTP_Answer | ||
| 86 | - compute_page_1 | ||
| 87 | - ( | ||
| 88 | - One state | ||
| 89 | - )= | ||
| 90 | - html_page | ||
| 91 | - ( | ||
| 92 | - "Example Site 1", // title of web site | ||
| 93 | - [], // list of 'META' tags (empty for this site) | ||
| 94 | - body // body of page | ||
| 95 | - ( | ||
| 96 | - // list of body options | ||
| 97 | - [ | ||
| 98 | - background_color(rgb(255,200,200)) | ||
| 99 | - // add more body options here | ||
| 100 | - ], | ||
| 101 | - | ||
| 102 | - // content of page | ||
| 103 | - center(text([size(14)],"This is the 'Example 1' web site.")) | ||
| 104 | - ) | ||
| 105 | - ) | ||
| 106 | -. | ||
| 107 | - | ||
| 108 | -define (One, HTTP_Answer) | ||
| 109 | - root_controller | ||
| 110 | - ( | ||
| 111 | - HTTP_Info http_info, | ||
| 112 | - List(Web_arg) lwa, | ||
| 113 | - Bool is_https, | ||
| 114 | - One toto | ||
| 115 | - )= | ||
| 116 | - | ||
| 117 | - with action = get_String(lwa, "action", "go_login"), | ||
| 118 | - if action = "go_login" then | ||
| 119 | - (unique, go_login(unique)) | ||
| 120 | - else | ||
| 121 | - (unique, compute_page_1(unique)). | ||
| 122 | - | ||
| 123 | - | ||
| 124 | -define WEB_Controller(One) | ||
| 125 | - make_root_controller | ||
| 126 | - = | ||
| 127 | - web_controller("root", root_controller) | ||
| 128 | -. | ||
| 129 | - | ||
| 130 | - Making the description of web site 1. In this description, several elements are the | ||
| 131 | - bare minimum. There is no action at all, no data base, almost nothing. See | ||
| 132 | - 'web/making_a_web_site.anubis' for the declaration of the function | ||
| 133 | - 'make_web_site_description'. | ||
| 134 | - | ||
| 135 | -define Web_Site | ||
| 136 | - example_site_1 | ||
| 137 | - = | ||
| 138 | - // make the directory for web site 1 | ||
| 139 | - // (subdirectories of it will be created automatically by the HTTP server) | ||
| 140 | - forget((String)make_directory(web_sites_directory+"/example_site_1")); | ||
| 141 | - | ||
| 142 | - // make a list of all possible 'host names' for web site 1: | ||
| 143 | - with addresses = (List(String)) | ||
| 144 | - [ | ||
| 145 | - "example-site-1", | ||
| 146 | - "127.0.0.1", | ||
| 147 | - "192.168.0.1" | ||
| 148 | - // add more adresses here | ||
| 149 | - ], | ||
| 150 | - | ||
| 151 | - // now make the description of the web site | ||
| 152 | - make_web_site_controller_description( | ||
| 153 | - | ||
| 154 | - //this is the unique ID of the web site. This ID will be use for prepend the cookies | ||
| 155 | - //names belonging to that web site | ||
| 156 | - "example", | ||
| 157 | - | ||
| 158 | - // the list of addresses defined above | ||
| 159 | - addresses, | ||
| 160 | - | ||
| 161 | - // directory for the files of web site 1 | ||
| 162 | - web_sites_directory+"/example_site_1", | ||
| 163 | - | ||
| 164 | - // directory for the states of that web_site | ||
| 165 | - web_sites_directory+"/example_site_1/states", | ||
| 166 | - | ||
| 167 | - // initializing function | ||
| 168 | - (One u) |-> u, // nothing to initialize for web site 1 | ||
| 169 | - | ||
| 170 | - // the function producing the initial state | ||
| 171 | - (HTTP_Info info, | ||
| 172 | - List(Web_arg) lwa, | ||
| 173 | - Bool is_https) |-> unique, // there is ony one possible state for web site 1 | ||
| 174 | - | ||
| 175 | - // the function for handling expired tickets | ||
| 176 | - // (tickets are kept on the server's disk and represent states. They are used for | ||
| 177 | - // passing session informations from pages to pages. See | ||
| 178 | - // 'web/CXM_making_a_web_site.anubis' for detailed explanations.) | ||
| 179 | - (One expired, | ||
| 180 | - Maybe(String) mb_action_name, | ||
| 181 | - HTTP_Info info, | ||
| 182 | - List(Web_arg) lwa, | ||
| 183 | - Bool is_https) |-> unique, // keep the same state | ||
| 184 | - | ||
| 185 | - // the function for handling lost tickets | ||
| 186 | - (Maybe(String) mb_action_name, | ||
| 187 | - HTTP_Info info, | ||
| 188 | - List(Web_arg) lwa, | ||
| 189 | - Bool is_https) |-> unique, // restart with default state | ||
| 190 | - | ||
| 191 | - var([make_root_controller]), | ||
| 192 | - | ||
| 193 | - // the function for producing additional HTTP headers | ||
| 194 | - (One u) |-> [], | ||
| 195 | - | ||
| 196 | - // timeout for tickets (in seconds) | ||
| 197 | - 3600, // does'nt matter since only one state | ||
| 198 | - | ||
| 199 | - // list of redirections (one for each address) | ||
| 200 | - // (see 'web/CXM_common.anubis' for the type 'Redirection') | ||
| 201 | - redirection_list(map((String address) |-> redirect("/",address,"/index.awp"), addresses)), | ||
| 202 | - | ||
| 203 | - // character encoding for web site 1 | ||
| 204 | - "UTF-8", | ||
| 205 | - | ||
| 206 | - // list of URI extensions producing a console/journal message | ||
| 207 | - [ | ||
| 208 | - ".awp", // pages computed by this program | ||
| 209 | - ".jpg", // images, etc... | ||
| 210 | - ".gif", | ||
| 211 | - ".png" | ||
| 212 | - // add more extensions here (they must be known; see 'web/mime.anubis') | ||
| 213 | - ], | ||
| 214 | - | ||
| 215 | - // list of HTTP headers which are traced in the console/journal messages | ||
| 216 | - [ | ||
| 217 | - "host", | ||
| 218 | - "user-agent" | ||
| 219 | - // add more HTTP headers here | ||
| 220 | - ], | ||
| 221 | - | ||
| 222 | - // secret string (used by 'private download') | ||
| 223 | - "HUD76GRD56FD7GFDS4RT", // for a real site, please choose another one | ||
| 224 | - // it must remain secret | ||
| 225 | - | ||
| 226 | - // list of known MIME types (taken from 'web/mime.anubis') | ||
| 227 | - known_mime_types, | ||
| 228 | - | ||
| 229 | - // action to be performed before a file is sent | ||
| 230 | - // (for example, this may be used for counting downloads) | ||
| 231 | - (String action_name, | ||
| 232 | - List(Web_arg) lwa) |-> unique // no action at all | ||
| 233 | - ) | ||
| 234 | -. | ||
| 235 | - | ||
| 236 | - | ||
| 237 | - | ||
| 238 | - | ||
| 239 | - *** Example site 2. | ||
| 240 | - | ||
| 241 | - Imagine another web site here... | ||
| 242 | - | ||
| 243 | - | ||
| 244 | - | ||
| 245 | - | ||
| 246 | - | ||
| 247 | - *** Starting all our web sites together. | ||
| 248 | - | ||
| 249 | -global define One | ||
| 250 | - minimal_web_site_vc | ||
| 251 | - ( | ||
| 252 | - List(String) args | ||
| 253 | - ) = | ||
| 254 | - // make the directory for all web sites (if needed) | ||
| 255 | - forget((String) make_directory(web_sites_directory)); | ||
| 256 | - | ||
| 257 | - with http_port = (Word32)8000, | ||
| 258 | - https_port = (Word32)4430, | ||
| 259 | - // create a variable for handling the shutdown of our web sites | ||
| 260 | - with shutdown_required = var(false), | ||
| 261 | - with is_shutdown = (One u) |-> *shutdown_required, | ||
| 262 | - | ||
| 263 | - // start all web sites | ||
| 264 | - if start_web_sites( | ||
| 265 | - 0, // listen on all IP addresses | ||
| 266 | - http_port, // port for HTTP | ||
| 267 | - https_port, // port for HTTPS | ||
| 268 | - "www.georges.example.com", // common name of SSL certificate | ||
| 269 | - [ | ||
| 270 | - example_site_1 | ||
| 271 | - // add other web sites here | ||
| 272 | - ], | ||
| 273 | - is_shutdown) is | ||
| 274 | - { | ||
| 275 | - cannot_bind_to_port(n) then println("Cannot bind to port: "+n), | ||
| 276 | - cannot_bind_to_port(n,m) then println("Cannot bind to ports: "+n+", "+m), | ||
| 277 | - ok(s1,s2) then println("Servers started on ports "+http_port+" (HTTP) and "+https_port+" (HTTPS).") | ||
| 278 | - } | ||
| 279 | -. | ||
| 280 | - | ||
| 281 | - | ||
| 282 | - |
mail/types/generated/email_to_send.anubis
| 1 | -/* | 1 | +/* |
| 2 | * Created by 伝作 (Densaku). | 2 | * Created by 伝作 (Densaku). |
| 3 | * Types & Messages generator written by フランスのトトロ aka (David RENÉ) | 3 | * Types & Messages generator written by フランスのトトロ aka (David RENÉ) |
| 4 | - * Date: 2019-05-17 | ||
| 5 | - * Time: 19:05:20 | 4 | + * Date: 2020-04-01 |
| 5 | + * Time: 09:43:06 | ||
| 6 | * | 6 | * |
| 7 | */ | 7 | */ |
| 8 | 8 | ||
| @@ -10,8 +10,8 @@ transmit system/muscle.anubis | @@ -10,8 +10,8 @@ transmit system/muscle.anubis | ||
| 10 | transmit system/convert.anubis | 10 | transmit system/convert.anubis |
| 11 | transmit tools/basis.anubis | 11 | transmit tools/basis.anubis |
| 12 | 12 | ||
| 13 | -transmit calexium_lib/types/generated/file_ref.anubis | ||
| 14 | -transmit calexium_lib/mail/types/generated/email_address.anubis | 13 | +transmit types/generated/file_ref.anubis |
| 14 | +transmit types/generated/email_address.anubis | ||
| 15 | 15 | ||
| 16 | 16 | ||
| 17 | 17 | ||
| @@ -22,7 +22,8 @@ public type Email_to_send: | @@ -22,7 +22,8 @@ public type Email_to_send: | ||
| 22 | List(Email_Address) cc, //email sent as copy to that list of recipients | 22 | List(Email_Address) cc, //email sent as copy to that list of recipients |
| 23 | List(Email_Address) bcc, //email sent as blank carbon copy to that list of recipients | 23 | List(Email_Address) bcc, //email sent as blank carbon copy to that list of recipients |
| 24 | String subject, //subject of email. Supposed to be UTF8 | 24 | String subject, //subject of email. Supposed to be UTF8 |
| 25 | - String content, //content of the email | 25 | + String text_content, //content of the email in text format |
| 26 | + String html_content, //content of the email in html format | ||
| 26 | List(File_ref) attached_files, //list of files to attach to this email | 27 | List(File_ref) attached_files, //list of files to attach to this email |
| 27 | Bool send_copy, //send copy to sender by bcc (useful when the email is sent by an automat) | 28 | Bool send_copy, //send copy to sender by bcc (useful when the email is sent by an automat) |
| 28 | String reply_to //reply to !! | 29 | String reply_to //reply to !! |
| @@ -43,7 +44,7 @@ public define Message | @@ -43,7 +44,7 @@ public define Message | ||
| 43 | if _email_to_send is | 44 | if _email_to_send is |
| 44 | { | 45 | { |
| 45 | //Alternative data_to_send | 46 | //Alternative data_to_send |
| 46 | - data_to_send(_from, __to, __cc, __bcc, _subject, _content, __attached_files, _send_copy, _reply_to) then | 47 | + data_to_send(_from, __to, __cc, __bcc, _subject, _text_content, _html_content, __attached_files, _send_copy, _reply_to) then |
| 47 | forget(add_string(_email_to_send_message, "__TYPE_ALT__", "data_to_send")); | 48 | forget(add_string(_email_to_send_message, "__TYPE_ALT__", "data_to_send")); |
| 48 | // [type = Email_Address] data_to_send.from | 49 | // [type = Email_Address] data_to_send.from |
| 49 | forget(add_message(_email_to_send_message, "from", to_Message(_from))); | 50 | forget(add_message(_email_to_send_message, "from", to_Message(_from))); |
| @@ -55,8 +56,10 @@ public define Message | @@ -55,8 +56,10 @@ public define Message | ||
| 55 | map_forget((Email_Address _bcc) |-> add_message(_email_to_send_message, "bcc", to_Message(_bcc)), __bcc); | 56 | map_forget((Email_Address _bcc) |-> add_message(_email_to_send_message, "bcc", to_Message(_bcc)), __bcc); |
| 56 | // [type = String] data_to_send.subject | 57 | // [type = String] data_to_send.subject |
| 57 | forget(add_string(_email_to_send_message, "subject", _subject)); | 58 | forget(add_string(_email_to_send_message, "subject", _subject)); |
| 58 | - // [type = String] data_to_send.content | ||
| 59 | - forget(add_string(_email_to_send_message, "content", _content)); | 59 | + // [type = String] data_to_send.text_content |
| 60 | + forget(add_string(_email_to_send_message, "text_content", _text_content)); | ||
| 61 | + // [type = String] data_to_send.html_content | ||
| 62 | + forget(add_string(_email_to_send_message, "html_content", _html_content)); | ||
| 60 | // [type = List(File_ref)] data_to_send.attached_files | 63 | // [type = List(File_ref)] data_to_send.attached_files |
| 61 | map_forget((File_ref _attached_files) |-> add_message(_email_to_send_message, "attached_files", to_Message(_attached_files)), __attached_files); | 64 | map_forget((File_ref _attached_files) |-> add_message(_email_to_send_message, "attached_files", to_Message(_attached_files)), __attached_files); |
| 62 | // [type = Bool] data_to_send.send_copy | 65 | // [type = Bool] data_to_send.send_copy |
| @@ -92,8 +95,10 @@ public define Maybe(Email_to_send) | @@ -92,8 +95,10 @@ public define Maybe(Email_to_send) | ||
| 92 | if mb__bcc_ is {failure then failure, success(_bcc_) then | 95 | if mb__bcc_ is {failure then failure, success(_bcc_) then |
| 93 | // [type = String] data_to_send.subject | 96 | // [type = String] data_to_send.subject |
| 94 | if find_string(_email_to_send_message, "subject") is {failure then failure, success(_subject_) then | 97 | if find_string(_email_to_send_message, "subject") is {failure then failure, success(_subject_) then |
| 95 | - // [type = String] data_to_send.content | ||
| 96 | - if find_string(_email_to_send_message, "content") is {failure then failure, success(_content_) then | 98 | + // [type = String] data_to_send.text_content |
| 99 | + if find_string(_email_to_send_message, "text_content") is {failure then failure, success(_text_content_) then | ||
| 100 | + // [type = String] data_to_send.html_content | ||
| 101 | + if find_string(_email_to_send_message, "html_content") is {failure then failure, success(_html_content_) then | ||
| 97 | // [type = List(File_ref)] data_to_send.attached_files | 102 | // [type = List(File_ref)] data_to_send.attached_files |
| 98 | with mb__attached_files_ = map_escape(( Message msg ) |-> (Maybe(File_ref)) from_Message(msg), find_messages(_email_to_send_message, "attached_files")), | 103 | with mb__attached_files_ = map_escape(( Message msg ) |-> (Maybe(File_ref)) from_Message(msg), find_messages(_email_to_send_message, "attached_files")), |
| 99 | if mb__attached_files_ is {failure then failure, success(_attached_files_) then | 104 | if mb__attached_files_ is {failure then failure, success(_attached_files_) then |
| @@ -102,8 +107,8 @@ public define Maybe(Email_to_send) | @@ -102,8 +107,8 @@ public define Maybe(Email_to_send) | ||
| 102 | // [type = String] data_to_send.reply_to | 107 | // [type = String] data_to_send.reply_to |
| 103 | if find_string(_email_to_send_message, "reply_to") is {failure then failure, success(_reply_to_) then | 108 | if find_string(_email_to_send_message, "reply_to") is {failure then failure, success(_reply_to_) then |
| 104 | 109 | ||
| 105 | - success(data_to_send(_from_, _to_, _cc_, _bcc_, _subject_, _content_, _attached_files_, _send_copy_, _reply_to_)) | ||
| 106 | - }}}}}}}}}} | 110 | + success(data_to_send(_from_, _to_, _cc_, _bcc_, _subject_, _text_content_, _html_content_, _attached_files_, _send_copy_, _reply_to_)) |
| 111 | + }}}}}}}}}}} | ||
| 107 | else | 112 | else |
| 108 | failure //No valid Alternative found ! | 113 | failure //No valid Alternative found ! |
| 109 | else | 114 | else |