From 3d7462a0e783444ce8282e1d0e5f0b08463125d0 Mon Sep 17 00:00:00 2001 From: Gaurav Pandey Date: Thu, 22 Oct 2020 00:26:33 +0530 Subject: [PATCH] integration: Add jotform integration. Fixes #16554 --- .../integrations/bot_avatars/jotform.png | Bin 0 -> 4664 bytes static/images/integrations/jotform/001.png | Bin 0 -> 42998 bytes static/images/integrations/logos/jotform.svg | Bin 0 -> 1947 bytes zerver/lib/integrations.py | 2 ++ zerver/webhooks/jotform/__init__.py | 0 zerver/webhooks/jotform/doc.md | 17 ++++++++++ .../webhooks/jotform/fixtures/response.json | 11 +++++++ zerver/webhooks/jotform/tests.py | 23 +++++++++++++ zerver/webhooks/jotform/view.py | 31 ++++++++++++++++++ 9 files changed, 84 insertions(+) create mode 100644 static/images/integrations/bot_avatars/jotform.png create mode 100644 static/images/integrations/jotform/001.png create mode 100755 static/images/integrations/logos/jotform.svg create mode 100644 zerver/webhooks/jotform/__init__.py create mode 100644 zerver/webhooks/jotform/doc.md create mode 100644 zerver/webhooks/jotform/fixtures/response.json create mode 100644 zerver/webhooks/jotform/tests.py create mode 100644 zerver/webhooks/jotform/view.py diff --git a/static/images/integrations/bot_avatars/jotform.png b/static/images/integrations/bot_avatars/jotform.png new file mode 100644 index 0000000000000000000000000000000000000000..155ec5dead124742e5105a5079a9bf2b745651e7 GIT binary patch literal 4664 zcmV-8636X{P)CRPHa2z)HU@)@fdtI6 zDFvmbq=l-jfa11Ns-%CkRonbQDQZQ9Dy6TaO&X#qQA--2ASi+mpsfl`ic(&M013u` zuYLEuJ2U6kKjyKsyR*Bq?{$)|w0HNOIdjf$=exi2dz>?86eEt@qkp(tmC`quHETz2|1<5MgCV&&Dp^_`vx-vf*UAtJH`_%v{1;cLIL2_x6?9KCQ9$)`iL|Jreb zvK4$RIWuQ0S+(iA$u(Pkf9;{)cqF{k{XuM49gE0v;4pA2aK2rtp_G9JT2Xa=u{CJ` zB}*ET0Z=^gLA-e4gY!3R-uJMG{0HzA;6bI-N1;0CFgwZfhH6t6!VzL>As>Q}srd`)%0vXMbzDRa1K-PJG7l^)EKG&!xC``^5D~c!cm?<@ zt?X4P1KMcasAYmt4ApCqpTBgt$0pn&x*inarm`3DX98Mu>>S z9b55Fz)aicXWkD}3n_&oByVUe-Fm#5+_X2a+_GAFag)GTGnvc-A~F_As1WE0AtG`* z@Eo?SXnTCs3vY)yOG*W3{>$}{E{8B4z|6MGf@KQVj{@$><#Nwvv)R)^b=U%36CxrT zfT!`r6Yau$`CH-oDrQ5s8ODAjXHO@&azkBtNHQvNiR=cRPp8wH+d44-T@fN8+kt0+ zP2IF(9sORoip6}WYOSJk7t;amF0@YwfQYPDN zv2``eM2u3X7Q;s8lbh?^UFeJu2Xk8Mr!tw$fleFfh!7Du7x-sv!`2ndw_XUDy9z&C zg^A8pG|tr77X=;*VbGglDey13T&|-bylp~6G#C$>e1h|B?x0zL640Q5(1gy}f6yBj(>Z(u(}1PRkXYb=jM zB9G*9xzpP@DKsG>k^mm2O9NhqwHKhKHz0{gP|@Hzr97doGU2={fa!BC4J_}0c6e|y z77w)(r?fL4@+WlR+6F>2=JIoq*==acLW_X5h*&uy#gnMQaiWC}(a|(~^d8XsVug*) z$0nCEu{t<`+ok;okV$rDv)Oxr-wabf6d@vVE%58z2o~6`W!83t7O)sckByx2@#P= z;NG5#NaqXW7Z-WQSjo}V*Hc~=90D|QccHJ^;Xy?H z^u&o14P&@w8uEF%PKz{$IKN2ozoh!|i)A&`4!2B;kj)ppvfRm&{GhO$ADwnJrP=wa zK4%)ZyD%6+fR(XW><=0p3?xKEHUW3`O(eG;Z8R9NT*I!>Vg(RZu_uC%EtIgd_LbSM z%!!k{nVIF?6<1Q4nJ1o_CUwU4hVl%E5P&-u7Z(HLxkeiDIiNw5)G^5loAWmPUhjds|_ zHFeriL&~D39RWk1uWZM`L!_n~d+!6(4i|CLG(S^YSVf44tN?Bwltkhz`w=G?tk@2_ zOlzP0kV-w*c4#eR3WchmveLNwE-aaz<=o2-HI-!ugaF*0PN$dq3u-mw=YjD-N#hM! z0osAqAiAk`%$V zp;JwYTOg3h=YwsBPdiqwKa-6+cefU$|3P6Olu}jp+9SldC7`$2+!heathvq=QYr>N zSUXHhlPi|0$|^3jU8Yooy*D%sjGfbZHV4uPc8iF&IKr zLj)FcxoYjGx8t0(>jIXqIis~4!x^psh(@CTx48fN3Au5gl89p?y#H&5EdOxk{PA7v z#caVN$F1Ub0OH9cyRQ0VC{ad$ke_q^j{u0sYI;2r*aBXrH(;m`t0tjXIRXN?V$m_? z`07!mG28cloQcVB)BYns$QFkKPeYofg!=(6u?W+13%+Ci5BB?#=^4)1 z|B2AD4AGzysjRrU6e@)DEydmlVwsI6ro6mVrOYM8vMk4#L$&sJEpz^%8(X@$ehf=P z9PMy%5GsTOFL3Q6ytGI_>Rp>gU71VVVy=L8Y)^H(VG}mDZX;)G55IVD1coaYmjOha zn=c1`FP)hF)d+seEDlLQLzegwiS?e9iYU&%_NKPv7$HJ7h{$XN=z4*0C$KZQ_1aM# zy;l!Og<_eqX$0F2fsH%%uxwR(zpW9mA1>yHM~F7+TvY*dLxbL2JH`?Tc6|K0w&fU> zh6IoSuz7fdnEqd8C4C~=3J3kwu8D{6%H9%sJr3Q#OwzQlaQ+U4)6?mwYzJN@wRtW zKh|&9aUL_Lg}Mzs5Ti=SP=>5Zyix68*`M*=vxNedci}3-SbQwW_DiqnynlP^jE>Lm z1`S+Za0nR+YS;CO)^*weu$ajc<5sE0bzE1=_$mwxBWKddK)OjKV%7YlU1f+kttzZ}irBb*(Qu>8xG)gQMYh^!RScGV^vWVKg4Zw{_gj}(N zVK{j%M@zQtzp5iQw^S-&7$I(4?*o)l#9}ex@p!YyycVy=lu`>K@-}crALXk;<-U*l zHM}P?*{XnX+3NM2KHvOC&bszRC>D!D@uXt0nD=TEZz-h~TZZS=hd_F%Al$ZHeVEeTDDv+Q!bbLA#N31yAZ--Y6pU!5T(?6BJvso znqPnDiDx)=>=>m|iQ~tQGoDOv@p(H~Gm|3WD9Bmo?ISUfYT4Ex?1k$kh4hp{u5|@|5q2VEXyOp)ey^fH}3A;yV-kT{np=p^x9rT zqfyT;^l3KvT?{0Xmh)^n(dXgNBL?WJn z9s&t|eA)j`tv)^o6zC&zIXf-l4qGDP5p(m+H?wM0a5mRX4t7I^YZu1H$C;RzU~Ft` z*kt5^fAkkr5#l`N=WqHdLEhdB*&VLj_f@M_amy{Y1fFAA7WsU>V|x*eMoA`bmYAaLg4oPnGJOV>f zGkj4g^`qLtMn2s=KwqZS^7%ZbX?m{i`1m+?-E~)09oJrj&D6$Xv8o|yK(1;xFlewj zT%hDisW*TJ`XNa^pQl_dd&d0m;ls?$&3VVeCI@?z&>I%+S4zDVbfDQ!>Gyy-mFgCS zLVBQWs1e%hkc!bLsBywQA#y@L}}A+rj&XRCr{ri=>gaEfGrGC(=VyJJfl=>F-Gh(~O%*+f|Uwt)(VR(UC zGMOBu=(!)bPbu|Kn2MoY6z7o(-^PA`Z^t-x>=<)%bEl$r)G3|=E>%i}3aZ+=D$bsa z&oZPtcTYk5AFxj;bu8=&ZU0O~WFzn$hIIGtDTJfgWCR9)jnKCBR7$-Gd;&Px?zulf zNCVfjO9piKls2W*{{S~Q9sd;7Si~mdrA|)n%Cd^cHsD`@)!nr7V}$pCLrSUt?zDlf zT^;AqtB*0@EdoanZvt03iP?_Pbp+;&la~PDp1=L$iRXa5-I4)4dRnyO)?EzzF+Gat zPZ0=qz?EQnjM6L(ENS~ftH9}YfepxBi^2uxMpyx>=rPMcpUGz9hJYskp z*xqY0pbvxqD5c(3N?ie554_utK8A$%fL~NfUFjrUPd$jpq=@{Ph!}F}qAVi!iO5j) zh3N}KWW9*oFCvAZUfT9h5|O_b`=dAN&4{uPCKnA8_Aw z7zslB5Rp0H0C0u#+SubRj$+U0JOMm9YTnYw5mE~gnZ=$EI~#kC;d$)2m=yN*gws@Z u#miz(3uK(n$FO&*@Lo!(6N8k$UHm^aJC}0CwL?w-0000) literal 0 HcmV?d00001 diff --git a/static/images/integrations/jotform/001.png b/static/images/integrations/jotform/001.png new file mode 100644 index 0000000000000000000000000000000000000000..1355a42af7927be37d0d149891637517856214b4 GIT binary patch literal 42998 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

@ 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 literal 0 HcmV?d00001 diff --git a/static/images/integrations/logos/jotform.svg b/static/images/integrations/logos/jotform.svg new file mode 100755 index 0000000000000000000000000000000000000000..5837c8bfd5f113705e3b51352404ae9c85e1bb29 GIT binary patch literal 1947 zcmcgtTdUhf5dJI6<|TR9@!l^7+mKQSg@hJzc?~+Y>#+FIHXd`UQWsQLFl~;L{Wi8qAC_VPIAh}FV*iX4$LTUYN)8zcnc5VIld^Y_t zpG|6SkrXUk@Mh=`PSdpyQ$#dx3zpZ_sqR10{MA^Aw%TEJ$uV_-{2wE`M?52Zr2MAn zxkcX3nxS|4{QTMV{wfkpY`uZth1M=>G$0D8K>3$QCU`@f(t=w=n&?0VVNJ@ycyOAj z6okT1hDpcx^{zWuhYoJW(}II^BvvsC&0$b)G*CrK(?uK+?>6P?4Dc zhB?rQnF!W1Wk4%tEbSw#vzqAuK8O^t`lU+f9Gr1l3YMwaFU)%()kJUfb>MT>*7Tb^ zt!#pXM)VdOF@#eD<`u-mEQTUz@Q$I~aVCpX8n6tRS1f`@Sm0GLZ{cHleG%=+se{J? zk@ch*y+Y6{P!6zyUW+*`+UYhDb=4NhN0DSf_;Wop z!b~DWa24@QNT;RfX*HQ8fHePtdS7XmuGAN=pbLx>7U%I1`(QVPeace$7>5}VQIIUO zheW4D&>|@^i$ None: + expected_title = "Form" + expected_message = """ +A new submission (ID 4791133489169827307) was received: +* Name:Gaurav Pandey +* Address:Lampgarden-street wolfsquare Bengaluru Karnataka 165578 +* Signature:uploads/gauravguitarrocks/202944822449057/4791133489169827307/4791133489169827307_signature_4.png +""".strip() + + self.check_webhook( + "response", + expected_title, + expected_message, + content_type="application/x-www-form-urlencoded", + ) diff --git a/zerver/webhooks/jotform/view.py b/zerver/webhooks/jotform/view.py new file mode 100644 index 0000000000..a92cffa2d0 --- /dev/null +++ b/zerver/webhooks/jotform/view.py @@ -0,0 +1,31 @@ +# Webhooks for external integrations. +from typing import Any, Dict + +from django.http import HttpRequest, HttpResponse + +from zerver.decorator import webhook_view +from zerver.lib.request import REQ, has_request_variables +from zerver.lib.response import json_success +from zerver.lib.webhooks.common import check_send_webhook_message +from zerver.models import UserProfile + + +@webhook_view("Jotform") +@has_request_variables +def api_jotform_webhook( + request: HttpRequest, + user_profile: UserProfile, + payload: Dict[str, Any] = REQ(argument_type="body"), +) -> HttpResponse: + topic = payload["formTitle"] + submission_id = payload["submissionID"] + fields_dict = list(payload["pretty"].split(", ")) + + form_response = f"A new submission (ID {submission_id}) was received:\n" + for field in fields_dict: + form_response += f"* {field}\n" + + message = form_response.strip() + + check_send_webhook_message(request, user_profile, topic, message) + return json_success()