From 29118b03ac3184475f0c4374a857a6200773de87 Mon Sep 17 00:00:00 2001 From: Gerrit Linnemann Date: Mon, 28 Oct 2013 16:04:00 +0100 Subject: [PATCH] Periodically ip update --- .../ipbc-Client.xcodeproj/project.pbxproj | 22 ++++ .../UserInterfaceState.xcuserstate | Bin 14837 -> 17179 bytes .../ipbc-Client/Base.lproj/MainMenu.xib | 3 +- ipbc-Client/ipbc-Client/WebServiceConstants.h | 16 +++ ipbc-Client/ipbc-Client/WebServiceConstants.m | 16 +++ ipbc-Client/ipbc-Client/WebserviceClient.h | 19 +++ ipbc-Client/ipbc-Client/WebserviceClient.m | 114 ++++++++++++++++++ 7 files changed, 189 insertions(+), 1 deletion(-) create mode 100644 ipbc-Client/ipbc-Client/WebServiceConstants.h create mode 100644 ipbc-Client/ipbc-Client/WebServiceConstants.m create mode 100644 ipbc-Client/ipbc-Client/WebserviceClient.h create mode 100644 ipbc-Client/ipbc-Client/WebserviceClient.m diff --git a/ipbc-Client/ipbc-Client.xcodeproj/project.pbxproj b/ipbc-Client/ipbc-Client.xcodeproj/project.pbxproj index 5ffc7c4..2acc9ce 100644 --- a/ipbc-Client/ipbc-Client.xcodeproj/project.pbxproj +++ b/ipbc-Client/ipbc-Client.xcodeproj/project.pbxproj @@ -18,6 +18,8 @@ ECE5813B181A77090066D073 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECE5811A181A77090066D073 /* Cocoa.framework */; }; ECE58143181A77090066D073 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = ECE58141181A77090066D073 /* InfoPlist.strings */; }; ECE58145181A77090066D073 /* ipbc_ClientTests.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE58144181A77090066D073 /* ipbc_ClientTests.m */; }; + ECE6FED6181E8AFE004F6C1F /* WebserviceClient.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE6FED5181E8AFD004F6C1F /* WebserviceClient.m */; }; + ECE6FEDA181E8BE4004F6C1F /* WebServiceConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE6FED9181E8BE4004F6C1F /* WebServiceConstants.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -50,6 +52,10 @@ ECE58140181A77090066D073 /* ipbc-ClientTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "ipbc-ClientTests-Info.plist"; sourceTree = ""; }; ECE58142181A77090066D073 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; ECE58144181A77090066D073 /* ipbc_ClientTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ipbc_ClientTests.m; sourceTree = ""; }; + ECE6FED4181E8AFD004F6C1F /* WebserviceClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebserviceClient.h; sourceTree = ""; }; + ECE6FED5181E8AFD004F6C1F /* WebserviceClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebserviceClient.m; sourceTree = ""; }; + ECE6FED8181E8BE4004F6C1F /* WebServiceConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebServiceConstants.h; sourceTree = ""; }; + ECE6FED9181E8BE4004F6C1F /* WebServiceConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebServiceConstants.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -115,6 +121,7 @@ ECE58120181A77090066D073 /* ipbc-Client */ = { isa = PBXGroup; children = ( + ECE6FED7181E8B1C004F6C1F /* WebService */, ECE5812C181A77090066D073 /* ipbcAppDelegate.h */, ECE5812D181A77090066D073 /* ipbcAppDelegate.m */, ECE5812F181A77090066D073 /* MainMenu.xib */, @@ -154,6 +161,17 @@ name = "Supporting Files"; sourceTree = ""; }; + ECE6FED7181E8B1C004F6C1F /* WebService */ = { + isa = PBXGroup; + children = ( + ECE6FED4181E8AFD004F6C1F /* WebserviceClient.h */, + ECE6FED5181E8AFD004F6C1F /* WebserviceClient.m */, + ECE6FED8181E8BE4004F6C1F /* WebServiceConstants.h */, + ECE6FED9181E8BE4004F6C1F /* WebServiceConstants.m */, + ); + name = WebService; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -256,8 +274,10 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + ECE6FEDA181E8BE4004F6C1F /* WebServiceConstants.m in Sources */, ECE5812E181A77090066D073 /* ipbcAppDelegate.m in Sources */, ECE58127181A77090066D073 /* main.m in Sources */, + ECE6FED6181E8AFE004F6C1F /* WebserviceClient.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -470,6 +490,7 @@ ECE5814A181A77090066D073 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; ECE5814B181A77090066D073 /* Build configuration list for PBXNativeTarget "ipbc-ClientTests" */ = { isa = XCConfigurationList; @@ -478,6 +499,7 @@ ECE5814D181A77090066D073 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; diff --git a/ipbc-Client/ipbc-Client.xcodeproj/project.xcworkspace/xcuserdata/gerrit.xcuserdatad/UserInterfaceState.xcuserstate b/ipbc-Client/ipbc-Client.xcodeproj/project.xcworkspace/xcuserdata/gerrit.xcuserdatad/UserInterfaceState.xcuserstate index 8e64e6dc08db5c44226f90a6118ac943a50975c2..1f6d2aa49a9934b7bb5308079662142a62162ae3 100644 GIT binary patch delta 9205 zcmcI}2Xs@%*6x{dEZLH*YBgKMlI4cFkz|tqCX_(v7#mD;j4i<60=B^z1DZp<;nGFo z5D38q2#|zM2p0$?A)$8&DL_IJLJ1*+5JLS&HqH0)-dk_2|JrL=I%j6SnZ5Tnd%oHJ zvux2cFgFUb8Eo%)nj}y?ukE{myUac2K7fD^B7p*EK{SX37SIg1KpJQPUIJ}FJJ23< z1>Hb*&;twsL%}dm0EUARpb!*+Vo(Aqz$7pe%mNF*+h8$x57dHXU^#dnd<52j4d7$2 z4eSJ;fiJ;fa0HwJr@;mAJ@^4!1ed_y;BEli1NXrL@DMzL3-dm2e!af|KDC zK;TsPPdF3Kg>S)XxER*MWpFwC2(E!^;YN5E29Cg^@EAM}Pr#G#6g&;jz^~w0_!ImY zUV^{C%kVe&2fT$KLI@)kg&`i2A{mk+1yZ9Jq(jY+71@v-Igk^%kQ=o?FQJ!FOVkRr zL+w!q^eXC%dZJ8}g5WRyIp~dK3 zvok0pQ4@UbF>eAkA6Zwqbukt`VHMcx6q&HZ*&(uM2|4S z81r#B7U4)N!*XoEMjVSx*p408iCwrQZiQRpble4Z#ocgs9O#b+;DLA$9*#%gLR^Ha z@OVt{6g(AA!_#pPFTii&w{R`4!}WL>UWeD?4R|BohPUG#_*1+S@5Nu>FY$4F0-waE z@VEG9dKfgti~#L^AxMm=S!V1;R(b8 z<`E;SVZJ4=)&Pd|B<9Br00EXs4Ad|eNv9eRMtYHiCoSPXz$Df%S4ig?AS4;j8pJ>v zYPdzZ)c_gk{j4DhsAvOFlFXWh6(;0J{=*0Mq9^zuV(LxF+xdA24KFf)lump%iI z2Z^B>vq(%0NFv!J;dsa|z{=#*0UNLb2kA!!lGjQ66Kpr|FtS=^Fq20N#8?Zwz(@L% z0l{>kYEUs@LO)Nsz6@G7>6#AOkU=DemvzL3v4On^J$SIek`olW`qDrzYcG z1D#1O864asG=jX~_t8BI{yqH9Oz#Q$Gl?rfFOUIxgG`VG`hdP58}uW7GK35z!$<)c zPDYSIQnV5b00WtLrWMl)KTm}Mw0514xWDo5`LL`8UJOw6$DYVN}Fbzxx z{{U}*8NnoRZ{9dkN+ys|!71VvzS$sH59WZmU>=xH%E)LkhE$Ns4ML!Ki4ZWFLpqetdyz$`*edzr70o2ilv84R@ zZO{P3Oav=xnTgD(6JRBsZWUM!J^w;pb8m*@*6HArBbZHpc2sQ;fNo`z z2M&aG%ziSt1{@?)g73@REsuiZp?Al~)EaPtOd|=syXF=YKN)cbe8b47 z{~&MFfo~}}&XF0E5bp<7^8B7ZhSu~G`6sD-GU^v_gGpQgE`uxJD!2xI1=qoEWG0zK zW|KK&E}2K>uK>S;o8S*{i-z(x_=^O|0pMq5P8!QU*=!Os-AfsHS>SaYaHM*KReG{^)T;8;_ zP?ma*a4-rgLxf{mkvj5jh;BsP;9M9@83$va4(g$SEFtfarKILL#x>9^M8E$7p<2@> z*o-o&wke~UaOeqJWVXCv{=5;HBlC01{oVZje1CrM+o)y%55@3;a+nHM_vw~lADmm} z?@vEV{e`*Z1!Me_3oA%fLzLl5@a4>I8I+5)uq899@oS?Yt!YGHI$237o8;-V6zUkS z>sg+L?O-P+u^zUE9pJ05BUw$9ACM2pNA>VE*co<#UCA1y!IN|fhm*~Z(G-y|wjkDnFCT9Sg2ZN#Z`DAwuTtM~&N2z0MZ--XA z5WYh`BVRmQ@w;$olj&<w;nWHwr zT}QRhkK~MKZkqa7w}8C5ALV_H`4@t zhNw9(gaacuP|Sf@9GK04w>C`CxIog^@O&t6-@tF-ckmqfiku~1lW*$b1^7Mu0bV5E zl7}4Nb09u=PJ1x!3cMDw{3`jb2L4LU(_;}nB_+JsK)`ds!_ku+f5LlA;xc#}{sr&A zzu{eSfqYMXAQ#Dx%isX`fUfc`V#r4F6XnH^%u~0r{C+BEQrj z5sE}&a+zEqSA)HDSy3noDVszCX^=L!U8i#BQ5>BT8ITdhA`>!`U&(dy8@WM#Uxq9w z9wneeltgZlKgcceH+c|5`We;%RVgXH5bu3<&l7=yQjnKw9Ml|n$e-kPE%KpM@)x-i z{8;ZEPIpfoN=I$bE95S@NA8o#e%`_TY`r_%d_4<#xzqY(q?X(I4Y8GE`yMAe)Dh8r z^qho1T~IgbMAVf$szKd30GfCa^$vNF15B{Q&RI|&M33h>)E8x=ejI=tKpenzZ~z*J z29b>%U^x&L{KYV(lb=~%gJ_6(B&}heqXH&p=~E)2LR1`@vxo!XHK>FGf~J#}H%=On zBN;(Ys@H?F%z~gXmhY%Q<0(7PSX7C|p(+jtIUwRdBnQOxXabsu0*G)x!T~J@qB&p* z_KDrrc{+N7PSv20&j037?OPi10r27B`(E<+0IiRRTZ=q@q zL~%eF+!baHawbpo5>)eVeQHr12PmsG!DFTb&q}&q&?*kZkjj(jLwY9DlNo)4)}Xa$ zU3Qtj(4SXcP(rD1;DDY3Iu67=vot1p6WS6A_-6Dm2aFtutwo=ptsF3Mz#RO{>_fZI z?%+eSiQR)fqle~0voY8{P9NAykI*J@-H%Q&iL1~7bPydvhtUyq6dgmy(Ft^t0|^{R z;y^PF*f`+efQthu9Pn_!$APp}=rlTmzCvfw*XSGcE&2|fL+3g05(ipype+Yp3|>+`?fcW#x`GBS#h%)pIHiduCIKZ7F+5TVf zTA=7fZu?*MT1Oh;CPrb{XjJo@;CxA0;CTmOUSpFtN3!?7VDF2}4Nw;Sud;;dA{xx% z#;nlPaABi$sX3B8Ppu35mp8%x%er3wpPQgvK|{Kuo2aR6(ni}_{NJekG>S-5XgdzH z4T4Y6$bn8F z)YlqOR~)~3XJy~eI#W{I6Z%%AIGcwq7EkQ%fiqtO7r#oKo<^l4dHcb#9LCK zD+)B?HBX^86}QhrUEq2On1l0Q1c?232*n%5fgT*_8N#DAlu&Hud9vSF+<=$nbW%J| zgXnoZ?I~a}E~nZFm(Xyt^iCDVf!_2|RZXu|Z!g26@feCa7FTj0lLLK1xP3W5OCQ;7 z=`qluq%gniI3vIl@I)NQruUJuh8)a+tl)(BWe&{YNjVa6w~Vf%%X0@8`WrKJ9eq8S z8P)em#tyCWy@TuUU%{RUngIR>p7lZlXX80^Df2kcp92Fz3mMpGU`_Qr!|4IkPhMJW za=TnU8r9}0&IaNM^Rm#5Kx*sEyO^2 zd9)f+pSf;1Uj0JU5AcT+bqxpdIFKJg^*4gnm3U>#8e^Llx`n#EA@FCh-GsNOsT#qX zF;yc&IWVjie}btRDd52H;OT^18Qz8WP=SSabD*#Wf5w5LV5h`5(>{ENDn+~>AHWAW zP{M(c92ixH591@u6%LegU}kVm;;1gCnVfoj27iUm;;%VS#({Ahn8<<2PxTo74u2m4 zI)~5W3mhotz-SJPslz|ui}*(lRB&J{2Pz3IsKp11ZTjHwq$VJ6 zf$!wj(2}}@7S$D4iPiMrh{1YVRCnPN?7=>qhF_w^_0}}m_Q3P-CVY%? zz{Iv{!@|uv1}|!)}KC74~=7y|4$o2%eZH z<;i(!o|YHG)AOvn*1U9HCtfe!K;95u8E-6)SWqb`kny=#<__6#p{7n8>{#5?k{C5KU#r!4wrTkicJ%2g> zef}!`cK)aQUHm=#&-q{Q_wf(#5Al!ikMXbZ?}dxQ&Ef9w*TM&dj|-m@J~w&@VgNx0!M^JBt>{5+D5dGcr~I^MCXXE z5#1vOL=1{}Jz{V~enenM#IT6r5nROFh}wu<5jO-1L98H75HCm)G!xhatp!~K-32`b zy#-lbym5bhN279J6v6rL7- zCHzi!UiiK6qVTrxkw_?#isYgwkyaEV(u<5DyT~VMC+Z~XEb1!iCF(8867?005S5F* z76mSe?uzb<9!4^eFcL?GMe-vfB88EL$k<48q$M&TGAXiIq%G1B>55E=Y!%rj(jPfK za(d*ukvk(#MqY}%BNmAh#IK0ki93ipieD4wi3`PL;()kT{E>LAc)fU|c(Ztm_>lO5 z_%{iZ=p{ypNfIZCmn2I1N%ACxlH!15q@+|*E*T>UNM=Z8N@h!{C7UJxl6)<>DEUcp zNpeGSQ*ul4K=Mcmq#~(O8ZAwfHkY=Nrb}Ouwv%p^?vb9Ao|E2^K9D8KY_h(xQL-}G zXjz4um7%X`T)<$dJ+*ed@TjX2i+vGdspUc0H?~@;pACmvAkSdZCZiPqTQ=}<6C^8j&6xoXYih+t8 zMXn-GQK~3cj8TkLj8lwPOjHoXB*h%XBE@FKe#OsGI7$*_jY^ApC8}Lihp3KGuSI1< zWk&Uh%8u$EH85&y)O&%b52H>+or}5>bxRqp6evYXu~Mp(D`S)vWr8wE*-U9uI+Ur( z7Rr~E?Uk=8J1Ki9dn>b)Im%pRp0Y$aUO7=ol#`Uz%ALwX%2Uekl^2yiDK9B+C~qt8 zsemd%B~po1QdOeLqiUr}SG}TYr|O{UuIj1EP-Uw6r~=ul!K!hpsj4}u#j0hh6{?l0 z)v6Cwn^jv>TUFasJ5)PW=T!I9dbLlTu5P1ltL~xBP-m+9s{5%2sQv2U>Oys~dZc=S zdXjpIdYby5>RIYJ>UrvS)OG5$>P_m8)t{($sCTM&t3Oj8R-aM-sJ^7WtiGncuD+qc z8mUGW(8x7W8k5GNNzf!~tQx!K6-{SN4^1ykZ%vjaPcuw2TvMnSr76>l)>LRX%?wSo zX0c|8W~pYGW`$;@X0>L!X0PUm=D6mh=CtOb=C0#B60=nmr>NhPMn$4J!?64eJdX4Vw*H40{ZF z4aW@U4Cf6O3_lotGX!oLZW;bE+%?=ch8qP&kx^otVXQVTG1eICjVp{F8P^&&7&jZY z7|$B-$LeC6$F_`3k8K;7XgJN@I^J9m`4v#I2t&FXToe)c6ugBgqVH3|3 zVG@}nCXFe^WH6ab7E^+$mx(j2HJvs6Y`Sc^YPxRv-SkJmbl(ij*vvDBo0aBhv)&wQ zjyETnt!BIVWpj6PnR&eV4fAaCJo5tcLi1wtd*&K*t$DS1r+J_Gp!taTnE40uHS=%g zo8~{wcjAV`mBfvY+=948akX(D$L)zb7HxT71{|-SJ1_kHw#eKb`P)!m@-F2`dvmNHirn5?zTYiQdFDiQ5u) zB<@VylQcPLZqodu1xeM(!emWybh0kln0z_;cJiG-^4;VI&Gs}q+U$6MPTL;aUfY+p1GYo9)3)=r%eLFLM|NOGcGk|b zOYCyH(yq2g+jaJMyMtDxI@o*Kd)u?@eeM111MEZX!|g@(5__qAw7tU4*=N`n*sC2r zN4lezBik|9F~U*qnBbV<2s+*jII0~B9g7_Gjunnojt?Ab9P1og9bY((JI*_Paa?g+ zb6j`aaQyAK?|9?{PV5YGik&ge1ZQ(+OJ{3m8)sW*duKOiPiJpumNVPg-UrC==V#Al&o$5Ap8KAMUf{*vFfZR5;dOX> zdnbC|_pbA9_3ri_@E-P_@t*Tu^xpK|@;>k}KIp?fsZZfk`LsTr&)~EA>^`S2#rL6a ztM60aZr|s={k}uKqrT(5uYBiyzxaOl-Axszz9dVHN>!z5Q+27vRC8*4YEr5-)t;K3 Y+CH^&!~cgE2pd1yK8>GG{-$>QACIT=-v9sr delta 6900 zcmZu#2Ut{B)4p@g-M-5%+ZWiv7PiRlA_{f|6%`R1id{rl1VuyyyY9J`B$`-nY_S4% zW5ph0iN@Gs?3$=iqe*NrYNAOrn*T0DBhUY_&jZ{$XU@!-dFP!uyZAkLHe$AhrWewS z*z|fa^yY9FJg3#t;BVAl)IY!j2}nT+T8IKGc%Tl%LVZYpL}(5zAPJJ82lRwq&>Q+d zU+4$@AqxgTK8%0~FcGG}2k;Thg1NxLJXj1%U6CwX{ZD0gu0{NXduc#xu_5gh2f|Om7+2<1_cp8Q_&1G6U{;k&_c8b zEk(P~ZnOvOMW3O4DEK+rj}D-N=n(n>okriFGw3WjhpwP&=sJ3U9-?2+BlIhJj9#FZ z=x_821Lk2qR$~p;Vjb3F1CGFv*oN)cfn%@}d$AAuaXs7!H^a?wJDiH!<22j>cg7jG z7w(7qNX6T# zupm%W+Br+19ycy7))F@%)-oJ{lsoc{`d0u&P5Cu!w?Ntd^RAn-xRNkBllmRGyt%=&-c`-Z;R zMh5aXhCxBPy)_IfP*biIE8gx4IxvI`W|F9Kh#;B7c`oER7^$pEFo78?qzCCu`bCqN zH+$P4hEi5g1F0NhCYB0tf{XMdz1Uk)UH{@FD)jSasTbmEEv*ajqz~y!Z2eMOr=;W- zlnyINE(v7Yl0G_EORoVmuBF!mnv(t`i_Mf-U?4jnCMUBdz|aypP_A{*3R*)7w1KwJ z4pN~#q>+Inhvbp~$s>bEJ}DrB*FidTq++P%RCDMG8PJWgks)LvhXp}KpqTY{|rkrjU^N*Boi({0Sx9uL!c0ba^hSlhT%}cX3INAj3wh0 zK!#p~QYhn=jD%4z8pgm_7{{KJcN2^x!^jv?#KtHZ*9*erN+7_%BvMRD$Ouw)4yJNC z0(if7YA%PXg1mx23F%6PpQDCSMKBGfv!5xRlvQ4toe;`>Nub zeGUgg@Aea>91fC6#Mv!9yP)U|q>jKbN?8eC!cq8&OeRyv)Jizc<@6+ZkIQ2vds3C# zT&G-X;1XPhEATCR2Up=5`G8C#)5(YABQk@`Tm#?34Y&!nxGda; zJ7gA_O%{^nToP80a+av8T<|OWPAONyV|W5j;Wsje%q1-OcqKf8=adcpB=g98jxQFl zeKZq;)2>=K)4f8}P&c7&y$LvBGO{QH4x+D)A`)`=Kq4eY z67mUIOqRTZk7`haa$XAnNX-FYDH;Bjn;LS-t_6XbWM?VN-t6My!h)Ra(t=?{tqXG7 z6ciPV$nTI{R+N)pP&BA9yFgn>`M~?0tGdL7gpcra+ z&A&A+ySR`eH(5!_YEfdNcrF4BRK=;zxo86(w2Am4GlxXIj2xD*~{M3+bko| zs9L0q#-i~d`8e`tra#VpT(Mq%mtww9m zTC|RQMUIi<jJq_jxLe!xYmZ=0vKK8*r|eio23}dc85Y0#qP9BX_HQEE5{uf0Me+MDsUGnYsFgt<8C-JWUM;_xE%LjfLGgG-;g;5XqH5e z^k?B*4i|U;&c*|A4g-7!1Plln5Us=koQDVDdbDn!y}jC6`^DxY|+OR})n$*ZfO0`R~*VK2#&IbCQv1HA5CYf=`67 z`XxS!zrx4xaRy=-a5CUxz|DYX6+VeiQ8s)Uf5Si>2D~JZ0UrZ?;_TIGSZ<)ru)^FC zY(Gt8Sig1!xq;-u!qgEX$^s+U(HbYaQRC8{<05n!U%}t@>X_jhQChx5X$u1>476dOZOFM8mPs_RzW8wtH|_mjDn8mz$1#w~Kzjz#*wgXW zq(r*$|619EZc1}5r!&A+b0;ozEgskOl^n|AK$PVi-I9{ft?1TOarFkHVCU+Qfo?;$ z?e{i)t+PwBE4f$gsNtC%GeS@Q#+YtTccEOXxdU~e)9EO>6WzJ`SX~*&;7-OsHwL<| zrn{m9x*Oe{8x*)aWRl$s^kASDH!tiCoz==EBAF|%kp-n=y0Xm^m292F_k(m6=hXl@ zy9WoZ(Ck~C@#8bU;R4>X#>E^ux5k@51)W0;@84}$ZuS^UcB!Rqy~c6ziu={HMdwpl z<&=z||B_Hh7jZeJhceKwoF2wNR;?nVORGx>L4S@bnJ9V`J(eR5dNe(TfdLF;SJ2~V zj$;Ngki(v75YvF3Ol7UY+v%zFd-PEH1Fn1-2r$5vLO%uyIII74HF`!(mFE4|*7T}( z#B*!J`JwU-)++CXH40|UA`X8Q-XXiEGHR3hlHRHA5CG%SGQh057sl2|t z{=5OafxKK^9xtCam{-Uv;uZ6z@s{w`@~-e6@FVzMep7yXeg}R!Kbv2~AI=}aAITrh zAIqP~U%+3&U&dd-ui$UyZ|Cpi?+)@m=O5r7;veRp<=^4|$bZEDLx2PlfnHz~#0csM z8VVWW5fyKw&FbTJn3nIWbggu~^i%0pX_a(`beHsm^t`O0EJfB+)?3zB)?YS2Hc*x; z%ai5H2FoVMf-*)nSvFPnzHFN8L)i@3EZH2{64?&fVcB=GA7wAYOkwe1DPfsmLxN#b z!&Zb?P}qsEvtifelw2wglPly(xmvE3*O51ur^^S($IBu{PYn;2hK~tf8UA_rf$&4&hr_=NKOKHH{CxPu@b8sErA*mC znWW594pGigE>o5(E0wF2YnAJj=ae^;KPc}ge^%a8K2SbZzEaUDzDlSPtHM<(l}4pg z8B{5%eyTFnL=~f&teUEtt14Gjs#dAisMe`As5YuLtM;o7s=iPi3962&j;T(lPN`0- zuBv`kBehl?ukNhws~)YMs-CHyt)8p?SUq38TwSiNRIgI6QLj@UQ9n@srHR&fH1##j zG+i~_G?|*7n%-dO1DGzh3+feaotJX8Qr;{?t<=;?uPEJ?wRg|?r+^|J=XK| z0=-DD(nsmt`dGbBUsqpGpP*0GXX<4tK{e!~^R zuZF)P{1M3!*%9L-=0|Ld*c)*;;>(DyB92F#jJObSDdI}R)rjvSZboV%TSShDtcctk zxh-;gV3lpBZI5lg?U3z=?WpZ* z+XdS_+cVp1yUFgbr`Y@0^X&!p!S+J?82dy!W1nK5X8*`O%Ra}x%)Y{2VPEBla5x=q zM;(XHQR&#?_{_22amaDR@s;C*6C>>T49=bYdSIvMA5=M3j;=UnGJ=K|*n=Xz(A^Puxf=P~C= z=NadD=OyPA=R+6ma=YSO&0I;YR<1U#R9Bj-mn+~ZagA|}cLiOOT+>`1xn{ZMxLDUw z*DcozH+D>`=r-`SzC)v}^ljiB@>Eg-o^!4O;3O%K<7h*5R z-i&<|`z-cvugI(Q8oW_nv)Af%cwOEEZ$ocmZ!>R_x23nWw~cp*ceZzL(0j-Gi}$(r zwNKy^`&7ONpV{a0#rYcfn);gil6>jD&b|y^rmvT;k1yXh*jMNq=DX*6?tAHb?FT>K zFY-(MVScqg(r@>B{fYi$e`|kRe|vwrzq7xqKg*x(&++H^Z}}hjAN!yBpT!N18x=Pu gZd}~NxY=>@;ucfp>KPfKno*fvQuFuC@3^J^2Msy&3IG5A diff --git a/ipbc-Client/ipbc-Client/Base.lproj/MainMenu.xib b/ipbc-Client/ipbc-Client/Base.lproj/MainMenu.xib index 995c0d5..af9b8a8 100644 --- a/ipbc-Client/ipbc-Client/Base.lproj/MainMenu.xib +++ b/ipbc-Client/ipbc-Client/Base.lproj/MainMenu.xib @@ -721,7 +721,7 @@ - + @@ -755,5 +755,6 @@ Gw + \ No newline at end of file diff --git a/ipbc-Client/ipbc-Client/WebServiceConstants.h b/ipbc-Client/ipbc-Client/WebServiceConstants.h new file mode 100644 index 0000000..613a706 --- /dev/null +++ b/ipbc-Client/ipbc-Client/WebServiceConstants.h @@ -0,0 +1,16 @@ +// +// WebServiceConstants.h +// ipbc-Client +// +// Created by Gerrit Linnemann on 28.10.13. +// Copyright (c) 2013 Adawim UG (haftungsbeschränkt). All rights reserved. +// + +#import + +@interface WebServiceConstants : NSObject + +extern NSString * const WS_RESOURCE; +extern NSString * const WS_GET_USERS_IP_SERVICE; + +@end diff --git a/ipbc-Client/ipbc-Client/WebServiceConstants.m b/ipbc-Client/ipbc-Client/WebServiceConstants.m new file mode 100644 index 0000000..c4c842c --- /dev/null +++ b/ipbc-Client/ipbc-Client/WebServiceConstants.m @@ -0,0 +1,16 @@ +// +// WebServiceConstants.m +// ipbc-Client +// +// Created by Gerrit Linnemann on 28.10.13. +// Copyright (c) 2013 Adawim UG (haftungsbeschränkt). All rights reserved. +// + +#import "WebServiceConstants.h" + +@implementation WebServiceConstants + +NSString * const WS_RESOURCE = @"http://www.ip-bc.org/ws/update/ip"; +NSString * const WS_GET_USERS_IP_SERVICE = @"http://www.ip-bc.org/ws/info/ip"; + +@end diff --git a/ipbc-Client/ipbc-Client/WebserviceClient.h b/ipbc-Client/ipbc-Client/WebserviceClient.h new file mode 100644 index 0000000..54200a8 --- /dev/null +++ b/ipbc-Client/ipbc-Client/WebserviceClient.h @@ -0,0 +1,19 @@ +// +// WebserviceClient.h +// ipbc-Client +// +// Created by Gerrit Linnemann on 28.10.13. +// Copyright (c) 2013 Adawim UG (haftungsbeschränkt). All rights reserved. +// + +#import + +@interface WebserviceClient : NSObject { + + NSTimer *updateTimer; + NSString *usersIPv4; +} + +-(BOOL)updateDomain; + +@end diff --git a/ipbc-Client/ipbc-Client/WebserviceClient.m b/ipbc-Client/ipbc-Client/WebserviceClient.m new file mode 100644 index 0000000..95b883e --- /dev/null +++ b/ipbc-Client/ipbc-Client/WebserviceClient.m @@ -0,0 +1,114 @@ +// +// WebserviceClient.m +// ipbc-Client +// +// Created by Gerrit Linnemann on 28.10.13. +// Copyright (c) 2013 Adawim UG (haftungsbeschränkt). All rights reserved. +// + +#import "WebserviceClient.h" +#import "WebServiceConstants.h" + +@implementation WebserviceClient + +-(void)awakeFromNib { + updateTimer = [NSTimer scheduledTimerWithTimeInterval: 4 + target: self + selector: @selector(tick:) + userInfo: nil + repeats: YES]; +} + +- (void)tick:(NSTimer *)theTimer { + [self updateDomain]; +} + +-(BOOL)updateDomain { + usersIPv4 = [self fetchIPv4]; + NSString *storedIPv4 = [[NSUserDefaults standardUserDefaults] stringForKey:@"value.ip.ipv4"]; + if(storedIPv4 == nil) { + [[NSUserDefaults standardUserDefaults] setObject:usersIPv4 forKey:@"value.ip.ipv4"]; + } + + BOOL updateResult = NO; + + if([self checkUpdateNeeded]) { + NSLog(@"update resource: %@", WS_RESOURCE); + updateResult = [self doWebServiceUpdate]; + } else { + NSLog(@"no update"); + } + + return updateResult; +} + +-(BOOL)checkUpdateNeeded { + NSString *storedIPv4 = [[NSUserDefaults standardUserDefaults] stringForKey:@"value.ip.ipv4"]; + NSString *fetchedIPv4 = usersIPv4; + + if(storedIPv4 == nil) { + NSLog(@"stored IPv4 NULL"); + return YES; + } else if(fetchedIPv4 == nil) { + NSLog(@"fetched IPv4 NULL"); + return NO; + } else { + //NSLog(@"compare stored %@ with %@", storedIPv4, fetchedIPv4); + BOOL changed = [storedIPv4 isEqualToString:fetchedIPv4]; + + if(changed) { + [[NSUserDefaults standardUserDefaults] setObject:fetchedIPv4 forKey:@"value.ip.ipv4"]; + } + + return changed; + } +} + +-(BOOL)doWebServiceUpdate { + NSString *settingTempName = [[NSUserDefaults standardUserDefaults] stringForKey:@"setting.name"]; + NSString *settingTempToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"setting.token"]; + + NSURL *url = [NSURL URLWithString:WS_RESOURCE]; + NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; + [request setHTTPMethod:@"POST"]; + [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; + + NSDictionary *tmp = [[NSDictionary alloc] initWithObjectsAndKeys: + settingTempName, @"domain", + settingTempToken, @"token", + nil]; + NSError *error; + NSData *postData = [NSJSONSerialization dataWithJSONObject:tmp options:0 error:&error]; + [request setHTTPBody:postData]; + + NSLog(@"update ip to %@", usersIPv4); + //NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self]; + NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; + + NSString *strData = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; + NSLog(@"data: %@", strData); + return YES; + + /*NSString *post = [NSString stringWithFormat:@"name=%@&token=%@", settingTempName, settingTempToken]; + NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; + + NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]]; + + NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; + [request setURL:[NSURL URLWithString:WS_RESOURCE]]; + [request setHTTPMethod:@"POST"]; + [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; + [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; + [request setHTTPBody:postData];*/ +} + +-(NSString *)fetchIPv4 { + NSURL *myIpAdress = [NSURL URLWithString:WS_GET_USERS_IP_SERVICE]; + NSString *contentOfURL = [NSString stringWithContentsOfURL:myIpAdress encoding:NSUTF8StringEncoding error:NULL]; + NSString *contentTrimmed = [contentOfURL stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; + + //NSLog(@"fetched IPv4: %@", contentTrimmed); + return contentTrimmed; +} + +@end