From 662d4b0fe241b284fc9104d393c538df6efdbe4f Mon Sep 17 00:00:00 2001 From: Stephan Strittmatter Date: Wed, 4 Sep 2019 00:05:24 +0200 Subject: [PATCH] Develop (#39) * Added handling of 429 error code("Rate limit exceeded") * bump versions of used libs (cherry picked from commit 0984aedbce59b6b70a58cd4d97a192e95dfb9e7f) * upgrade to gradle wrapper to v5.5.1 * use openjdk 11 on travis build * update codacy-coverage-reporter to v. 6.0.0 * update gradle task for codacy --- .travis.yml | 2 +- build.gradle | 7 ++--- gradle/wrapper/gradle-wrapper.jar | Bin 52928 -> 54783 bytes gradle/wrapper/gradle-wrapper.properties | 4 +-- gradlew | 19 +++++++------ src/main/java/com/sybit/airtable/Table.java | 28 ++++++++++++++++++++ 6 files changed, 46 insertions(+), 14 deletions(-) diff --git a/.travis.yml b/.travis.yml index b04e191..1848f57 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: java jdk: -- oraclejdk8 +- openjdk11 before_install: - chmod +x ./gradlew script: diff --git a/build.gradle b/build.gradle index 44910ed..db8de21 100644 --- a/build.gradle +++ b/build.gradle @@ -102,7 +102,7 @@ dependencies { testCompile group: 'com.github.tomakehurst', name: 'wiremock', version:'2.23.2' testCompile group: 'org.slf4j', name: 'slf4j-jdk14', version:'1.7.26' - codacy group: 'com.codacy', name: 'codacy-coverage-reporter', version: '1.0.13' + codacy 'com.github.codacy:codacy-coverage-reporter:-SNAPSHOT' } // custom tasks for creating source jar @@ -126,6 +126,7 @@ task sendCoverageToCodacy(type: JavaExec, dependsOn: jacocoTestReport) { main = "com.codacy.CodacyCoverageReporter" classpath = configurations.codacy args = [ + "report", "-l", "Java", "-r", @@ -134,7 +135,7 @@ task sendCoverageToCodacy(type: JavaExec, dependsOn: jacocoTestReport) { } task integrationTest(type: Test) { - testClassesDir = sourceSets.integrationTest.output.classesDir + testClassesDirs = project.sourceSets.integrationTest.output.classesDirs classpath = sourceSets.integrationTest.runtimeClasspath // This is not needed, but I like to see which tests have run testLogging { @@ -194,5 +195,5 @@ bintray { } } -integrationTest.mustRunAfter test +integrationTest.mustRunAfter test diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 6ffa237849ef3607e39c3b334a92a65367962071..778aa9bfc5de7554435cc9503c97cbadb2359ce2 100644 GIT binary patch delta 18335 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 KU0Cn$(*FZk2g+~& delta 16509 zcma*O1yCJN7B7suyE_C8?j9^?aCdiiyFr2z$yKlq(-&gf@ zRo|Je^E=X~PfySE?enVyydw=9NnRQp0uBTO1_tEJlvOeYi5Tg>t-5mIs2E;#Zrm%! zOGi+U|3Wujp&+jX?Dx-Wfq1QUj%JMD|AUDcA%**wxZfNxcQk*sfW}Zu*#9N=u6>!q zc$H`WDoYgT07VQ?@^ErCv5|MQvo~>cwlHyey>s^vc5ya0v30gEGH|wYd~alJ;N+C2 zWMhXWjN*$$9o#>;Ris}QzclBmyc=dWsgDO684AlRTP!OhXk!3w_TA0cF6OHICftVY z68b(TqFN}P1Qh+ed+dbodW4U+`EGlE{v2e;-I6TQ9~J-)32sHR!cqA(5`#lYeeR49 zU8}*045`1P&d&>B5L1{HghTQ4LPOUt;qtaq6Zn-d5zv_aUD$D{040t!rU%*y1qb_xdQ6e@J0=``3iyvUemL!gszsPVy0Q_Sc ztCDnMHZ(f#ssZ(gq%jk6*LUj>wRECSdtkH{G*~R^xp+>-%=C5fM{zul1LtI$!5m%ubj|sRX2|EQ$`L!LlYQ4(r=PWrMY zm#SsdDYw+et*B>zh_F`>>S$Q1?W_K^1Hm?8i2ofvzJGEqOdyOwFV8;M5(1hVT#(!fFqR4Yq`!xm? zAb^4zxIn}Kyy|sgeXzfxv>ZY1mI(?3q!u0og!PY<(tZ*^yy~D6h6=%pE(>d#3=gbm z2ol60$PfjJxVF$cR7CPgKiE(T2rw8|QzA*AoZHDEX%8Xhiko(3>6Kypu51b0=OX_U zRgbFDE5?g~-f$INjQ07oK`Po>!*qbZB^K3gLO+~==jCZa@lX=^s=g4$j@w8QCo1)RM5}IFFKWyr!2dangJvv zZZm~+&H_EAWES&T6OS(WhjFbj3&$GdCOHY)$7`ekikVaO;<;K^yy0MEbn>i6ORjU5 zd2UlRn9Osg+zIU>B*`PDDUT3jxb;GvOR2j9t$8t^hd+|R>y&R-S}g98((}%gdO`$^ z6{KnRJp+n_$LSYX*!Plha;BtDdE)D(#g21NDy$dN$A=9or=3TH4^hoW5MaPg2Pcq+ zWog;~a~G;t47~AfY2Jg^x!VOS`8IUnWwO;RXLwws*8=et&WqQ}K93D4iPoHg^b;tK zJj$uWEQAtEy&YhyII1zR)tk&LP6pKTBV@Cs&%{Dtm_xdS#t%1_%){ht^Y~^*eA6@y zQq?kZb!Y8#$>Y6m|HsnWZX&Zo>x)<5m9pcCf!qo%bs3ZZt?@55|MBZKEAC>l0Xffe$9IeIeZ{ z)T(3tOaXCAwAa&5VD${yfnR?#P%;X}FV%9E_b^DQ_fth2e$1AXU`>X&S=2q^g3N9O z`1sbJ(rdU1d-A0BI`O3U!_y}*xcaL1hlf?bG9J3)7Pz!zC#X3jd$ea6=?yBBac{?W z@Z;7SVdQ;TX5LD`LCHR+!*{RD-EcX1HJ&^m9@h za~BqeH)jWsgUvg4+bDJVBJ}Gg=KM`o!VIGbNll6Ksp_h5+CC{nOeQkhNGX;4%gH?Kd07M+yb-mOMcRQOK5B<6gK2iy%X zDQO~f5O1lZSA_|btEf86Efi92-1=o(ee+(lc@#Mb>izs<6jplNeexT*b$yYpGWThX z^)g(U16N-W2P?lmUV%tuPl!e}1vvPz*LI`+#+rwcjS{&V*2EfV0#*Pa!;<3HDyP`y zcsj(v6U8ju>YbJ>EF=*x-ypL#G(d?h(pOvesRUDn(F@4yK&Ak{0CC?M&I`9J0@#%= z&7>7E^(;LK1^Lk9E|#Am2>c@(ldRzFo_A>Wb(g(Svps$wQ(M{IgYK?Fc4>iC!pw_* zKhE?Ov^1v@3quXtBznmr;i6$B)dA3iYGQiCi4-juDErNuXsk+3p5g_J|{@2RiFA{=X***>uK>v z2{9g5Sh_kZGM%KtCtSjo8LQFtoRbKTGkEKao}rh7rpNFGenMH%clHuI2_dp1sP=ll z*o8M$LaDLC;xZZoXZ7?llsy5Oruep*VtI~WR!3($9@7LUDU3#CLOkgtoiG?^N}0e5 zTbz$Q?XqeNV@fXUW#fi3%7p`(?IVHrpNucD zUAOH{It2%qdv(adY_r|9ONCS^Dzw=2qs(`f#oKIz-Q-Cn)ETk9Pb`5?n7hQ@)&cuy z6Tjo76Xm*~rcTx91-Z;DifeMmWm{jLMR^Y5?{>t;&^L4%Su*Iq z)+esDx>bC15RelZ5D=0->y!Q} zO7sO2$&s;JY{Uuq*;uS-nP#}uY@58+q-trDA%lv7g9Uh*EJWoO5XhG)&Y(Q}B0j1m|ybZE+tW4ep_2ff1XmGZ8vw^21 zxbds&6OeHO+0AKiXS{L53tYZWo>IBoN}CU$$=%!F+CwIw#oLY#rP29{$;A%ZqwH{u z7uO%YU=K$0f+mkk=K_i{z5xcE8biDiBGL#m4Zr`mhV%GNzv1Mr@_Bss8qB>!$=&61 zLI8H(QJzI~z5;bAD%}20kFpy!8gIX@j4P+=jCn~3>Ca=^Kc=i zQH+mHDMPx$+o{}>eOWf1sskz8KLxei498qU%~ai7?)rBBp!m=rlS~Wv@&lySp}8vy z#Ae@BF!a6{jfr<*y0{x9_m&SWnri|K0*#uRR*C+Ikyb|>oOVq$Sw$|>efhH~ zoa|+Gjm{#g`L!}%M!y{cns1Urh>lAwYSBzfogk<0AKmFK4wfUQb-2Ur z$WT8L!%!luvfz#6_Bz*w4CLQM^1O)1K@Z#*#}eZX`ncDJX2X4Alcc_QBR1E0Cc!hmuWSchhz8&BYxv~%zuYiQi+{e)f0vvAvz;N1vwB>8Z%P|0~j{OB0q4eFbL$t^IVXOk)$K| zq@h8wR65^-uCQ8l0=ovIhf9)mpL4=#Y(e`8^kw{#TI_js=Vb56^TXv&`{LI>d8f$!v zh<94f8UPIx4zi%!>A>(jCI!j-lT+}ktzqILe?wUCiS(*f_KWTh)Pk7JQ-NDf+D0_< zs1M>JQa2_(2Ftk8R?$E_6VX@S%CLp5>B5)oDHehR=)uQ5{spEoPf>BNPszghNwuYPonhL6E@*vS{3@BO4Y|m z35#casbN>1*dMFqlf^_zvEblM*Xfc=JP0bT#WE>> z>Kbt4FV&vqrotohO#7Vbn>9tkpEKohgB$-n%Sy#FkVxfFyp1TLU)g>rd%UOCV^r1&;6ueaOz(;tO@#6{7TaiVHCgPFSU8YSZ-dgV%>QyK9zESL3Z8pTr7&=Ic z2wNVS%1j&iBqntD;(sGhEo0B;)Ef=6BK)|MJQ?o8GgZJaGIm@dp2XY(@cFrWp!xtv z@fJe3jUHOxdY0jpqZUneL!;l)ya7sPUUfg&#GjES9*_Veb|v&N&#LGcSd9yG7}l~H z2Pd++g*T_A4Jj)*I%Zttl+UM|Zghg?Y;l-Jr*c-S%&hqHXH|62s-ik`reIDT$hapYe;y3?Z7iST=%K~`$nh2VH9 z+UE~8svDxoN%SNUazJ_ABvMW$b`f;y@fdP&lA=;y8oMCurVR=1%wxX93<>UK6h0~W zf*bM6Q5IgMAY`=n3QFJ}X}%QRkpB9xS+DYvm$|L>B-b~UGsG4TKqS5f*g^2JO7Ivx zS3KHy+DeTPq6xOp*?N4+6P%QQ`=z?Oe))s8ecX+#KHXhQ=pp4WCR$>&-uwi5H^R*3 zZucHxw<@kEPgeFS6%eKdK~3N=L?8!Hv{)SA^*X9R?{=RgkfPogve6)xgF;K!~s4q7Kt4{Z)v6Ixr;7TRL zCwIqqayM;#lVC$R1k8Qol1;UU>DBSO?Af@itQ*;wn@36lK+5THX1vjdy+Ucq!EcMa z_=80FQ+c%0Nd?BSn7FCjpcF+~?~6FBbLn}_JOGYQj%Mp4x9bkyN9U=xp^W?=acqQh>1E{a;B<1|tR9ZAx+gTA_h`wo3jL%T?ncRWd(ifSfS-3!nI386&0P;|( zDJ=1OpBj-*GTg3v$WOPvJ%z5RK-ewWLXM8s)BJ zN!Cx4iQc9R^xUR=j5li!)h4>}O>g^56tf2d`LWYUMNCjuJJ?iF`T@uW$_TV-6}A(^ zoZA~Vk}5-f-VSIJPF_+ax`Di=qbr6gEX>H~m*|a(jIKuDNeFPHG%m}=RYn}dUU2;G z(qOWyEe6obWfac#=1FOj@e-yKl0M*Am=CDkb>>}#9W@mi_i@HH9nDK}=3Mi>VK2Qk z+?}t4+EUmv2M*Z3Qq=V?6dx0YkpYI`9npHHguwCGLQPhwvxi^~s;+oyI&wH<%CDdQO3I z#Mn<>?Gx>m#A89;cG9ygoGKFdWbHa^5%o^QQsB^gDQ5UD^^ZU%a z8^k6+)Kj+eTq)Uhx(O;0C$vm}ET}+pVY;W&=e5|`nqDZVWxJ?OG7t5} z1f>e*v6K#^eCGHB;6 zWUJNGc}!L|)H1Xe*N$S}gwfVML`|c0PAi_HYI0yyJJ}RyBL>Y+aB&&Zk}-#<^TB5W zGJk^;-N@<1x(W;3tNU%tC>qo$@xw82|UoB_809wEjz@P%#aZ5Q2#*Z zqntZ}vf!@pPJp;u{AtciRLh_u@y&yO_$nL)@h(PHC9b`24*TZEbeK=BDwNNs$sxX_ zCSKx?zV(g+oYgk|^}=P#n<>17ac%w;fEQYbwt%rO>PaAskW1(F0nW549ZeFIzC8B6 zBjT$F_cz=vyW#d4kjGQLHv!4+jEu+p1^bdW-t!!%cNbpiy7p5v?cnbr4}PJ9@R$*M zAR{U|Xo+nWgYvi$)+0=L*tD4yeIHe7!23>D8oa&H9yAAP>3p?}x5L?R_SAfU0HEM9 ziJt3Hm;Hi$GhNU#>3*Z+Bv{5PWCc}}XA?bFKlp?Q?z{)X=a%ZT>3BzWzg7`u+<4Ssrr>O%GNvxVz| zVmxmoWU3vqyEi7dP9YxzUsM^#&mT%0@LIP&F9h8NYm5V63d8mbCh%{R@BvF=2Oix) zuIbvQd7NW5_h<_ls_uuVO(zahKZ{x$vzcZ-ZMHyDuX{~6G2wfD;fTuV7-vp~s*#1Z z6b-OI`od-xPc@4av8C&4uq9uFOS(!mZ6$1~u5EXT;~d$B)#sKf zKYgt$f|b)4_0E|uA|JRee~|${h@%5gXE3r7KI_1mw#v2#E})|j#ZK_6J5fEuA)&;4 zGaIc<^|eW%`(*obx_M1(gF?8%Etw)h;9hPA{>n@sk9XfA4 zV2+qt?iYv@K*;u)+}tOS=a^XdkX#uBFh-T-v0%BLv))z5TQT~AR6^N%KDy+<=o7uh zb?aZ;VT*Q@gDgA?j(hvLo0t^fMO9yC@bqb8V`oll;vEW2(utVtq@uzX&1{>bJKJP= z4HGpqe(0~iaP<$wFbc%6900;U?c{IEsZCzccURU)jsPZpAlVwI(wTFhT0Lmgw{5NU zqm^#f$oh&hzl`^%OGAK9H{+RSAqyegM11jAaMtE8S&BVo=&1&*GpRIy8%B#DxM!;+ zDmc-&QMTs#&-Z$V>(iu)0Rn)Ao>k~?{`zGT4sMwFDqbxALG^2SC9$XxK zuBfg~`FVKW?dEjBJ+^biH^%42L3}>e?6?A3%H))u!n}}n3mYNqLC<%+5Y8iXWlOZ$ zDOLz?Us|<4`3wAicI9Y6nIQk#WqUWk7~BT~0uuGQ(?V-a!`m2mV zV&ylGz~gcx(!5si9Y(?} zI^u{#$Q!V@zNz0xHvy7s9ugqu2wOU!e3aW3eB?Pq<3sBH*Ptz0eJrWv?*{KKE_8`r zH|*EPyP*?*c9ID6TtlusFqI3S^*HeX;)0_fFZsr?lb*rK1&DgyxxY{#XTWVu^8tc_ z$DuA7Nd(5By#0FHsg1DPdZ=`_X1{s-h$m?q+G`&G(}UkQ<^!}3oS1>%2Sv2Hhb}s? zyx&eicx1p;vsdZk3lr7`PI%{Xa`VkBv$L%5axn?8%y6dT;K|$|AVx{S{76$AFC@fe z=beqIk>Tfck?)$aB~PiJDRt2v#bASFzy#4r8zjR1K*>7E?LE?~t<)()bWE_`Xm;-I zn5)-yRJqpU?g((VFD$^D>@D&KI_1Yq%Sg{(p{XwBW7G3b$55XF9}rE7ay)}h>?$Z- zasn)33#D-vC4Hp2<^;M^j}lpCoyCv2tctmL<{i4yo4?3(Dl@DOOl9>+c2n>d)Wo@n za$2yBXuvj;$8WfOIN>hHgL97P@Lm;9rq`M)Fst?J8UX~FB9)+9TNRFfEK1rgE@C~k zu3G=98%DFZ2|`s&P{x~U=5kyS$e^O?5o~$v0E&tVdZw)z z&sv*mX(@5TM>!?xCoC?b({(kVswJ#i%_AP<`2cn$-YFAbo<9;J4YdP)&#{|bRAd2a z5s`??6AfUVaqfzT66Ti%r_moJCoz_q$uzbD1<6V~W;ww~EFbDgDQngw zvjXGMiSFxZKt3rQSXx&a^&vd81a|FfgR6Az4HyEp>pT}rxN5n1Gg*cNqMY2qy#iM@U{|RFbApXCO`=&0l-O((%&06T4cXtgk9Ysbg*n zMEuokJOJqyDHWnTxNO`kVoT@74k<|=ZCRdey5{DNqj~|SoA;va>RuRKdxKl1Y=E}) zRdy4=;_e}ve#uE%D#*Wa-sV;9lJuGX= z%E(TQl$~4^Q_coEeop2_0ewDS_I|80YH}H1(`@9~1F{?H1(MZwFhV>^KvMXG11_ls z27|NULL(|Mxi2E*kmKu2IYvZvdAsSx`bIsRZ-2>pK&+icQ?`%k!p1b5sl%gc8&_-W znxxxf0}oNjeSp8<)+f*>jZQr-;wc>XjdHk`pmyjBWXNAV?G(;PI0iAto7GM1gud#4 zl-hItjA_Nk-0ykao^#VFTDTu*D(7sJ9679t_O-Jt=-GFK=g-8)=Zmtpiq2=n-AmCM zzhUpFi$N`AQwX1LMp$~(gSbuCD9tseuz9dEDYnz=J=>OsC<|!N&#M1uvj3pqBhIJ7 zzSkO9Ldx|6Yj~;Is@PbXMy~Y9MuQ~{fH&<_$HRS2W&IWL%-)*JbN@RJpADYb1G<=K zR=R#{kwql_Peos%10xcv#n!SLMEMsOE85U^r{2<&piScKCLuSv3eP6JcBI%i9=Mm@ zhrKH9OfanR%nQ>A%k42c9$|qDm(OIehqi){SRQ+`P_1jqRdjZ+8Owa_B*iQJ0MEw@ zy$^!+N0SlV?w z-Y*Y(Aq)Y*NR%dV0a>ac^lbj|7SQTXnNvHt!%i(m-#Rvwt;>TaFKraZWN0qdEUmWU z0RHrTsVP^4Vm~LX(Hs>qus-4v`uqC4KA}W|( zH{vBPQwvoJglRre6+q;5V*=R5a?)Ju6f{S2jNYrZl|_g6ay~oqgS}uZ2=Oe0sc8ehP5rWsjRgG$-q% zy2>lct@~mL0-^e8(uRbcG)y0Tv}^}H1qI8rjLzhU2i4-J*g1oi3T8J!gXXc|Zlx$G zjjj4pm=}PgJij9H9y;J_02-SN&pvPJwXcAlkNc3zf*udw7mIgPxGYQK-*D?|iTO6H zqS&WZh?}%A&x2_aa7zK15XL>Lw?&HnUoyAjCeX+RBR=|}44NL6%9!F~VCd0+q~71C z>~Pr+NVe;({Taov+M$^xWF^F%)iV#3d2gpS8RVSUvvX^8EtF4N4(#5I)0xmfS2Q)1{`|iK*2Jx|LUEQ7wa2ncuDPX zfiowMRksDZC3qNSq&1jO7t3Jtm7#?vpqlI}L*V`AkU47_Pgu(U`dQkh(P!U+<%q`y zce~n^VlKYZFmo$Ow~`z!GB1r6n_rOs^C~1swgLCotI*;Ys(a?^ftVVk{~W6kdXEaQ za>Jj+T%E_$2;-9^00mVDhF~J0TaZG4rI7o8&ih%InN)78PgbjMiX@6PT|t8UT^4d? zOBeYBSYDzVF^ah~zGf*`E@G5x+4ouB6A52PK&A+DGt&0(%Xc9StMOb;mUDbbii3=I0wfpMcaFsgbJh*O~E* z9zhE<&L-N78Dn1JV;s{G{5kSWtv4ShZs$`ReY2TIE*d7AEw1e?6iJC7suAC15as&; z_XAY{E3~e*@(1QvCKEJ|K{nxlRgU4xCqlTWci&jF69Y|imNXeX6~YzV2$d%uR|%@y zSd6&$sr;T|)$nfz@q!l~Hj=_?b*BDL$q&FGcA zs!A%`m;qHxYR~d=VJn6%wAw^CEI(a6Cpa77=FzVuyLk;g{T>|q*_?U-pm&8v&Ej&x zk!VThSS)*S7C=VPIo*A#ZhtteaTlL2v+!!}E%I8sO+hrvSRd9%sa=VOlOYGKnEkO~ z>gv8r`JUsaFjb>jELOz3A++yI9*^}xxi}2WS`S{!^nbczRRYV^STLyHF&Wjr^ki@6 zH|#?@bFHe=GB&tNd}$a4IBgX0_y%FSSa+%t;#Vk0l!s{9mwc67DBb2*`JRK!IH~4C zO~`0e-xVJjxTsQfl6rV}&#gOo3Ewj0`J+L?S!TEax%|+b(C)xpsYff@3;&!t&v@+?_f8PR z$BC$dCMWv_O!`atjB+3Gsb+qBonFNq5w}Xe zqva@U(#Qh|KIO;jlX-u(Rz((D0lmRK{}Yw^C&fi+?Fn2ZfKju|5$5QTgFTUBxzL*H zVKlTAe$_b`ul`F&8itxkZ?@UNg%CXdUkHp8r- z%Ce)pPN2Zz>=R2Uc1b#2+HI9zCTwYOUi;BLh9-Peg%lz<_7SL7bqjUn7`rW5) z@p9sEk!6Yrz*#$t`HzvtL_|&a3JtKE=XJXTPqlg-N4#AG_^&;r*M)@@Uy%oi1VpCH zZS1}^BkC_}*?4rTXzDt~C){c0?TQWTJBR%8S?F6_UR(~x5?xqJ)D#4dZ}Na*C_2Lp zRD`vG(xgRA7v_pLPZPE}LLeiatb*jF*5W3P@P^LQ1stx2*ku!6ac#+dp!2l5M9rt1 z(b`Ahk9)*nFrnuSUdUoKhZpz69p0v+9#Z!Rio&!MF)2;%Oa5WfQ&5=(|7ZBpIv zlDK9=IQw3KIdcB>r>8$zy zCX3g;4q%!aWQsM9a5=5{rA+e!FT8H?^uqgAD@*|qXR8L%K9`6X7$;EBILl~JcdYrS z)W`Dzm3FoR`faGtzF%`1swP<}DPV;RemU+eI6-*Ns)Q(}YC10s9r%guWtx;V9N`#F zExr_4Y2Pb86!V15#OQRc2~GPPzYSe(d~@(Oyfh(KiMwNL_b-T%n#yn;y*KFj9?s0YG#I! zZBX1*P?X&y@>Ss~b=}l8v@mD^7$66sWbdmqMCq}6BH`e8H)r_XDdZ@yuCxJt@1V7J zbh#BU(}R>uR=ho7$%0Ej_EzMH3KxibKIT1RA*r-QZY|4z+&jha;>EX@gT7tfa)_n> zKJFQ7B!!Rr`k^n43<5&>`k_w*_}7u+FKVFx3^QC`)9PkcUIcC|G#T+tl_dI}S2^ z*>I5kDybddv;u+1;d|tU;{mipT@ohVGJX9jY}@Fx$rqBC$lFSW57Tf&3YWOvs%#lb zmmc22z1WwOlYDsDr~Me-8og>44H4zE_sL>&ll5smc{fGHnbI zsc5lEaOuhygplhh7XW_9b+rp{$WMd!Sz*)nF%bnOeB|5xXe7enN%;m*rY`-=1h9mc z=wGeqPwLB34VrPgHxKSZH(Pk^5^br9niCkZ9DdF05GwuLx+KqWll!#7ARH#C&TpCY zwIt;%B7GDekxUA)j-$6TvAP=8LU08w+1%NDSB=vPx#P}SFwUABMV zpueI;5IfQ1p~^L)z8Bc0{}CpNcsA+~Tw_%RxkrcBD8G?GyVj0jdY#OiIMs| zbfeH4gxf6x`@Ni2PD+{~J`Zl0zTo3T^sX{|@aYa;WN%qZ8k=abheQJI1mlVMLbwBB z{Wd>d5OX%bK$*?WC^anfHY6^i zC0DqA5M}B#QzR@dqXkzK{La3koCKdxq%u24Pj2#uS?R7$vB?(tZA`>(7fy&Y7YD^$ z5*fk%5qjqLl)ibJ^X@8rCW!5wb|z19-I!0h-Nd2*CgKj_q@NKRVQJ%y;!=GXY%M|a zl%+J?{2El>0|y+jmatt4TBR!WL`B$(^!hT`pCIi9?n{E&H)Rn4{l|DOq-bZID}Yjn zCe`Hl4r^LDY+AHM$46OY=lC4F%CpY4%4ysK=cSyqvFN*H74{v(5_x;aTk1plZ3aZU zZCXq~IXII+Q8iu(y;@nkv}^ zoQl>1Px*am;n&SG_PrbL1Z)>0mClmI{l$smhkh^0u34Kinz58`b{=^Hkl1I^Cf5CQ zWx)xEaZYgEH9~G@57}rS=L+6H79;l1@Fdkk zf(>6UNomDRJsm}$muQb29kpgm&cWtL$^7DG&QawThtq%A-%m$CQ3AfVD^ev&n?G#; zd@N03v;4?^a*9RlB3@lbw1QwZIo7a~GE&oHNcI`3&6fI;DMNo@tA=iLgyC2fwlk4| zTN*h5k)8(5(JJf8z}>cM+v-{<2!}o=6gSaU^F*)~cYB#-8??ct&n6eW0JE;((GSqG z#c&_%elDlR`Eg&LJG9)h^y&+jyL2%TfZMvpJq=vyW$9|CE4aTkr^B6TU z39DhWF7z0EP%9`g@p+^nR6qke8TJI$C3b}^(?nI-LpDocpleZ#kSLA5kD=MX9R<}m zsbWXayNO3WjvzZ~{b@*RxxjjQK-RNj$`YQZ`g&enk(I;thl5Kc^HX2cwhLLv74Hdj zyylsDp}Jyrz+S_1+l8a2t18}6zPq;p!IY=Gvoi$t{CuOjkp4*BJD3Dyim1mVrr>Mtl62_3pqmz*h*5EFk(_ z3?fqFJ;~xdjM4+O0hgpHpO`J52wMgv2&4QqpGmo*>zAr|YOjE*de|Tk28pPW3mjAX z=%bZ$q?Qfaq9FR0htx^Ngsc?H>4=Hy<6#aC0iMGogh9#*CAP9Y|?iZa(28= zFx@q={=_C9&&8W^4cA>;6#D`31q)#AU0D zFc<^hnkSJ9JaS`v|H(F~Xjp!jUpx}Q#u0&1=O=!b>9t;K1F*f;aDJNac0uHVWf2?H zzrbqPMGM6f*95TAOTXz7W3_O}d|;3YkD53KNydC!67HD&1@`vs0!U<{g7dF*lbP3i zs7>cUUYFN&l;GEj0|FeM#RISp@FR6GAqZ{qs|kPL$bZ1Cs&FyzgQut@Cu5hL%}pi7 zabLdMQo!;}p!ErCdVtS_3Pv)>4wbu*%~Q3)W%bIH;ea~T9)ke%d^ukO0Un3!Yn+5bSq5Sue|EBB2 zU%!!OQ9B0xH(jD*=ndV~FZYc-ZP{69f8zx_kKWKVzb(FLbDEd`=LGg2cL=vWy`g`M zI(*X(vQ-8BcTUl7yvQWh-Vrzmh&Mb?KH^=qkq_(}Y4}}(Z>*(BlYJwt&^6+3ZvfA_ z#q>bIFu?y6MZZ(_UW4cV=HbEqZu}`IAg98=Z)C-kg&8E}#9y+3jSY-e*XfZfIJH)zux{%`}Ax>EegvREVFpa#OCJm{3JQk) ze+_$+WcY>=1nfVI+!X(R6A%AaIxuPg2cpK$72;JC1#o--68^TzN7AA32zjG zle{uv5!gC88(3Ta>+|X#2DJD77O&0vNBl+a8{fV8Gxm+-1g<}L+hM%FeODil=Kw@E^Q288#3w@Fw8i>~g;0iIDkiJrH#e{cjzXB$m-NpdcWsuM?l^4c=Pm zj}94GMBpcB93aWi8$EBnH{bBNs{G-5>3gGR`^$tL(JPMNwZ5GQV>-a{VcP%L^!q{d zcD4Dh@ESh`-Pg5;fcC%7hu`qufY%87Q(nJ*|6P7h$pzim5v>1&_HQVVbmaH&KfHtehqTp18ogiKRc%v?qQ`^ELc~NS+{lqe^G$ zH}SK{AEMnPG|)L2>rIsZ7I8q1cqQ@be(Bc^Fu&1jZT`wg0K~Jw{-@r{@!z7sEdPjR zoFIFnmwECxk;3ucdI|pS=8oa)yUkZsw$LCTzaOdpDK&oLE`RV98N~lomofTVVxapU zgHY@d{?Ut6YwhuZ*IwlRBZxG8|7`{|aCs8zZ&S3~Z4={O&FDu30ipVj9k16KKef-m zPpxDu|D0gI9TqOkZteZ53jS3U&l@(z5THs2AJBf}|31wAjFHbDUxA1Hv7>pM?r$5u zLCkE<-EF%=GA7_H;T10{>Z)+lmOIXha|n*G0f1^oOcE?M(l;}RFBYfkZxZt&0i9)pvjSJ%A%hyUw3Dx4Bu zZ7Y6#$nw9j?W*+u`X3PW&+vN(@eu*{)thF&JNAZgxBQin0Qh+n<8LSY_Z0yIgzpVr ztn!Z{Lmz^F#?P-mwujaN@n?npmd1c-?hpN{x%u@m&+U5r5i*IY6G!HE2;TkZGj!|Qm15WiuRYz01blVZtBL%#a&_dH|< NL3xeJ select(final Query query) throws AirtableException { if (offset != null) { list.addAll(this.select(query, offset)); } + } else if (429 == code) { + randomWait(); + return select(query); } else { HttpResponseExceptionHandler.onResponse(response); list = null; @@ -205,6 +210,17 @@ public List select(final Query query) throws AirtableException { return list; } + /** + * Performs a sleep for random time period between 30 and 35 seconds + */ + private void randomWait() { + try { + TimeUnit.SECONDS.sleep(ThreadLocalRandom.current().nextInt(30, 36)); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + /** * Get List by given offset. * @@ -491,6 +507,9 @@ public T find(final String id) throws AirtableException { if (200 == code) { body = response.getBody(); + } else if (429 == code) { + randomWait(); + return find(id); } else { HttpResponseExceptionHandler.onResponse(response); body = null; @@ -538,6 +557,9 @@ public T create(final T item) throws AirtableException, IllegalAccessException, if (200 == code) { responseBody = response.getBody(); + } else if (429 == code) { + randomWait(); + return create(item); } else { HttpResponseExceptionHandler.onResponse(response); } @@ -586,6 +608,9 @@ public T update(final T item) throws AirtableException, IllegalAccessException, if (200 == code) { responseBody = response.getBody(); + } else if (429 == code) { + randomWait(); + return update(item); } else { HttpResponseExceptionHandler.onResponse(response); } @@ -638,6 +663,9 @@ public boolean destroy(String id) throws AirtableException { if (200 == code) { Delete body = response.getBody(); isDeleted = body.isDeleted(); + } else if (429 == code) { + randomWait(); + return destroy(id); } else { isDeleted = false; HttpResponseExceptionHandler.onResponse(response);