Re: [PATCH] http PUT requests
Alexander Malysh <[email protected]> Fri, 12 Jul 2019 15:00:54 +0200
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Message-ID | <[email protected]> |
--Apple-Mail=_5D02D44B-7F18-479D-BAEC-24108F46989B Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Hi, > Am 11.07.2019 um 14:24 schrieb Lamasuta, Franck, Vodafone Automotive = <[email protected]>: >=20 > I thought again about it=E2=80=A6 > I guess you are concerned because the body of all POST or PUT requests = would be parsed. > Of course this is bad! J exactly... > I think we have to check the value of the Content-Type header. > =20 > This is what we get from Micro Ocean: > Content-Type: application/x-www-form-urlencoded >=20 > Would it be ok to test this header before calling parse_cgivars() to = parse the body? > Do you have another idea? This should work. Thanks, Alex > =20 > Regards, > Franck > =20 > =20 > From: devel <[email protected]> On Behalf Of Lamasuta, Franck, = Vodafone Automotive > Sent: jeudi 11 juillet 2019 12:06 > To: Alexander Malysh <[email protected]> > Cc: [email protected] > Subject: RE: [PATCH] http PUT requests > =20 > Hi Alexander, > =20 > This is what http_accept_request() logs (with my patch) when Micro = Ocean submits a DLR: > =20 > 2019-07-10 13:21:05 [5746] [7] DEBUG: HTTP: Got PUT request with = url=3D'/MOcean-Kannel/DLR' and = body=3D'mocean-from=3D33123456789&mocean-to=3DMocean&mocean-dlr-status=3D1= &mocean-msgid=3D0710212043806340&mocean-error-code=3D0' > =20 > As you can see, the query variables are in the body of the request. I = think this is usual for a PUT (and for a POST). > To avoid code duplication, it seemed logical to slightly modify = parse_cgivars() to parse the body. > How would you manage this? > =20 > Regards, > Franck > =20 > =20 > From: Alexander Malysh <[email protected] = <mailto:[email protected]>> On Behalf Of Alexander Malysh > Sent: mardi 9 juillet 2019 08:42 > To: Lamasuta, Franck, Vodafone Automotive = <[email protected] <mailto:[email protected]>> > Cc: [email protected] <mailto:[email protected]> > Subject: Re: [PATCH] http PUT requests > =20 > Hi, > =20 > sorry for delay. Patch would be ok if not this part where you parse = body for post and put request > as cgi vars. this is wrong. Please fix it and resubmit. > =20 > Thanks, > Alexander Malysh > =20 > =20 >=20 > Am 28.06.2019 um 10:58 schrieb Lamasuta, Franck, Vodafone Automotive = <[email protected] <mailto:[email protected]>>: > =20 > Hi list, > =20 > Here is a patch to allow inbound http PUT requests in generic http = connector. > It is required to implement Micro Ocean=E2=80=99s API for Delivery = Reports: https://www.moceanapi.com/docs/#delivery-report = <https://www.moceanapi.com/docs/#delivery-report> > =20 > Regards, > Franck > <http_put.patch> > =20 --Apple-Mail=_5D02D44B-7F18-479D-BAEC-24108F46989B Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 <html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; = charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; = -webkit-nbsp-mode: space; line-break: after-white-space;" = class=3D"">Hi,<br class=3D""><div><br class=3D""><blockquote type=3D"cite"= class=3D""><div class=3D"">Am 11.07.2019 um 14:24 schrieb Lamasuta, = Franck, Vodafone Automotive <<a = href=3D"mailto:[email protected]" = class=3D"">[email protected]</a>>:</div><br = class=3D"Apple-interchange-newline"><div class=3D""><div = class=3D"WordSection1" style=3D"page: WordSection1; caret-color: rgb(0, = 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; = font-variant-caps: normal; font-weight: normal; letter-spacing: normal; = text-align: start; text-indent: 0px; text-transform: none; white-space: = normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; = text-decoration: none;"><div style=3D"margin: 0cm 0cm 0.0001pt; = font-size: 12pt; font-family: "Times New Roman", serif;" = class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D"">I thought again about = it=E2=80=A6<o:p class=3D""></o:p></span></div><div style=3D"margin: 0cm = 0cm 0.0001pt; font-size: 12pt; font-family: "Times New Roman", = serif;" class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D"">I guess you are = concerned because the body of all POST or PUT requests would be = parsed.<o:p class=3D""></o:p></span></div><div style=3D"margin: 0cm 0cm = 0.0001pt; font-size: 12pt; font-family: "Times New Roman", = serif;" class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D"">Of course this is = bad! <span = class=3D"Apple-converted-space"> </span></span><span = style=3D"font-size: 11pt; font-family: Wingdings; color: rgb(31, 73, = 125);" class=3D"">J</span></div></div></div></blockquote><div><br = class=3D""></div><div>exactly...</div><br class=3D""><blockquote = type=3D"cite" class=3D""><div class=3D""><div class=3D"WordSection1" = style=3D"page: WordSection1; caret-color: rgb(0, 0, 0); font-family: = Helvetica; font-size: 12px; font-style: normal; font-variant-caps: = normal; font-weight: normal; letter-spacing: normal; text-align: start; = text-indent: 0px; text-transform: none; white-space: normal; = word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: = none;"><div style=3D"margin: 0cm 0cm 0.0001pt; font-size: 12pt; = font-family: "Times New Roman", serif;" class=3D""><span = style=3D"font-size: 11pt; font-family: Calibri, sans-serif; color: = rgb(31, 73, 125);" class=3D""><o:p class=3D""></o:p></span></div><div = style=3D"margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: = "Times New Roman", serif;" class=3D""><span style=3D"font-size: = 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);" = class=3D"">I think we have to check the value of the Content-Type = header.<o:p class=3D""></o:p></span></div><div style=3D"margin: 0cm 0cm = 0.0001pt; font-size: 12pt; font-family: "Times New Roman", = serif;" class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D""><o:p = class=3D""> </o:p></span></div><div style=3D"margin: 0cm 0cm = 0.0001pt; font-size: 12pt; font-family: "Times New Roman", = serif;" class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D"">This is what we get = from Micro Ocean:<o:p class=3D""></o:p></span></div><div style=3D"margin: = 0cm 0cm 0.0001pt; font-size: 12pt; font-family: "Times New = Roman", serif;" class=3D""><span lang=3D"FR" style=3D"font-size: = 11pt; font-family: Calibri, sans-serif; color: rgb(0, 112, 192);" = class=3D"">Content-Type: application/x-www-form-urlencoded<o:p = class=3D""></o:p></span></div><div style=3D"margin: 0cm 0cm 0.0001pt; = font-size: 12pt; font-family: "Times New Roman", serif;" = class=3D""><span lang=3D"FR" style=3D"font-size: 11pt; font-family: = Calibri, sans-serif; color: rgb(31, 73, 125);" class=3D""><br = class=3D""></span><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D"">Would it be ok to test = this header before calling parse_cgivars() to parse the body?<o:p = class=3D""></o:p></span></div><div style=3D"margin: 0cm 0cm 0.0001pt; = font-size: 12pt; font-family: "Times New Roman", serif;" = class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D"">Do you have another = idea?</span></div></div></div></blockquote><div><br = class=3D""></div><div>This should work.</div><div><br = class=3D""></div><div>Thanks,</div><div>Alex</div><br = class=3D""><blockquote type=3D"cite" class=3D""><div class=3D""><div = class=3D"WordSection1" style=3D"page: WordSection1; caret-color: rgb(0, = 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; = font-variant-caps: normal; font-weight: normal; letter-spacing: normal; = text-align: start; text-indent: 0px; text-transform: none; white-space: = normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; = text-decoration: none;"><div style=3D"margin: 0cm 0cm 0.0001pt; = font-size: 12pt; font-family: "Times New Roman", serif;" = class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D""><o:p = class=3D""></o:p></span></div><div style=3D"margin: 0cm 0cm 0.0001pt; = font-size: 12pt; font-family: "Times New Roman", serif;" = class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D""><o:p = class=3D""> </o:p></span></div><div style=3D"margin: 0cm 0cm = 0.0001pt; font-size: 12pt; font-family: "Times New Roman", = serif;" class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D"">Regards,<o:p = class=3D""></o:p></span></div><div style=3D"margin: 0cm 0cm 0.0001pt; = font-size: 12pt; font-family: "Times New Roman", serif;" = class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D"">Franck<o:p = class=3D""></o:p></span></div><div style=3D"margin: 0cm 0cm 0.0001pt; = font-size: 12pt; font-family: "Times New Roman", serif;" = class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D""><o:p = class=3D""> </o:p></span></div><div style=3D"margin: 0cm 0cm = 0.0001pt; font-size: 12pt; font-family: "Times New Roman", = serif;" class=3D""><o:p class=3D""> </o:p></div><div class=3D""><div = style=3D"border-style: solid none none; border-top-width: 1pt; = border-top-color: rgb(225, 225, 225); padding: 3pt 0cm 0cm;" = class=3D""><div style=3D"margin: 0cm 0cm 0.0001pt; font-size: 12pt; = font-family: "Times New Roman", serif;" class=3D""><b = class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif;" class=3D"">From:</span></b><span style=3D"font-size: 11pt; = font-family: Calibri, sans-serif;" class=3D""><span = class=3D"Apple-converted-space"> </span>devel <<a = href=3D"mailto:[email protected]" = class=3D"">[email protected]</a>><span = class=3D"Apple-converted-space"> </span><b class=3D"">On Behalf = Of<span class=3D"Apple-converted-space"> </span></b>Lamasuta, = Franck, Vodafone Automotive<br class=3D""><b class=3D"">Sent:</b><span = class=3D"Apple-converted-space"> </span>jeudi 11 juillet 2019 = 12:06<br class=3D""><b class=3D"">To:</b><span = class=3D"Apple-converted-space"> </span>Alexander Malysh <<a = href=3D"mailto:[email protected]" = class=3D"">[email protected]</a>><br class=3D""><b = class=3D"">Cc:</b><span class=3D"Apple-converted-space"> </span><a = href=3D"mailto:[email protected]" class=3D"">[email protected]</a><br = class=3D""><b class=3D"">Subject:</b><span = class=3D"Apple-converted-space"> </span>RE: [PATCH] http PUT = requests<o:p class=3D""></o:p></span></div></div></div><div = style=3D"margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: = "Times New Roman", serif;" class=3D""><o:p = class=3D""> </o:p></div><div style=3D"margin: 0cm 0cm 0.0001pt; = font-size: 12pt; font-family: "Times New Roman", serif;" = class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D"">Hi Alexander,<o:p = class=3D""></o:p></span></div><div style=3D"margin: 0cm 0cm 0.0001pt; = font-size: 12pt; font-family: "Times New Roman", serif;" = class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D""><o:p = class=3D""> </o:p></span></div><div style=3D"margin: 0cm 0cm = 0.0001pt; font-size: 12pt; font-family: "Times New Roman", = serif;" class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D"">This is what = http_accept_request() logs (with my patch) when Micro Ocean submits a = DLR:<o:p class=3D""></o:p></span></div><div style=3D"margin: 0cm 0cm = 0.0001pt; font-size: 12pt; font-family: "Times New Roman", = serif;" class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D""><o:p = class=3D""> </o:p></span></div><div style=3D"margin: 0cm 0cm = 0.0001pt; font-size: 12pt; font-family: "Times New Roman", = serif;" class=3D""><span style=3D"font-size: 11pt; font-family: = "Courier New"; color: rgb(0, 112, 192);" class=3D"">2019-07-10 = 13:21:05 [5746] [7] DEBUG: HTTP: Got PUT request with = url=3D'/MOcean-Kannel/DLR' and = body=3D'mocean-from=3D33123456789&mocean-to=3DMocean&mocean-dlr-st= atus=3D1&mocean-msgid=3D0710212043806340&mocean-error-code=3D0'<o:= p class=3D""></o:p></span></div><div style=3D"margin: 0cm 0cm 0.0001pt; = font-size: 12pt; font-family: "Times New Roman", serif;" = class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D""><o:p = class=3D""> </o:p></span></div><div style=3D"margin: 0cm 0cm = 0.0001pt; font-size: 12pt; font-family: "Times New Roman", = serif;" class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D"">As you can see, the = query variables are in the<span = class=3D"Apple-converted-space"> </span><b class=3D"">body</b><span = class=3D"Apple-converted-space"> </span>of the request. I think = this is usual for a PUT (and for a POST).<o:p = class=3D""></o:p></span></div><div style=3D"margin: 0cm 0cm 0.0001pt; = font-size: 12pt; font-family: "Times New Roman", serif;" = class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D"">To avoid code = duplication, it seemed logical to slightly modify parse_cgivars() to = parse the body.<br class=3D"">How would you manage this?<o:p = class=3D""></o:p></span></div><div style=3D"margin: 0cm 0cm 0.0001pt; = font-size: 12pt; font-family: "Times New Roman", serif;" = class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D""><o:p = class=3D""> </o:p></span></div><div style=3D"margin: 0cm 0cm = 0.0001pt; font-size: 12pt; font-family: "Times New Roman", = serif;" class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D"">Regards,<o:p = class=3D""></o:p></span></div><div style=3D"margin: 0cm 0cm 0.0001pt; = font-size: 12pt; font-family: "Times New Roman", serif;" = class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D"">Franck<o:p = class=3D""></o:p></span></div><div style=3D"margin: 0cm 0cm 0.0001pt; = font-size: 12pt; font-family: "Times New Roman", serif;" = class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif; color: rgb(31, 73, 125);" class=3D""><o:p = class=3D""> </o:p></span></div><div style=3D"margin: 0cm 0cm = 0.0001pt; font-size: 12pt; font-family: "Times New Roman", = serif;" class=3D""><o:p class=3D""> </o:p></div><div class=3D""><div = style=3D"border-style: solid none none; border-top-width: 1pt; = border-top-color: rgb(225, 225, 225); padding: 3pt 0cm 0cm;" = class=3D""><div style=3D"margin: 0cm 0cm 0.0001pt; font-size: 12pt; = font-family: "Times New Roman", serif;" class=3D""><b = class=3D""><span style=3D"font-size: 11pt; font-family: Calibri, = sans-serif;" class=3D"">From:</span></b><span style=3D"font-size: 11pt; = font-family: Calibri, sans-serif;" class=3D""><span = class=3D"Apple-converted-space"> </span>Alexander Malysh <<a = href=3D"mailto:[email protected]" style=3D"color: purple; = text-decoration: underline;" class=3D"">[email protected]</a>><span = class=3D"Apple-converted-space"> </span><b class=3D"">On Behalf = Of<span class=3D"Apple-converted-space"> </span></b>Alexander = Malysh<br class=3D""><b class=3D"">Sent:</b><span = class=3D"Apple-converted-space"> </span>mardi 9 juillet 2019 = 08:42<br class=3D""><b class=3D"">To:</b><span = class=3D"Apple-converted-space"> </span>Lamasuta, Franck, Vodafone = Automotive <<a href=3D"mailto:[email protected]" = style=3D"color: purple; text-decoration: underline;" = class=3D"">[email protected]</a>><br class=3D""><b = class=3D"">Cc:</b><span class=3D"Apple-converted-space"> </span><a = href=3D"mailto:[email protected]" style=3D"color: purple; = text-decoration: underline;" class=3D"">[email protected]</a><br = class=3D""><b class=3D"">Subject:</b><span = class=3D"Apple-converted-space"> </span>Re: [PATCH] http PUT = requests<o:p class=3D""></o:p></span></div></div></div><div = style=3D"margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: = "Times New Roman", serif;" class=3D""><o:p = class=3D""> </o:p></div><div style=3D"margin: 0cm 0cm 0.0001pt; = font-size: 12pt; font-family: "Times New Roman", serif;" = class=3D"">Hi,<o:p class=3D""></o:p></div><div class=3D""><div = style=3D"margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: = "Times New Roman", serif;" class=3D""><o:p = class=3D""> </o:p></div></div><div class=3D""><div style=3D"margin: = 0cm 0cm 0.0001pt; font-size: 12pt; font-family: "Times New = Roman", serif;" class=3D"">sorry for delay. Patch would be ok if = not this part where you parse body for post and put request<o:p = class=3D""></o:p></div></div><div class=3D""><div style=3D"margin: 0cm = 0cm 0.0001pt; font-size: 12pt; font-family: "Times New Roman", = serif;" class=3D"">as cgi vars. this is wrong. Please fix it and = resubmit.<o:p class=3D""></o:p></div></div><div class=3D""><div = style=3D"margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: = "Times New Roman", serif;" class=3D""><o:p = class=3D""> </o:p></div></div><div class=3D""><div style=3D"margin: = 0cm 0cm 0.0001pt; font-size: 12pt; font-family: "Times New = Roman", serif;" class=3D"">Thanks,<o:p = class=3D""></o:p></div></div><div class=3D""><div style=3D"margin: 0cm = 0cm 0.0001pt; font-size: 12pt; font-family: "Times New Roman", = serif;" class=3D"">Alexander Malysh<o:p class=3D""></o:p></div></div><div = class=3D""><div style=3D"margin: 0cm 0cm 0.0001pt; font-size: 12pt; = font-family: "Times New Roman", serif;" class=3D""><o:p = class=3D""> </o:p></div><div class=3D""><p class=3D"MsoNormal" = style=3D"margin: 0cm 0cm 12pt; font-size: 12pt; font-family: "Times = New Roman", serif;"><o:p class=3D""> </o:p></p><blockquote = style=3D"margin-top: 5pt; margin-bottom: 5pt;" class=3D""><div = class=3D""><div style=3D"margin: 0cm 0cm 0.0001pt; font-size: 12pt; = font-family: "Times New Roman", serif;" class=3D"">Am = 28.06.2019 um 10:58 schrieb Lamasuta, Franck, Vodafone Automotive <<a = href=3D"mailto:[email protected]" style=3D"color: purple; = text-decoration: underline;" = class=3D"">[email protected]</a>>:<o:p = class=3D""></o:p></div></div><div style=3D"margin: 0cm 0cm 0.0001pt; = font-size: 12pt; font-family: "Times New Roman", serif;" = class=3D""><o:p class=3D""> </o:p></div><div class=3D""><div = class=3D""><div style=3D"margin: 0cm 0cm 0.0001pt; font-size: 12pt; = font-family: "Times New Roman", serif;" class=3D""><span = lang=3D"FR" style=3D"font-size: 11pt; font-family: Calibri, sans-serif;" = class=3D"">Hi list,</span><span style=3D"font-size: 11pt; font-family: = Calibri, sans-serif;" class=3D""><o:p = class=3D""></o:p></span></div></div><div class=3D""><div style=3D"margin: = 0cm 0cm 0.0001pt; font-size: 12pt; font-family: "Times New = Roman", serif;" class=3D""><span lang=3D"FR" style=3D"font-size: = 11pt; font-family: Calibri, sans-serif;" class=3D""> </span><span = style=3D"font-size: 11pt; font-family: Calibri, sans-serif;" = class=3D""><o:p class=3D""></o:p></span></div></div><div class=3D""><div = style=3D"margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: = "Times New Roman", serif;" class=3D""><span style=3D"font-size: = 11pt; font-family: Calibri, sans-serif;" class=3D"">Here is a patch to = allow inbound http PUT requests in generic http connector.<br = class=3D"">It is required to implement Micro Ocean=E2=80=99s API for = Delivery Reports:<span class=3D"apple-converted-space"> </span><a = href=3D"https://www.moceanapi.com/docs/#delivery-report" style=3D"color: = purple; text-decoration: underline;" class=3D""><span style=3D"color: = rgb(149, 79, 114);" = class=3D"">https://www.moceanapi.com/docs/#delivery-report</span></a><o:p = class=3D""></o:p></span></div></div><div class=3D""><div style=3D"margin: = 0cm 0cm 0.0001pt; font-size: 12pt; font-family: "Times New = Roman", serif;" class=3D""><span style=3D"font-size: 11pt; = font-family: Calibri, sans-serif;" class=3D""> <o:p = class=3D""></o:p></span></div></div><div class=3D""><div style=3D"margin: = 0cm 0cm 0.0001pt; font-size: 12pt; font-family: "Times New = Roman", serif;" class=3D""><span style=3D"font-size: 11pt; = font-family: Calibri, sans-serif;" class=3D"">Regards,<o:p = class=3D""></o:p></span></div></div><div class=3D""><div style=3D"margin: = 0cm 0cm 0.0001pt; font-size: 12pt; font-family: "Times New = Roman", serif;" class=3D""><span style=3D"font-size: 11pt; = font-family: Calibri, sans-serif;" class=3D"">Franck<o:p = class=3D""></o:p></span></div></div><div style=3D"margin: 0cm 0cm = 0.0001pt; font-size: 12pt; font-family: "Times New Roman", = serif;" class=3D""><http_put.patch><o:p = class=3D""></o:p></div></div></blockquote></div><div style=3D"margin: = 0cm 0cm 0.0001pt; font-size: 12pt; font-family: "Times New = Roman", serif;" class=3D""><o:p = class=3D""> </o:p></div></div></div><style = class=3D"">ul[class*=3D'mb-extra__public-links'], = ul[class*=3D'mb-note__public-links'], ul[class*=3D'mb-task__public-links']= { display: none !important; }</style></div></blockquote></div><br = class=3D""></body></html>= --Apple-Mail=_5D02D44B-7F18-479D-BAEC-24108F46989B--