From 2ad4d5627471199a9376237aa87c05155ee4eacc Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Fri, 14 Apr 2017 22:40:43 +0100 Subject: [PATCH 01/25] renamed bacl --- .DS_Store | Bin 0 -> 6148 bytes .idea/vcs.xml | 6 + .idea/workspace.xml | 374 ++++++++++++++++++++ {libs => paystackjava}/ApiConnection.java | 0 {libs => paystackjava}/ApiQuery.java | 0 {libs => paystackjava}/Customers.java | 0 {libs => paystackjava}/Definitions.java | 0 {libs => paystackjava}/Keys.java | 0 {libs => paystackjava}/Pages.java | 0 {libs => paystackjava}/PaystackInline.java | 0 {libs => paystackjava}/Plans.java | 0 {libs => paystackjava}/Subscriptions.java | 0 {libs => paystackjava}/Transactions.java | 0 {libs => paystackjava}/jar/PaystackJava.jar | Bin {libs => paystackjava}/jar/setup.txt | 0 15 files changed, 380 insertions(+) create mode 100644 .DS_Store create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml rename {libs => paystackjava}/ApiConnection.java (100%) rename {libs => paystackjava}/ApiQuery.java (100%) rename {libs => paystackjava}/Customers.java (100%) rename {libs => paystackjava}/Definitions.java (100%) rename {libs => paystackjava}/Keys.java (100%) rename {libs => paystackjava}/Pages.java (100%) rename {libs => paystackjava}/PaystackInline.java (100%) rename {libs => paystackjava}/Plans.java (100%) rename {libs => paystackjava}/Subscriptions.java (100%) rename {libs => paystackjava}/Transactions.java (100%) rename {libs => paystackjava}/jar/PaystackJava.jar (100%) rename {libs => paystackjava}/jar/setup.txt (100%) diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e9366c49d1dedd013f201c048d8061a31623708f GIT binary patch literal 6148 zcmeHK%Z}496g}>gnY64*OUtwnz9>Z61R_fy=?a-we@!*xDf!&M3IC@GP&dXtsmUA05 z>=JI_1-ymj`A)3aWnD)PeMH1f(3$6E9xrgIsO_W_Q2!ZY^P~pU<7fr60{@Hxe1EVg zajYnuNEBNKW#S4zn5AlA(9%Cu2D4a;77BVJ731ui#R}3b@soqk&io%IR84ji{ zA54wR)D4A+(W!q+(7`Gab*>fA3d}38CW|IN|Ld#o|MNk*q!rK#{8tLFY|XA!X-evB zU78#}Yb{DoC~@Pwi9``XnL3Vz!;j*Nl!Q^6#T~+m!ihwxA=4iMLI#~_1x{3fUk7is A`~Uy| literal 0 HcmV?d00001 diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..0488919 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,374 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + DEFINITION_ORDER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1492205848688 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/ApiConnection.java b/paystackjava/ApiConnection.java similarity index 100% rename from libs/ApiConnection.java rename to paystackjava/ApiConnection.java diff --git a/libs/ApiQuery.java b/paystackjava/ApiQuery.java similarity index 100% rename from libs/ApiQuery.java rename to paystackjava/ApiQuery.java diff --git a/libs/Customers.java b/paystackjava/Customers.java similarity index 100% rename from libs/Customers.java rename to paystackjava/Customers.java diff --git a/libs/Definitions.java b/paystackjava/Definitions.java similarity index 100% rename from libs/Definitions.java rename to paystackjava/Definitions.java diff --git a/libs/Keys.java b/paystackjava/Keys.java similarity index 100% rename from libs/Keys.java rename to paystackjava/Keys.java diff --git a/libs/Pages.java b/paystackjava/Pages.java similarity index 100% rename from libs/Pages.java rename to paystackjava/Pages.java diff --git a/libs/PaystackInline.java b/paystackjava/PaystackInline.java similarity index 100% rename from libs/PaystackInline.java rename to paystackjava/PaystackInline.java diff --git a/libs/Plans.java b/paystackjava/Plans.java similarity index 100% rename from libs/Plans.java rename to paystackjava/Plans.java diff --git a/libs/Subscriptions.java b/paystackjava/Subscriptions.java similarity index 100% rename from libs/Subscriptions.java rename to paystackjava/Subscriptions.java diff --git a/libs/Transactions.java b/paystackjava/Transactions.java similarity index 100% rename from libs/Transactions.java rename to paystackjava/Transactions.java diff --git a/libs/jar/PaystackJava.jar b/paystackjava/jar/PaystackJava.jar similarity index 100% rename from libs/jar/PaystackJava.jar rename to paystackjava/jar/PaystackJava.jar diff --git a/libs/jar/setup.txt b/paystackjava/jar/setup.txt similarity index 100% rename from libs/jar/setup.txt rename to paystackjava/jar/setup.txt From c81e7c54089c0eb99ccf23d87854408ae3a7e6af Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Fri, 14 Apr 2017 22:58:14 +0100 Subject: [PATCH 02/25] Set up java module system --- .DS_Store | Bin 6148 -> 6148 bytes .gitignore | 10 + .idea/modules.xml | 8 + .idea/workspace.xml | 453 +++++++++++++++++++- libs/.DS_Store | Bin 0 -> 6148 bytes {paystackjava => libs}/ApiConnection.java | 0 {paystackjava => libs}/ApiQuery.java | 0 {paystackjava => libs}/Customers.java | 0 {paystackjava => libs}/Definitions.java | 0 {paystackjava => libs}/Keys.java | 0 {paystackjava => libs}/Pages.java | 0 {paystackjava => libs}/PaystackInline.java | 0 libs/PaystackJava.iml | 11 + {paystackjava => libs}/Plans.java | 0 {paystackjava => libs}/Subscriptions.java | 0 {paystackjava => libs}/Transactions.java | 0 {paystackjava => libs}/jar/PaystackJava.jar | Bin {paystackjava => libs}/jar/setup.txt | 0 18 files changed, 463 insertions(+), 19 deletions(-) create mode 100644 .gitignore create mode 100644 .idea/modules.xml create mode 100644 libs/.DS_Store rename {paystackjava => libs}/ApiConnection.java (100%) rename {paystackjava => libs}/ApiQuery.java (100%) rename {paystackjava => libs}/Customers.java (100%) rename {paystackjava => libs}/Definitions.java (100%) rename {paystackjava => libs}/Keys.java (100%) rename {paystackjava => libs}/Pages.java (100%) rename {paystackjava => libs}/PaystackInline.java (100%) create mode 100644 libs/PaystackJava.iml rename {paystackjava => libs}/Plans.java (100%) rename {paystackjava => libs}/Subscriptions.java (100%) rename {paystackjava => libs}/Transactions.java (100%) rename {paystackjava => libs}/jar/PaystackJava.jar (100%) rename {paystackjava => libs}/jar/setup.txt (100%) diff --git a/.DS_Store b/.DS_Store index e9366c49d1dedd013f201c048d8061a31623708f..0098e72f0bf8a5d16fa055348e5a7e0578442954 100644 GIT binary patch delta 32 ocmZoMXffE3$HvagP|Q%okUV((--~a#s delta 56 zcmZoMXffE3$EME4P{dHmkjJ3MP|T3wnUkNKl#`#tz`!8Dz`zs-q&5D7!N$TO#?9;; GfB6Bu-4ZhZ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a7c12d6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +# Created by .ignore support plugin (hsz.mobi) +### Example user template template +### Example user template + +# IntelliJ project files +.idea +*.iml +.DS_Store +out +gen diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..a42ea17 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 0488919..e9d5024 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,18 +2,22 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + @@ -71,8 +93,6 @@ - - @@ -102,6 +122,8 @@ + + @@ -109,6 +131,11 @@ + + + + + @@ -118,6 +145,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -162,6 +409,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -198,6 +506,22 @@ + + + + + + + + + + + + + + + + - - + @@ -234,7 +559,7 @@ - + @@ -369,6 +694,96 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No facets are configured + + + + + + + + + + + + + + + 1.8 + + + + + + + + PaystackJava + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/.DS_Store b/libs/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..52d5ae364845c06f53cdad346372c1251406e6fa GIT binary patch literal 6148 zcmeHKOHRWu5Phaylp;_m8cmkt(s1Rz$~tj4;09tbB27zfNe@(#^;D$!G2IASld zA1;jS!U@Ic=!_p}cevQ2m8O6xP*kAeFB`J|pO>HiizK@;1x$f|rGTrpyX_WJ3VZ8H vaDLfSE_O(CkA%Ww62&*r)>EB@4AB literal 0 HcmV?d00001 diff --git a/paystackjava/ApiConnection.java b/libs/ApiConnection.java similarity index 100% rename from paystackjava/ApiConnection.java rename to libs/ApiConnection.java diff --git a/paystackjava/ApiQuery.java b/libs/ApiQuery.java similarity index 100% rename from paystackjava/ApiQuery.java rename to libs/ApiQuery.java diff --git a/paystackjava/Customers.java b/libs/Customers.java similarity index 100% rename from paystackjava/Customers.java rename to libs/Customers.java diff --git a/paystackjava/Definitions.java b/libs/Definitions.java similarity index 100% rename from paystackjava/Definitions.java rename to libs/Definitions.java diff --git a/paystackjava/Keys.java b/libs/Keys.java similarity index 100% rename from paystackjava/Keys.java rename to libs/Keys.java diff --git a/paystackjava/Pages.java b/libs/Pages.java similarity index 100% rename from paystackjava/Pages.java rename to libs/Pages.java diff --git a/paystackjava/PaystackInline.java b/libs/PaystackInline.java similarity index 100% rename from paystackjava/PaystackInline.java rename to libs/PaystackInline.java diff --git a/libs/PaystackJava.iml b/libs/PaystackJava.iml new file mode 100644 index 0000000..f2e72ba --- /dev/null +++ b/libs/PaystackJava.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/paystackjava/Plans.java b/libs/Plans.java similarity index 100% rename from paystackjava/Plans.java rename to libs/Plans.java diff --git a/paystackjava/Subscriptions.java b/libs/Subscriptions.java similarity index 100% rename from paystackjava/Subscriptions.java rename to libs/Subscriptions.java diff --git a/paystackjava/Transactions.java b/libs/Transactions.java similarity index 100% rename from paystackjava/Transactions.java rename to libs/Transactions.java diff --git a/paystackjava/jar/PaystackJava.jar b/libs/jar/PaystackJava.jar similarity index 100% rename from paystackjava/jar/PaystackJava.jar rename to libs/jar/PaystackJava.jar diff --git a/paystackjava/jar/setup.txt b/libs/jar/setup.txt similarity index 100% rename from paystackjava/jar/setup.txt rename to libs/jar/setup.txt From c85b0b74403560ee861f6a1019128d0f78caf885 Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Fri, 14 Apr 2017 22:59:28 +0100 Subject: [PATCH 03/25] Removed files --- .idea/modules.xml | 8 - .idea/vcs.xml | 6 - .idea/workspace.xml | 789 -------------------------------------------- libs/.DS_Store | Bin 6148 -> 0 bytes 4 files changed, 803 deletions(-) delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml delete mode 100644 .idea/workspace.xml delete mode 100644 libs/.DS_Store diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index a42ea17..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml deleted file mode 100644 index e9d5024..0000000 --- a/.idea/workspace.xml +++ /dev/null @@ -1,789 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - DEFINITION_ORDER - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1492205848688 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - No facets are configured - - - - - - - - - - - - - - - 1.8 - - - - - - - - PaystackJava - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/libs/.DS_Store b/libs/.DS_Store deleted file mode 100644 index 52d5ae364845c06f53cdad346372c1251406e6fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKOHRWu5Phaylp;_m8cmkt(s1Rz$~tj4;09tbB27zfNe@(#^;D$!G2IASld zA1;jS!U@Ic=!_p}cevQ2m8O6xP*kAeFB`J|pO>HiizK@;1x$f|rGTrpyX_WJ3VZ8H vaDLfSE_O(CkA%Ww62&*r)>EB@4AB From 73a38e9e3fb81eb2590e1bdcd5ecf342820c4451 Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Sun, 16 Apr 2017 20:36:57 +0100 Subject: [PATCH 04/25] Modified project structure to fit maven standards --- .DS_Store | Bin 6148 -> 8196 bytes libs/PaystackJava.iml | 1 + pom.xml | 9 +++++++++ .../paystackjava/constants}/Definitions.java | 4 ++-- .../paystackjava/core}/ApiConnection.java | 5 ++--- .../java/paystackjava/core}/ApiQuery.java | 2 +- .../java/paystackjava/core}/Customers.java | 4 ++-- .../main/java/paystackjava/core}/Keys.java | 12 ++++++------ .../main/java/paystackjava/core}/Pages.java | 7 +++---- .../paystackjava/core}/PaystackInline.java | 9 ++++----- .../main/java/paystackjava/core}/Plans.java | 7 +++---- .../paystackjava/core}/Subscriptions.java | 9 ++++----- .../java/paystackjava/core}/Transactions.java | 9 ++++----- 13 files changed, 41 insertions(+), 37 deletions(-) create mode 100644 pom.xml rename {libs => src/main/java/paystackjava/constants}/Definitions.java (98%) rename {libs => src/main/java/paystackjava/core}/ApiConnection.java (97%) rename {libs => src/main/java/paystackjava/core}/ApiQuery.java (94%) rename {libs => src/main/java/paystackjava/core}/Customers.java (97%) rename {libs => src/main/java/paystackjava/core}/Keys.java (90%) rename {libs => src/main/java/paystackjava/core}/Pages.java (95%) rename {libs => src/main/java/paystackjava/core}/PaystackInline.java (92%) rename {libs => src/main/java/paystackjava/core}/Plans.java (95%) rename {libs => src/main/java/paystackjava/core}/Subscriptions.java (94%) rename {libs => src/main/java/paystackjava/core}/Transactions.java (96%) diff --git a/.DS_Store b/.DS_Store index 0098e72f0bf8a5d16fa055348e5a7e0578442954..8af2278ac2337d953daf221d41473ff926d7ecf9 100644 GIT binary patch literal 8196 zcmeHM&2Jk;6n~SX#BPCXnivw5!-`y5H9|=#v^`XH90#yMiJOhmL`gCGF>$6{@2qy$ zNz*8j51hDhqNm9Wp+bQlH<1BL;^fMLKe z@NZxMpV^}1j(P4Yt!WJdhJpVj1LFQ*V-;A`*itBO9oWbe0C5PrWkDJ90O@0EENW~i zl&%<4We-HV5}jfY<&Jt=m?IW7wiGINAj%zx9+~J2g~-v-&z9yuiV96@7%&X#Z`n zTeHUJd6c;NWZN~XP)+C#x>ntYuCkPQEM(bUE-#Ln zHL<^c;qsMf`@+oZ!L+@9>C()!eev}-4-TvkbGb9;-k7_-9v^)4+2>z;`PJ9o{P>fc zG7x=-f-!a8X@5qkLmcyWG$G{sHX-*dtBaE7UwCoE8a+KWIzCz`6kd9{FfloKre=+K zu79VVh{??JkSC?ENjK^V3!K>XSyW%k=-td=_h`*J-DA2;gZH0wt?b2UGybGQhI>1q zG?MX_wzg85t#!%kHESgG6CQ?Dp0bSbXnixq1*>GVQHi!VjwrZXiiIj&rAdm|=d-r% zCW#x>X=(3P=z26Vd}eORY4CD6Xl6dZZI#hanX8yK<%*%8U~&!1A{91gvkFF zj{pAuRIkAVHw+jCo-G4psO*$Wcn$5>o!-k4xweh<1FWJ5yOu)ff{jea5oJ1#*!jZ{ gWgAU}Pf=q_A@*Q-MjrzH@h#mv|K-w{=0D89UyGck>i_@% delta 327 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{Mvv5r;6q~50$jG@dU^g=(=VTs%P*%qO{}~u2 zM+qCo@-P%IBr;So6f=|n>12j%hAbdm#*pZllb@WFlb-}JhA{|8YXC7=Cy>UeFR8q^ z0IKiDg5uTHW(GP6M&`z~IttYmX2z2rh)6RXIx_jMh`irXd`6`dC+8&P=jSlu zQ&bjQl$VpAmkx5< + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..bd7fe78 --- /dev/null +++ b/pom.xml @@ -0,0 +1,9 @@ + + + 4.0.0 + me.iyanuadelekan + paystackjava + jar + 1.0.0 + \ No newline at end of file diff --git a/libs/Definitions.java b/src/main/java/paystackjava/constants/Definitions.java similarity index 98% rename from libs/Definitions.java rename to src/main/java/paystackjava/constants/Definitions.java index a1cc4dc..b98a606 100644 --- a/libs/Definitions.java +++ b/src/main/java/paystackjava/constants/Definitions.java @@ -1,9 +1,9 @@ -package me.iyanuadelekan.paystackjava.constants; +package main.java.paystackjava.constants; /** * @author Iyanu Adelekan on 17/07/2016. */ -class Definitions { +public class Definitions { /** * The following are URL definitions for the Paystack API. diff --git a/libs/ApiConnection.java b/src/main/java/paystackjava/core/ApiConnection.java similarity index 97% rename from libs/ApiConnection.java rename to src/main/java/paystackjava/core/ApiConnection.java index 806b7ab..116d40d 100644 --- a/libs/ApiConnection.java +++ b/src/main/java/paystackjava/core/ApiConnection.java @@ -1,7 +1,6 @@ -package me.iyanuadelekan.paystackjava.core; +package main.java.paystackjava.core; -import me.iyanuadelekan.paystackjava.core.Keys; -import me.iyanuadelekan.paystackjava.core.ApiQuery; +import main.java.paystackjava.core.ApiQuery; import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.JsonNode; diff --git a/libs/ApiQuery.java b/src/main/java/paystackjava/core/ApiQuery.java similarity index 94% rename from libs/ApiQuery.java rename to src/main/java/paystackjava/core/ApiQuery.java index b6e8562..470d32a 100644 --- a/libs/ApiQuery.java +++ b/src/main/java/paystackjava/core/ApiQuery.java @@ -1,4 +1,4 @@ -package me.iyanuadelekan.paystackjava.core; +package main.java.paystackjava.core; import java.util.HashMap; diff --git a/libs/Customers.java b/src/main/java/paystackjava/core/Customers.java similarity index 97% rename from libs/Customers.java rename to src/main/java/paystackjava/core/Customers.java index 159a3fb..915a50c 100644 --- a/libs/Customers.java +++ b/src/main/java/paystackjava/core/Customers.java @@ -1,6 +1,6 @@ -package me.iyanuadelekan.paystackjava.core; +package main.java.paystackjava.core; -import me.iyanuadelekan.paystackjava.constants.Definitions; +import main.java.paystackjava.constants.Definitions; import org.json.JSONObject; import java.util.HashMap; diff --git a/libs/Keys.java b/src/main/java/paystackjava/core/Keys.java similarity index 90% rename from libs/Keys.java rename to src/main/java/paystackjava/core/Keys.java index ebd9cc3..03c19e1 100644 --- a/libs/Keys.java +++ b/src/main/java/paystackjava/core/Keys.java @@ -1,4 +1,4 @@ -package me.iyanuadelekan.paystackjava.core; +package main.java.paystackjava.core; import org.json.JSONObject; import java.io.File; @@ -10,17 +10,17 @@ */ class Keys { - String TEST_SECRET_KEY; - String TEST_PUBLIC_KEY; - String LIVE_SECRET_KEY; - String LIVE_PUBLIC_KEY; + private String TEST_SECRET_KEY; + private String TEST_PUBLIC_KEY; + private String LIVE_SECRET_KEY; + private String LIVE_PUBLIC_KEY; String KEY_IN_USE; /** * Used to initialise all necessary API keys * @throws FileNotFoundException */ - public void initKeys() throws FileNotFoundException { + void initKeys() throws FileNotFoundException { JSONObject keyObject; String fileContent = ""; File file = new File("Keys.json"); diff --git a/libs/Pages.java b/src/main/java/paystackjava/core/Pages.java similarity index 95% rename from libs/Pages.java rename to src/main/java/paystackjava/core/Pages.java index 7d3ed3b..753d0ea 100644 --- a/libs/Pages.java +++ b/src/main/java/paystackjava/core/Pages.java @@ -1,8 +1,7 @@ -package me.iyanuadelekan.paystackjava.core; +package main.java.paystackjava.core; -import me.iyanuadelekan.paystackjava.constants.Definitions; -import me.iyanuadelekan.paystackjava.core.ApiConnection; -import me.iyanuadelekan.paystackjava.core.ApiQuery; +import main.java.paystackjava.constants.Definitions; +import main.java.paystackjava.core.ApiQuery; import org.json.JSONObject; import java.util.HashMap; diff --git a/libs/PaystackInline.java b/src/main/java/paystackjava/core/PaystackInline.java similarity index 92% rename from libs/PaystackInline.java rename to src/main/java/paystackjava/core/PaystackInline.java index d7fe95d..fc7b8ce 100644 --- a/libs/PaystackInline.java +++ b/src/main/java/paystackjava/core/PaystackInline.java @@ -1,8 +1,7 @@ -package me.iyanuadelekan.paystackjava.core; +package main.java.paystackjava.core; -import me.iyanuadelekan.paystackjava.constants.Definitions; -import me.iyanuadelekan.paystackjava.core.ApiConnection; -import me.iyanuadelekan.paystackjava.core.ApiQuery; +import main.java.paystackjava.constants.Definitions; +import main.java.paystackjava.core.ApiQuery; import org.json.JSONObject; import java.util.HashMap; @@ -12,7 +11,7 @@ */ public class PaystackInline { - private static ApiConnection apiConnection; + private ApiConnection apiConnection; /** * diff --git a/libs/Plans.java b/src/main/java/paystackjava/core/Plans.java similarity index 95% rename from libs/Plans.java rename to src/main/java/paystackjava/core/Plans.java index 77e6c24..7e7f348 100644 --- a/libs/Plans.java +++ b/src/main/java/paystackjava/core/Plans.java @@ -1,8 +1,7 @@ -package me.iyanuadelekan.paystackjava.core; +package main.java.paystackjava.core; -import me.iyanuadelekan.paystackjava.constants.Definitions; -import me.iyanuadelekan.paystackjava.core.ApiConnection; -import me.iyanuadelekan.paystackjava.core.ApiQuery; +import main.java.paystackjava.constants.Definitions; +import main.java.paystackjava.core.ApiQuery; import org.json.JSONObject; import java.util.HashMap; diff --git a/libs/Subscriptions.java b/src/main/java/paystackjava/core/Subscriptions.java similarity index 94% rename from libs/Subscriptions.java rename to src/main/java/paystackjava/core/Subscriptions.java index 438f187..f9e5499 100644 --- a/libs/Subscriptions.java +++ b/src/main/java/paystackjava/core/Subscriptions.java @@ -1,8 +1,7 @@ -package me.iyanuadelekan.paystackjava.core; +package main.java.paystackjava.core; -import me.iyanuadelekan.paystackjava.constants.Definitions; -import me.iyanuadelekan.paystackjava.core.ApiConnection; -import me.iyanuadelekan.paystackjava.core.ApiQuery; +import main.java.paystackjava.constants.Definitions; +import main.java.paystackjava.core.ApiQuery; import org.json.JSONObject; import java.util.HashMap; @@ -81,7 +80,7 @@ public JSONObject disableSubscription(ApiQuery query) { */ public JSONObject disableSubscription(String code, String token) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_SUBSCRIPTIONS_DISABLE_SUBSCRIPTION); - this.apiQuery = new this.apiQuery(); + this.apiQuery = new ApiQuery(); this.apiQuery.putParams("code", code); this.apiQuery.putParams("token", token); diff --git a/libs/Transactions.java b/src/main/java/paystackjava/core/Transactions.java similarity index 96% rename from libs/Transactions.java rename to src/main/java/paystackjava/core/Transactions.java index fb8cbe2..aac7471 100644 --- a/libs/Transactions.java +++ b/src/main/java/paystackjava/core/Transactions.java @@ -1,8 +1,7 @@ -package me.iyanuadelekan.paystackjava.core; +package main.java.paystackjava.core; -import me.iyanuadelekan.paystackjava.constants.Definitions; -import me.iyanuadelekan.paystackjava.core.ApiConnection; -import me.iyanuadelekan.paystackjava.core.ApiQuery; +import main.java.paystackjava.constants.Definitions; +import main.java.paystackjava.core.ApiQuery; import org.json.JSONObject; import java.time.LocalDateTime; @@ -13,7 +12,7 @@ */ public class Transactions { - private static ApiConnection apiConnection; + private ApiConnection apiConnection; /** * Used to initialize a transaction From 58114a0479295e616ad793b64af460f666b3392a Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Sun, 16 Apr 2017 20:43:27 +0100 Subject: [PATCH 05/25] Added test class and package to project --- src/test/java/Tests.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/test/java/Tests.java diff --git a/src/test/java/Tests.java b/src/test/java/Tests.java new file mode 100644 index 0000000..f43ffa8 --- /dev/null +++ b/src/test/java/Tests.java @@ -0,0 +1,7 @@ +package test.java; + +/** + * @author on 16/04/2017. + * @// TODO: 16/04/2017 Create library tests + */ +public class Tests {} From 7741e559bf0f252ac30b7cfe43b475f42e60840c Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Sun, 16 Apr 2017 20:44:44 +0100 Subject: [PATCH 06/25] Corrected improper @author description --- src/test/java/Tests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/Tests.java b/src/test/java/Tests.java index f43ffa8..43b429a 100644 --- a/src/test/java/Tests.java +++ b/src/test/java/Tests.java @@ -1,7 +1,7 @@ package test.java; /** - * @author on 16/04/2017. + * @author Iyanu Adelekan on 16/04/2017. * @// TODO: 16/04/2017 Create library tests */ public class Tests {} From d97da377127b6f95f41a37cb938f66a6f7165fdc Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Sun, 16 Apr 2017 20:51:33 +0100 Subject: [PATCH 07/25] Added project maven dependencies to pom.xml --- pom.xml | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index bd7fe78..0764325 100644 --- a/pom.xml +++ b/pom.xml @@ -6,4 +6,31 @@ paystackjava jar 1.0.0 - \ No newline at end of file + + + com.mashape.unirest + unirest-java + 1.4.9 + + + org.apache.httpcomponents + httpclient + 4.3.6 + + + org.apache.httpcomponents + httpasyncclient + 4.0.2 + + + org.apache.httpcomponents + httpmime + 4.3.6 + + + org.json + json + 20140107 + + + From 9f013581019c92d81e98d14be4f5d78cff6d62b4 Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Sun, 16 Apr 2017 21:00:08 +0100 Subject: [PATCH 08/25] Update README.md --- README.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b39f551..21476ac 100644 --- a/README.md +++ b/README.md @@ -144,4 +144,24 @@ ApiConnection.shutDown(); License ---- -MIT License +The MIT License (MIT) + +Copyright (c) 2016 Iyanu Adelekan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 7303a32b25eeb47e3936f3d6357924ca88a391f6 Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Sun, 16 Apr 2017 21:51:55 +0100 Subject: [PATCH 09/25] Changed maven source directory, abd added project target files --- .DS_Store | Bin 8196 -> 8196 bytes .gitignore | 4 ++ libs/PaystackJava.iml | 12 ---- libs/jar/PaystackJava.jar | Bin 14563 -> 0 bytes libs/jar/setup.txt | 11 --- pom.xml | 7 +- .../paystackjava/constants/Definitions.java | 2 +- .../paystackjava/core/ApiConnection.java | 4 +- .../paystackjava/core/ApiQuery.java | 2 +- .../paystackjava/core/Customers.java | 4 +- .../paystackjava/core/Keys.java | 2 +- .../paystackjava/core/Pages.java | 5 +- .../paystackjava/core/PaystackInline.java | 5 +- .../paystackjava/core/Plans.java | 5 +- .../paystackjava/core/Subscriptions.java | 5 +- .../paystackjava/core/Transactions.java | 5 +- .../paystackjava/constants/Definitions.class | Bin 0 -> 2570 bytes .../paystackjava/core/ApiConnection.class | Bin 0 -> 4687 bytes .../paystackjava/core/ApiQuery.class | Bin 0 -> 940 bytes .../paystackjava/core/Customers.class | Bin 0 -> 3806 bytes .../paystackjava/core/Keys.class | Bin 0 -> 2078 bytes .../paystackjava/core/Pages.class | Bin 0 -> 3592 bytes .../paystackjava/core/PaystackInline.class | Bin 0 -> 2848 bytes .../paystackjava/core/Plans.class | Bin 0 -> 3945 bytes .../paystackjava/core/Subscriptions.class | Bin 0 -> 2948 bytes .../paystackjava/core/Transactions.class | Bin 0 -> 4780 bytes target/maven-archiver/pom.properties | 5 ++ .../compile/default-compile/createdFiles.lst | 10 +++ .../compile/default-compile/inputFiles.lst | 10 +++ .../default-testCompile/createdFiles.lst | 1 + .../default-testCompile/inputFiles.lst | 1 + target/paystackjava-1.1.0.jar | Bin 0 -> 16506 bytes .../surefire-reports/TEST-test.java.Tests.xml | 68 ++++++++++++++++++ target/surefire-reports/test.java.Tests.txt | 4 ++ target/test-classes/test/java/Tests.class | Bin 0 -> 260 bytes 35 files changed, 124 insertions(+), 48 deletions(-) delete mode 100644 libs/PaystackJava.iml delete mode 100644 libs/jar/PaystackJava.jar delete mode 100644 libs/jar/setup.txt rename src/{main/java => me/iyanuadelekan}/paystackjava/constants/Definitions.java (98%) rename src/{main/java => me/iyanuadelekan}/paystackjava/core/ApiConnection.java (98%) rename src/{main/java => me/iyanuadelekan}/paystackjava/core/ApiQuery.java (94%) rename src/{main/java => me/iyanuadelekan}/paystackjava/core/Customers.java (97%) rename src/{main/java => me/iyanuadelekan}/paystackjava/core/Keys.java (98%) rename src/{main/java => me/iyanuadelekan}/paystackjava/core/Pages.java (96%) rename src/{main/java => me/iyanuadelekan}/paystackjava/core/PaystackInline.java (95%) rename src/{main/java => me/iyanuadelekan}/paystackjava/core/Plans.java (97%) rename src/{main/java => me/iyanuadelekan}/paystackjava/core/Subscriptions.java (96%) rename src/{main/java => me/iyanuadelekan}/paystackjava/core/Transactions.java (98%) create mode 100644 target/classes/me/iyanuadelekan/paystackjava/constants/Definitions.class create mode 100644 target/classes/me/iyanuadelekan/paystackjava/core/ApiConnection.class create mode 100644 target/classes/me/iyanuadelekan/paystackjava/core/ApiQuery.class create mode 100644 target/classes/me/iyanuadelekan/paystackjava/core/Customers.class create mode 100644 target/classes/me/iyanuadelekan/paystackjava/core/Keys.class create mode 100644 target/classes/me/iyanuadelekan/paystackjava/core/Pages.class create mode 100644 target/classes/me/iyanuadelekan/paystackjava/core/PaystackInline.class create mode 100644 target/classes/me/iyanuadelekan/paystackjava/core/Plans.class create mode 100644 target/classes/me/iyanuadelekan/paystackjava/core/Subscriptions.class create mode 100644 target/classes/me/iyanuadelekan/paystackjava/core/Transactions.class create mode 100644 target/maven-archiver/pom.properties create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 target/paystackjava-1.1.0.jar create mode 100644 target/surefire-reports/TEST-test.java.Tests.xml create mode 100644 target/surefire-reports/test.java.Tests.txt create mode 100644 target/test-classes/test/java/Tests.class diff --git a/.DS_Store b/.DS_Store index 8af2278ac2337d953daf221d41473ff926d7ecf9..23c984ab1caa3f269d9cc1fc597a67aaac2ba6ea 100644 GIT binary patch delta 478 zcmZp1XmOa}FD%W#z`)4BAi$8HoRpKF1mp>9ES$zZv4MXxI|mDgAxNH?A&DWAAL?glT28(x;#m*YoKl>ela!yIgQT)7xF|0t zKQA391atud3(%H)AS^+%=LS%2#(yvXX-23+Hj;%Q8K^anAq`bCgBt^bJR=8+Zm2@I z?#Vm?rl!mcIY2Kaq3J#YbQ!W{s4AG&&9(xGtWInUB@BrSMGWZ-sTghth7pPZC~DJy a=755Pabls^W_F41ESuj7ZDgW~dBOnP1b*xQ delta 72 zcmZp1XmOa}FUrrrz`)4BAi%(&$B@NP%#hEJ=b5vya2or>2Hwr=94s7+{F9#unr;pf cie=qclF780UE({-WF - - - - - - - - - - - \ No newline at end of file diff --git a/libs/jar/PaystackJava.jar b/libs/jar/PaystackJava.jar deleted file mode 100644 index 0d18f6ddf00d24f1e9bd93e23e90a54ed022c854..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14563 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 Project Structure -> Modules -> Dependencies Tab -> Add -> JARs or Directories -> Attach jar -On Netbeans: Project properties -> Libraries -> Compile -> ADD JAR/folder -> Add Jar diff --git a/pom.xml b/pom.xml index 0764325..69aca9a 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,10 @@ me.iyanuadelekan paystackjava jar - 1.0.0 + 1.1.0 + + src/me/iyanuadelekan + com.mashape.unirest @@ -33,4 +36,4 @@ 20140107 - + \ No newline at end of file diff --git a/src/main/java/paystackjava/constants/Definitions.java b/src/me/iyanuadelekan/paystackjava/constants/Definitions.java similarity index 98% rename from src/main/java/paystackjava/constants/Definitions.java rename to src/me/iyanuadelekan/paystackjava/constants/Definitions.java index b98a606..00c94e3 100644 --- a/src/main/java/paystackjava/constants/Definitions.java +++ b/src/me/iyanuadelekan/paystackjava/constants/Definitions.java @@ -1,4 +1,4 @@ -package main.java.paystackjava.constants; +package me.iyanuadelekan.paystackjava.constants; /** * @author Iyanu Adelekan on 17/07/2016. diff --git a/src/main/java/paystackjava/core/ApiConnection.java b/src/me/iyanuadelekan/paystackjava/core/ApiConnection.java similarity index 98% rename from src/main/java/paystackjava/core/ApiConnection.java rename to src/me/iyanuadelekan/paystackjava/core/ApiConnection.java index 116d40d..1c06222 100644 --- a/src/main/java/paystackjava/core/ApiConnection.java +++ b/src/me/iyanuadelekan/paystackjava/core/ApiConnection.java @@ -1,6 +1,4 @@ -package main.java.paystackjava.core; - -import main.java.paystackjava.core.ApiQuery; +package me.iyanuadelekan.paystackjava.core; import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.JsonNode; diff --git a/src/main/java/paystackjava/core/ApiQuery.java b/src/me/iyanuadelekan/paystackjava/core/ApiQuery.java similarity index 94% rename from src/main/java/paystackjava/core/ApiQuery.java rename to src/me/iyanuadelekan/paystackjava/core/ApiQuery.java index 470d32a..b6e8562 100644 --- a/src/main/java/paystackjava/core/ApiQuery.java +++ b/src/me/iyanuadelekan/paystackjava/core/ApiQuery.java @@ -1,4 +1,4 @@ -package main.java.paystackjava.core; +package me.iyanuadelekan.paystackjava.core; import java.util.HashMap; diff --git a/src/main/java/paystackjava/core/Customers.java b/src/me/iyanuadelekan/paystackjava/core/Customers.java similarity index 97% rename from src/main/java/paystackjava/core/Customers.java rename to src/me/iyanuadelekan/paystackjava/core/Customers.java index 915a50c..159a3fb 100644 --- a/src/main/java/paystackjava/core/Customers.java +++ b/src/me/iyanuadelekan/paystackjava/core/Customers.java @@ -1,6 +1,6 @@ -package main.java.paystackjava.core; +package me.iyanuadelekan.paystackjava.core; -import main.java.paystackjava.constants.Definitions; +import me.iyanuadelekan.paystackjava.constants.Definitions; import org.json.JSONObject; import java.util.HashMap; diff --git a/src/main/java/paystackjava/core/Keys.java b/src/me/iyanuadelekan/paystackjava/core/Keys.java similarity index 98% rename from src/main/java/paystackjava/core/Keys.java rename to src/me/iyanuadelekan/paystackjava/core/Keys.java index 03c19e1..8af5760 100644 --- a/src/main/java/paystackjava/core/Keys.java +++ b/src/me/iyanuadelekan/paystackjava/core/Keys.java @@ -1,4 +1,4 @@ -package main.java.paystackjava.core; +package me.iyanuadelekan.paystackjava.core; import org.json.JSONObject; import java.io.File; diff --git a/src/main/java/paystackjava/core/Pages.java b/src/me/iyanuadelekan/paystackjava/core/Pages.java similarity index 96% rename from src/main/java/paystackjava/core/Pages.java rename to src/me/iyanuadelekan/paystackjava/core/Pages.java index 753d0ea..47d892a 100644 --- a/src/main/java/paystackjava/core/Pages.java +++ b/src/me/iyanuadelekan/paystackjava/core/Pages.java @@ -1,7 +1,6 @@ -package main.java.paystackjava.core; +package me.iyanuadelekan.paystackjava.core; -import main.java.paystackjava.constants.Definitions; -import main.java.paystackjava.core.ApiQuery; +import me.iyanuadelekan.paystackjava.constants.Definitions; import org.json.JSONObject; import java.util.HashMap; diff --git a/src/main/java/paystackjava/core/PaystackInline.java b/src/me/iyanuadelekan/paystackjava/core/PaystackInline.java similarity index 95% rename from src/main/java/paystackjava/core/PaystackInline.java rename to src/me/iyanuadelekan/paystackjava/core/PaystackInline.java index fc7b8ce..eab9366 100644 --- a/src/main/java/paystackjava/core/PaystackInline.java +++ b/src/me/iyanuadelekan/paystackjava/core/PaystackInline.java @@ -1,7 +1,6 @@ -package main.java.paystackjava.core; +package me.iyanuadelekan.paystackjava.core; -import main.java.paystackjava.constants.Definitions; -import main.java.paystackjava.core.ApiQuery; +import me.iyanuadelekan.paystackjava.constants.Definitions; import org.json.JSONObject; import java.util.HashMap; diff --git a/src/main/java/paystackjava/core/Plans.java b/src/me/iyanuadelekan/paystackjava/core/Plans.java similarity index 97% rename from src/main/java/paystackjava/core/Plans.java rename to src/me/iyanuadelekan/paystackjava/core/Plans.java index 7e7f348..dbbf57d 100644 --- a/src/main/java/paystackjava/core/Plans.java +++ b/src/me/iyanuadelekan/paystackjava/core/Plans.java @@ -1,7 +1,6 @@ -package main.java.paystackjava.core; +package me.iyanuadelekan.paystackjava.core; -import main.java.paystackjava.constants.Definitions; -import main.java.paystackjava.core.ApiQuery; +import me.iyanuadelekan.paystackjava.constants.Definitions; import org.json.JSONObject; import java.util.HashMap; diff --git a/src/main/java/paystackjava/core/Subscriptions.java b/src/me/iyanuadelekan/paystackjava/core/Subscriptions.java similarity index 96% rename from src/main/java/paystackjava/core/Subscriptions.java rename to src/me/iyanuadelekan/paystackjava/core/Subscriptions.java index f9e5499..e434d1d 100644 --- a/src/main/java/paystackjava/core/Subscriptions.java +++ b/src/me/iyanuadelekan/paystackjava/core/Subscriptions.java @@ -1,7 +1,6 @@ -package main.java.paystackjava.core; +package me.iyanuadelekan.paystackjava.core; -import main.java.paystackjava.constants.Definitions; -import main.java.paystackjava.core.ApiQuery; +import me.iyanuadelekan.paystackjava.constants.Definitions; import org.json.JSONObject; import java.util.HashMap; diff --git a/src/main/java/paystackjava/core/Transactions.java b/src/me/iyanuadelekan/paystackjava/core/Transactions.java similarity index 98% rename from src/main/java/paystackjava/core/Transactions.java rename to src/me/iyanuadelekan/paystackjava/core/Transactions.java index aac7471..4de8727 100644 --- a/src/main/java/paystackjava/core/Transactions.java +++ b/src/me/iyanuadelekan/paystackjava/core/Transactions.java @@ -1,7 +1,6 @@ -package main.java.paystackjava.core; +package me.iyanuadelekan.paystackjava.core; -import main.java.paystackjava.constants.Definitions; -import main.java.paystackjava.core.ApiQuery; +import me.iyanuadelekan.paystackjava.constants.Definitions; import org.json.JSONObject; import java.time.LocalDateTime; diff --git a/target/classes/me/iyanuadelekan/paystackjava/constants/Definitions.class b/target/classes/me/iyanuadelekan/paystackjava/constants/Definitions.class new file mode 100644 index 0000000000000000000000000000000000000000..e8546f6a2685e9fd41171e8bbe615051e82985f2 GIT binary patch literal 2570 zcmbW3SyR(c6vxk1mWU{dE4YEUu-S;X?;#BkiD^v&qr7A;AwZxcog{U{Z{?FSKKKFr zP>v@_TMuo69bel1&iUW7rnmj|`^QfJn1c`f@Nxi-!>fLH&EV{UWGc2)R&7NumP@K` zF&Nf%`DZRxxW6r$ap?KmFBqJX13!wnAFuIB%@yDcgYmNT$+RSS#a4Aq)fKzRXw{37 zQ54`UgNdfOE?ZL!b@7vJ8Io>FvZa=EQvivEct)|NCtXWhndATVPpx8O(YPm>LGMH`FMVrI% zsFo^e>bgRkW-!@V-aa1&cRNedW@s(}lw5Jv6;TVY$Y8p2k^*ku9&s0>D0{At^%wB46=nH_!C9=g7>#7}!S zR~Jm#P|NAl*vL^zZ51XeiUpnxZxVuzoT( zX-WAzHv|Dnhh~%dv$-W7+kN%9rAN!{p&N5UKZCxPp6|tYeH@>hT4T^72b(T~A+>f}E)GMZS^NRNsYn|!lz-Kq~whlxFPrFe&J3QQWZC;Ca zg3$ZQlbj63@{T&SC=T}B5HG!dNw9*6JPm0OFYPW=80>yGvU)plu;*eM)7>0#zf^+| z_jEN+T*aR;2G@>qV|lqR3>hEQTF)fZv2qk^)vPDu7V%cD&NM( zEWcHBi!cuOt;IhAS6~!+pcknR=@|6G2nd8vAP*2ei9AU76!K}pL&#@Z_$=XJ^q*_t z^MsRp7YHZ$E)u?ke3|eF@+je?o-2f}B3~nX9r*^~G34k*$YKlMCp?G#2Zxy9uJD?|*GIT95#JfU_fCI@W8cyhKE~I+)Yu14 S@bh3MfT!>biNW(!_2Li8tcjWc literal 0 HcmV?d00001 diff --git a/target/classes/me/iyanuadelekan/paystackjava/core/ApiConnection.class b/target/classes/me/iyanuadelekan/paystackjava/core/ApiConnection.class new file mode 100644 index 0000000000000000000000000000000000000000..523c5c54b6822c8ebdc62b282c789b685a92d8da GIT binary patch literal 4687 zcmcgu>30)V9KF**CmlwCU@I<2P=Pju4kE5COIzAP384^HQE{5QHq)jv!(>J&F1YXe zzT$rPD4<4UMfM^YY&By?5`s_xF4A`=3Ak0^k;WuAvjj zR&-#Wict;CNXo~46$e_8!odg*X*i4{8d`9)l_SSw>^&Ne$ zs(47lIviDTO2v$V=D^D-h$be@2Tdbq+7m{~_bhv&M?s6}T6+XzT6!(p^0z5y>zEtY zd04@s0Vg9AEKOLpNCwkm!aHb=<=7KVIB7F?*z_#>o-q1cYrwH>kuJ}j z5;L6J*~nZn%yYY?>2QHQJF`C!9$D|~Xk%7LL*WY5 zr?xYf-Xp;0v&o&Z^mz)&%R?gVPlh|vzb&qgG zXqH*A3htWQ+dJ2uRXrt16SEyZHYQ@@GS$0P zJf`Cex^+A*VLgE^9UIW4;z=D(;b~T#zO<|c%plWsb5`1v$z4n^70>8+7SAcTqA&2X zj%S@N4)T02FJt|ImCFcEf!Z%jPk1pM&*KFhFXAN?FY9;(uj+UWud8@N$D4Rd#oIdG z!Mh69)XmYdk#)R>VFg?22F{bBI^M?zDn67vKGN|qK2dR2$ESE&$7k}$SCo&uN@N9_ z8qjT)@;tpuM-nCgEhWpjRA|;{id9ui(`Amd-6fZe@;dN&DF}0#nNz`4)vaK$D}z`? zi|>@I&Idg+O(SZ129KTCojh?UHK>3-s8jb!C5&a?b@E(ju+~jev$lA&oGhPV6)Lu6 zy7fDm8NxMc?KsaA+Ab@2)6g+TYCx!}CZ%h#^KXFS#p((>!|GgPi_STFlsrr}5#I^7 zRd5w6$t7hgcXn4}2H788ajg@=A2mI5noejdFL+s*Z5g*jF2jJn>N**g>-i3Mi~<;Y zgPd=BhU9@M=x2b!)C|D3CRQ^d+#%PqT7&%kwEGO*7jHdTT0H zYrnF|hJ`PyA}vY**EJTYAX#Idxq8<=lA1d&Ap~!x?4G+9re#%bk;MA>NK}Qgl(>}} zEW;ZNYxu$2$&ckG{_!3vwpjD|ZUwUe-FzDS^##Wl@!cK&0ZP2Dpg$T>;mhm+c#r z^IR3!hV9&|xyWN3(Ss$dy$JqjoS#5~$<71_*@SyRm?q8uy+c!g2DLpio(Q&my)-BAlYb zay(eOBGfAl8S%|~gj_fC=03@M!^rH3iOBc$*sz4sWUIYS^%R4Dzs-rH4A zx|{!-vhfmmzD%C4kmswE?lnsHI;DGq(!ELP-mdWcC(_Am{okZJOG=-T(r2XfIi>r8 z6uzW%Us1ZR3FKUb(!VKPD|WLWg=HgI%tBVrAF=ivB75Qmte5u>n9VIj7T!PYSj?Vp f*mse==b_>Pk$+o6C+n_S%=SHuQIO!X348wn4AY7A literal 0 HcmV?d00001 diff --git a/target/classes/me/iyanuadelekan/paystackjava/core/ApiQuery.class b/target/classes/me/iyanuadelekan/paystackjava/core/ApiQuery.class new file mode 100644 index 0000000000000000000000000000000000000000..85fb99691e32aca4695366297ff2c9f81eda1a1a GIT binary patch literal 940 zcmb7DTTc@~7(LT&S$csM1TUyay_O;5oO-jk7jZDumwM@hUZBRSyNdyR~*zdAM6@_jWi zKCEPRFoD9c3=(Vd>|;73Z|kXFw=Fl;r{~Y5+4>Xy&l#3F!zA+6b8Ui}`#IcGmYUgKUGz?VWQ8vnS{7hOYk_KP{Od-_y{#?FG!6!&t zTubb7C?n53Ct#f?^3?V~t$7O3{DR!OQ{+FwIkD_2>pU4i6%J~w3#{OI!CGUt$dwNo zOR3%t*@jJ!6)UqgrKU1Ggk@Z`(q&x2WwHg?D_o6LkDa-; dV5Hx3lcOJSP6O66z6z<}bmFW0e$BG4{{W7_*o^=H literal 0 HcmV?d00001 diff --git a/target/classes/me/iyanuadelekan/paystackjava/core/Customers.class b/target/classes/me/iyanuadelekan/paystackjava/core/Customers.class new file mode 100644 index 0000000000000000000000000000000000000000..45468c2d4f8c9dc2ddee2703dabcc51690f129c2 GIT binary patch literal 3806 zcmbtWYf}?f7=BKGY>44v)M&h-Z6ScL8m+BBsfaZa5l|GRw(22SlEq|q-R#;@KlYo` z+w_;TGc9)NOn*S9GyO-MzVGe^LM|mtKjfS@XU}<`_wqbv_s@TR{{z59Y(_DFI|>#Q zEJm;tMF@AhaR&F;TIS)tf(KD_<4y!ucwUL%VFZsNn22DKH>~pTX$04zc#O{?xUS&y zC=z_&3C~Y?c*dI~4{JQ+qR2y2u&$sW&?7B<)-(()=jf&(ke)AVs=g@=SLU^n_FNjO zB{wUM%stHfy*XQxj#ga~7)i~0A-axUQg6vh@s6}6 zhv!YZpl(!5L(MKPE-bEXP^NS`^1{{ZP1+%FsL3&b#O_!(t!lhi8@EsSOC@O()Mdxk zjlyKjN`N^{sNKtY!H|w?Q!$pBgxjX0R!QARwNpgu-d#?-D?#;IrQD^JrCwrcdA+ZNrgE?AcEwqcWh!^1B&%kZRWuD=Dr=6+OGoZLzQYmH zhF2+)NlC9bRjLtNlc~A6Rv{^tW-rMC0f;#ggXNh$>zb1*Ry_y|H>p)Chy8kf(XJl# zwbkod6nG8!r<$;-mV`m6TS2TfIo>828w=kGWMzN!Y~S(MO^Vrg`hTzNLB;5@>DoE% zrp{MgZ?#{QaVBOA@8Dg53;VrX1upG%#GuRBa4PBzZJlpny2Xi~14YNNDif+o6dtc$ z;Nv+{%>_3o2ULvVEY8KCW0Z%q!029J{^jq9B8Ck-7l?Wqdun(h>t>O8b_^xYgM}9{*r>2mCkB_@yX^jD3}4_&f%9zyzugsq{+($2 z#tIy1!Xtj6_2v9G(tkS4MBqz4`{xiEuI;KR~I)Xzn@h&%I;*+?VY1js9d8 z8C-;9cndZ0oI`{>k5fDqXHc-912ot`y`DRhzV%lL?X+{5YidUdeASJx=YnHE*syI0fg^(tQ9t1O}3Zh>0u z)igd1di9#J=DgF*dbKbXKXl?Z9Hv%`#gClyEp7_6s|Ghg^#UFc?nC0|BNEFhvHYeB|AxYFpZsGWj zOtx^Mz6N>Xg;rC8!EO9OeB$vy;3hJJz*=}kSj>W<1}viIZY%;nS>I-pz$_1Jz<09^ zHWWybTzjyg8gcTo9dX{Gv~OZANM7GpK&R@n|B3>7)gmCD0XqRPY&L-Xn_yX88J`Qs zDB06~nXB4Wl1jYC)2b5h^|h+R`#i1ElYZ8!FIr^_HDR6h#P}Kq@ePjSTe?BNBT0Qv z^7?^V|DzY`Js*0zcA2126pkldCPT)PF1ISr&fR5dLHvO9)YjiQ_^;NP0=QCCaU(B`LWW(>geY#>R=$B#saY5f~|B$(`^h zeS-dNXBwC(Gkt)(N@w~ANxvi6U>nWQAKKlsXZM_MzulwvAO89qz%>{uKEquF_hj5x zkW~@KqKur1B$kBuL5Lq!M|51JI`1u=HhX*CS*_TqkS^ z{oB^=%KDaN`V!Iwx3Q^jd9I^BD6JGjH^T>B*>x-HI=ugLMQjt+*{LnFvl)r&@BG4bu|TkYhph710F^pW_P&ke~%k zX|Z=0Lh41xO$n!h{Z0zS#$ydnP}T4hb25I`@C?sMcSP6N<9n-lF^(k-FHqC)63;bU zz_^C9LYxy~LWuJimvHHS4v&Q409fz@+H*7BSxeFNm)xeaaoBCv(rRjZRzySP*M?WL z-g2He^G^xa;X(|2*A3w#;{!2W$21sxF={@d+CRvy91Ss_M`U6IbDY$E=7u+uoH71% zfIh?oZ?s~9x4eeq09Zu0o1=a|y(}9(ybtbSfv_1{2(Ib%82@Mz}h%pS3g$(PP zVD+=Cbee9TZeSWSEHaKQ=8m(tK~CdkT%jj}3OTxp z1pn`#lyIH$2G0ojTVQmIJIU#pcNjUsrUu@tyy;qS=b13-ki;au=1u%r;Tz1g&N}MF zpBVX_hj#X2E}|C+d>aiU-3w%aK<=CX0Tg9kwE67fn<7t6bWSI1R%E}fn<7t lR3d@gjt0^(HeqXC5J>F=Am2v<8SMq~Dguavg`k0V{sYf)eh2^n literal 0 HcmV?d00001 diff --git a/target/classes/me/iyanuadelekan/paystackjava/core/Pages.class b/target/classes/me/iyanuadelekan/paystackjava/core/Pages.class new file mode 100644 index 0000000000000000000000000000000000000000..2cd1bfa90e075251e183c544c41bbec687c39718 GIT binary patch literal 3592 zcmbtW>r&fB7(HtYHns@~2`2YjTQCGrZf%;FI1S`R>Hvuo(xh#YwJnT@krY{ChUvdv zCo_G9K0`axkW4ev2j~OzaXS6Jm28Bu!JYnD?XGvfbH1}@zx7}L{P8D%b688@B=Rxb zi(xK~`2-?Z=*0=#=iUQu3NbuPpci?beiX+g9xTRjIgTs*`(tjth~sJkPw+I3YcYJ8 zz##H*e8u0dxp~Hmo^$hp8yUx)1d1rdP>w+t=##cFW0|I2at+HAIG#9xhH1Dtfv(KxqCj-U zDif>zykY8d-fB^I9?D{sW(M+BNmdu7WAHebjJnH4O<=4O%mrD|YXq1mIl6Rp9@5TC zUS;LEMpe5bYs>efogK|vPDNX(S*CWkFh4h6Tp@8d%U7Httq|DXVw*sEE5~)a&hzs2 zX^b&1(IdGR&os6H*SwywLH@$!Ky~hRi`a*C^I|TE_BS+ z9p43FmW*dBL-a1`ZfV({9&M3JyI^snJns~$UWE+i+2w}8rdq_E0u$Zmp3+#8XnfV0lhSzh!X2NGJQ5n8GrQ6jnIG3NFU*GKDHu1%{dhp7xAtS$71E?L){ouPZNNj;d)lDAIK ze+$raA7P)V9$ALINeI3R)Q-?dqpzTE_t;yA-_)`UwLNMwiBamO`~?`p85#+UV}gS6 z<`;-k4@i%_N94&s^ewvIpl9rN^qkp1>{t4w3mlFAbony$jaljyxI(=yn$32m{@!NwvxGm@Mu*+i&!Qvs_cg13lTdH9L9MHwC0_o? z{!B`AQMS1q)gL(W4*Tn}A2`|=1j>gvq|r^$7Kp=rQvLzizCfBkQhZMONDb9k>-Oo2y7*k;z$E*Bmkq(>cU0Hg!K!@Gv|naf8lN_ zLbrnCjsHaGXmj>15%P8=#BN~CXK*`!{hMI<<`j3)q4{z)uH>HJN+t*T4@K*SIX2k+ z4#&6L)ez(3h!Ntq#P~a6{5@5kAIKL!;tqboB3`R3az3kuti^_`MRjx8Cq;F0`4o%l T=5kFbQj}TBN#HJxBKZ7Y_RT?w literal 0 HcmV?d00001 diff --git a/target/classes/me/iyanuadelekan/paystackjava/core/PaystackInline.class b/target/classes/me/iyanuadelekan/paystackjava/core/PaystackInline.class new file mode 100644 index 0000000000000000000000000000000000000000..5126f88466690458d04849465858d15124d9a6f9 GIT binary patch literal 2848 zcmb_dZBr9h6n-w|WeK53C}3KvR$JvoSl((85KW;XV51|B8Q zf=nxV@r|FHZT>(N*t>K z?Xqmol^n;)dv?hY7+X5DO#4_mRk>>wtryZU%ksG5$^450c_htz$+gT(*k@WGHe)-s zH!EFx>)^eyR3tDapn7i6WdEX&jVOC@*TJgAf$b1}ENvbuA?g6VJk zQnlP;-Vo@j<0jB^G3Dd(S=#sCy*}d~6{WLp<~-MS_NPN9LCjf3ZOz&Hj`XT7Ia#Zd zZj(Tbikk0hhD$baT@~Muo2ceSVCaL;1h#{U!aQU{M7&E)!;?l8wz}4y;Yz0>^*~UV z{dLM|lvi)QAl-fIsm0zp?EhS~;*}09S756S%KytrN>;r>$+cffHOX6fJ%fo{sp{sf z$F>^3u8ZR{tawY}Q(P4o`OvB7z`oDL;j7_z6?5L&Q_lmFBAden&ns7^Op~k+pAGMD zzGQke(oKC`7VVdoN^dQRG(JgU9kHCg*lhd_575vd2aBk#Z98D}?8a%;Kj ztw~oNlJYxsyh73o-X(?8SqqtUJZoPGH-03GRcm#RPhnrSKjatOP>*oU&7Wk>A2Z5J z&fo1i!NVxQ=o9^|8lKx;;fY0r-oEWv0b2XU8}s-mF)`)^{$iLiX3qSt8MJVjzEmX4*`SXz>M`_(`2k#BYk`TON`#5X$A zQ5uSebnFD7lx~uJFjzZ=S@a0W8D()}T*onm3C!W1PIbXg;+&vm-dCMsV)Po-^exlR zB*E%zoK{3z6SShl{u*DgIMv2`w0+{%`HyNu+Al7}O1f$-JHf|qbN3LPcogC;eV$M{ zNQeX9NDbXJ=z40%l7z(&cF#F>GisPb12tTX8lv7;Lyl258bm!)!zAtpguNoEF%p*X z2@9~#)DTTaQ$1P@(NxD>)%j?uT}vUFYSU8C3ZN81XYhiL{4{U0VCG-i4XQ8z literal 0 HcmV?d00001 diff --git a/target/classes/me/iyanuadelekan/paystackjava/core/Plans.class b/target/classes/me/iyanuadelekan/paystackjava/core/Plans.class new file mode 100644 index 0000000000000000000000000000000000000000..f1b85e4aeb23c41d9cfdc59734618c46dc14f519 GIT binary patch literal 3945 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 literal 0 HcmV?d00001 diff --git a/target/surefire-reports/TEST-test.java.Tests.xml b/target/surefire-reports/TEST-test.java.Tests.xml new file mode 100644 index 0000000..a1d3a18 --- /dev/null +++ b/target/surefire-reports/TEST-test.java.Tests.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/target/surefire-reports/test.java.Tests.txt b/target/surefire-reports/test.java.Tests.txt new file mode 100644 index 0000000..9520627 --- /dev/null +++ b/target/surefire-reports/test.java.Tests.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: test.java.Tests +------------------------------------------------------------------------------- +Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec diff --git a/target/test-classes/test/java/Tests.class b/target/test-classes/test/java/Tests.class new file mode 100644 index 0000000000000000000000000000000000000000..e873db3c422c9e25c80122800999ba2cf2a34f0b GIT binary patch literal 260 zcmZ9Gy$ZrW5QJy*t1t literal 0 HcmV?d00001 From dd8318d74b353a4b3c9f7c4d57f79eb37ea8c38f Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Sun, 16 Apr 2017 21:55:00 +0100 Subject: [PATCH 10/25] Removed .DS_Store file --- .DS_Store | Bin 8196 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 23c984ab1caa3f269d9cc1fc597a67aaac2ba6ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHM&2Jk;6n_)DiQNL-G%+L!2a8;a8lj|3TXH~k90#yMiOEK3qNKR{WoPMnXSKUd znnsa);KYqvFI@QMhQyI00&(Dq1P8>Q0OHnDc=KU*y~YP5grJ>S?fl-(y!Y1g^Sn2C z4gipH+g<>e0)QOe47GFE{Y7K*>>g+%a%2XPpgmB_^r(qX+JLSaPz)#r6a$I@#eibq zzrg^W*{tP;ocm%{^@;(-z!S*;%MV4o8I~k=1oG5@9WMb8vpCEf%KVRi#3CC&EJ^GL z#1U*nm?8>OB1;S+YX>6CalRz=I|79{5dLQLBi~G9g+gTML5f@*NJ*gT6$6TaK?Ydu zo&ghF@T*?3ekU6^^8oMB(^GCHwamjPkX8OeGw|Ffo}d4jjAXKBM#pmbv**~Qji0@( z@6$s)HsW?vHo{&0eihR|Lt6w!O5m`??{mgl7{KCZeuxh- zF|k5D8kW7bv)c?^TMrD&^_$zVb1&B2`%YcEkW$@n?6)5cZ5{=vGx=zMyL&Bk9H0AJ zZ!{t&-cHCnb?tm)h1BzEG;(8?`a63O#(gz*T2;S6@r^7b*8?^cZ8>3tIAF8AV}zmM zH=Xj)ZOk1czpuwyVu(Hv}rcZq* zpPwz&j(Ift)Z9fxt5Aj0FmrD9bR)mw`eOs zqPk7e*`k$--Ht7QAE(1V_+)R!9x@Z`5A&AVK%)?YfnQn^vw8Xy!Be{LAn4O=V2Wmk zQ+L;PKeWV*z$sS$uMYqHKV_vJ6$6Ta$B6-wt>~39u4qV};H7#I=kMUn8q@0t^*kp|DS-z>3IME From 3b246180162789802243efdaed5fb5b0916cd632 Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Sun, 16 Apr 2017 21:58:41 +0100 Subject: [PATCH 11/25] Added jUnit as a project dependency --- pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pom.xml b/pom.xml index 69aca9a..174fb12 100644 --- a/pom.xml +++ b/pom.xml @@ -35,5 +35,11 @@ json 20140107 + + junit + junit + 4.12 + test + \ No newline at end of file From 931fb17d1f45f988263c5ad8114568853720a5ed Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Sun, 16 Apr 2017 22:00:31 +0100 Subject: [PATCH 12/25] Refactored Tests.java to Test.java --- src/test/java/{Tests.java => Test.java} | 2 +- target/surefire-reports/TEST-test.java.Tests.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename src/test/java/{Tests.java => Test.java} (83%) diff --git a/src/test/java/Tests.java b/src/test/java/Test.java similarity index 83% rename from src/test/java/Tests.java rename to src/test/java/Test.java index 43b429a..54f703f 100644 --- a/src/test/java/Tests.java +++ b/src/test/java/Test.java @@ -4,4 +4,4 @@ * @author Iyanu Adelekan on 16/04/2017. * @// TODO: 16/04/2017 Create library tests */ -public class Tests {} +public class Test {} diff --git a/target/surefire-reports/TEST-test.java.Tests.xml b/target/surefire-reports/TEST-test.java.Tests.xml index a1d3a18..d203da0 100644 --- a/target/surefire-reports/TEST-test.java.Tests.xml +++ b/target/surefire-reports/TEST-test.java.Tests.xml @@ -1,5 +1,5 @@ - + From 7cb50619e244eba802de1f03b18990597c8bddaf Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Mon, 17 Apr 2017 08:51:19 +0100 Subject: [PATCH 13/25] Added scm, license information and additional project information to pom --- pom.xml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/pom.xml b/pom.xml index 174fb12..3e8e155 100644 --- a/pom.xml +++ b/pom.xml @@ -6,9 +6,29 @@ paystackjava jar 1.1.0 + + PaystackJava + A Java based API wrapper for the Paystack API πŸ’°πŸ’ΈπŸ’°πŸ’° + https://github.com/SeunAdelekan/PaystackJava + + + + The MIT License (MIT) + https://github.com/SeunAdelekan/PaystackJava/blob/master/LICENSE + repo + + + + + scm:git:https://github.com/SeunAdelekan/PaystackJava.git + HEAD + https://github.com/SeunAdelekan/PaystackJava + + src/me/iyanuadelekan + com.mashape.unirest From d1a9db94c7c7a67998bf8d3d826a9326b1fee221 Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Fri, 21 Apr 2017 08:04:22 +0100 Subject: [PATCH 14/25] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 21476ac..e3e6c3d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# PaystackJava -A Java based API wrapper for the Paystack API +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) +# PaystackJava A Java API wrapper for the facilitation of quick and easy development and integration of Java based applications with the the Paystack API. From a45e78656e1f2aec379bf791a64284b925fafaa7 Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Fri, 28 Apr 2017 06:24:17 +0100 Subject: [PATCH 15/25] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e3e6c3d..dcdf9b0 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) +[![Issue Count](https://codeclimate.com/github/SeunAdelekan/PaystackJava/badges/issue_count.svg)](https://codeclimate.com/github/SeunAdelekan/PaystackJava) # PaystackJava From 0fc6873055799bd6f97414ebdcae9eb999b3ac36 Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Fri, 28 Apr 2017 06:32:43 +0100 Subject: [PATCH 16/25] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dcdf9b0..da32b57 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Issue Count](https://codeclimate.com/github/SeunAdelekan/PaystackJava/badges/issue_count.svg)](https://codeclimate.com/github/SeunAdelekan/PaystackJava) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) # PaystackJava From 0f5d6715747899e39506ecf37ff6a4ecfddcea35 Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Fri, 14 Jul 2017 23:30:43 +0100 Subject: [PATCH 17/25] Fixed issue with initialization of secret keys --- pom.xml | 2 +- .../iyanuadelekan/paystackjava/core/Keys.java | 3 +-- target/classes/Main.class | Bin 0 -> 1160 bytes .../paystackjava/core/Keys.class | Bin 2078 -> 2325 bytes target/test-classes/test/java/Test.class | Bin 0 -> 257 bytes target/test-classes/test/java/Tests.class | Bin 260 -> 0 bytes 6 files changed, 2 insertions(+), 3 deletions(-) create mode 100644 target/classes/Main.class create mode 100644 target/test-classes/test/java/Test.class delete mode 100644 target/test-classes/test/java/Tests.class diff --git a/pom.xml b/pom.xml index 3e8e155..7a342cb 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,7 @@ - src/me/iyanuadelekan + src diff --git a/src/me/iyanuadelekan/paystackjava/core/Keys.java b/src/me/iyanuadelekan/paystackjava/core/Keys.java index 8af5760..db7d35a 100644 --- a/src/me/iyanuadelekan/paystackjava/core/Keys.java +++ b/src/me/iyanuadelekan/paystackjava/core/Keys.java @@ -27,9 +27,8 @@ void initKeys() throws FileNotFoundException { Scanner scanner = new Scanner(file); while(scanner.hasNext()) { - fileContent.concat(scanner.nextLine()) ; + fileContent += scanner.nextLine(); } - keyObject = new JSONObject(fileContent).getJSONObject("API_KEYS"); this.KEY_IN_USE = keyObject.getString("KEY_IN_USE"); diff --git a/target/classes/Main.class b/target/classes/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..51ea4324d35abffa5e26b17cefd7e8767058dd21 GIT binary patch literal 1160 zcmbVL>rN9v7(GKNyImHjON)v(P{bCH-O9xa7r`PirhrKiL;PW;+of#T&eZKzf)C*P z=#OF~@d11&6dZIK~uA zs+dx7U&XWvGsG+n3UcA{Af(P{n8loec?Ay{dKO*b2FnbwOm>H%J1@%)!$83m&StY# za{O&x@(3{s(&pX{_ucS(3U&wkZi6%m8{8EOWL=}3VJP#qP~{)E>2Xmpi-GTo%0i^h z{R;61J6tp9fzL&Q+kq7!W1eAqqnCuZ!;v4(oES9tdksl;^8+RJ)vISq%NW)Ua17R7h{y zmNf?GSjN*Z!WA8>c%~zdB?W6bo+CwOVG<0`>PYq;y z4jEFJ>_wjp@hDFQ>o2;zT6gnO2pTn-RT6LPH-j~KC@_jk^fJS*3sg{~Xid|}q@7xc z_{1^T=jeKf)}A(q%k;0G{$IgWIwdfSYlMWxpP(W}`|KBV8L<|+PY~ZdrdM|YWp~n0 zjf9~Yy+&^f`Z4-8h&9zhe+vU&kv#J?Ox{3BDrqO7VVpc#=)(*KBL5?8AGnSi#7klf WH*t$17)L)wD6uf1+jP@~JHG&t2q1L; literal 0 HcmV?d00001 diff --git a/target/classes/me/iyanuadelekan/paystackjava/core/Keys.class b/target/classes/me/iyanuadelekan/paystackjava/core/Keys.class index d033f23f37c7ec25edb8e4234b439db23782b660..866db5044502ebd52d6f976bfe5503f5c7df3f32 100644 GIT binary patch literal 2325 zcma)7ZBrXn6n-{@>}FX?38hFe1^dD~O{=xFv``BM1wud)&{S<$k_8sRZcH{#nQ{E+ z_|ef%{sO;hrwubQ;}7s(_(#;|?j|IJoxu;e=j^%XocrA8oOAQnKY#oQ;2z2<-ob)` zk7azKU{OUImSile2q7Vs6&XntVJwJcRan-9_GuXFNGV9G*ubWY&s20{Nx|nrW)zGF z`8)UDxFQm=hx%u>~cIKA(GhFztLj_ z-P(<%oRVqnKCZj1ZOkPW=RLQs#NuZBOrU3J_EDKIyO_*wq~a1nPfW{nW+k+Zj%`W^ z&f9r|i4&$}BrAv8Mk%dt7iftj?3`ZM)JvxLt{H>Qo>`VKmN+zG=8vP(?;ANsLT|z@?Z)=YwiR1SttLG)-8**7 zf-!Gfj$zR&D83|I^0+YV*aE-lC6{x$Wf>(2J>FKuF$=MjXXL&bf0;9ij%izE8QZ)} z*>KWE**Qa0@924o1to2S$&g)!v=-&c=-By~T6*Ez%=&49Ge!bAS25vv-dOiM6JGah zHmWJRQpy>E8geYCz9XujVH9H$AVG7BQe*Gbh13g|X$jr#elvw)Bc~w`X6$o!oBD9B zVixj7Ny83yHSA$VgNYd#`x*{VkkBcR4CTBUPRlsdV2NXTd@9cVc(%4ES~;b`Mp47p zVCE6r)Nn&Ax5RQ=EW@}dVdQ@{o`lN{*!7-^HuI3QodvsMJk%PZ-e;m2TOc_WAf(`Kn1=}wv=1SI$5~8MDRsPtQ?85+Q*L}{Z1u-39cd6*nvsvn&*Hi+~Jo98KW12 zrCvVQ?X>(H39Ou;EfWbIqdj?oP-f~F@^r92ScUQnq9+Jvj-gIg(IHG4Wfh$(zyAC8 zD_p8=M!IMf9^9$o@(H>#lgEfedaAgR7@vsrR&n(W`l!9-YW>u%x!M4=w_Pnt?YgTC zHm>pjorKs=sMn|spbt?D;yNCYxpi{4MOOC7nZqXkjy?VZdHRW06j#6RU9WcaExd=j z{L^BG;77d6xBxSLPwRbJ`tU8@#{&fMkdZ-peZch*rl|?0XXzcF42@5`L4O0E>RRve zqr&fR5dLHvO9)YjiQ_^;NP0=QCCaU(B`LWW(>geY#>R=$B#saY5f~|B$(`^h zeS-dNXBwC(Gkt)(N@w~ANxvi6U>nWQAKKlsXZM_MzulwvAO89qz%>{uKEquF_hj5x zkW~@KqKur1B$kBuL5Lq!M|51JI`1u=HhX*CS*_TqkS^ z{oB^=%KDaN`V!Iwx3Q^jd9I^BD6JGjH^T>B*>x-HI=ugLMQjt+*{LnFvl)r&@BG4bu|TkYhph710F^pW_P&ke~%k zX|Z=0Lh41xO$n!h{Z0zS#$ydnP}T4hb25I`@C?sMcSP6N<9n-lF^(k-FHqC)63;bU zz_^C9LYxy~LWuJimvHHS4v&Q409fz@+H*7BSxeFNm)xeaaoBCv(rRjZRzySP*M?WL z-g2He^G^xa;X(|2*A3w#;{!2W$21sxF={@d+CRvy91Ss_M`U6IbDY$E=7u+uoH71% zfIh?oZ?s~9x4eeq09Zu0o1=a|y(}9(ybtbSfv_1{2(Ib%82@Mz}h%pS3g$(PP zVD+=Cbee9TZeSWSEHaKQ=8m(tK~CdkT%jj}3OTxp z1pn`#lyIH$2G0ojTVQmIJIU#pcNjUsrUu@tyy;qS=b13-ki;au=1u%r;Tz1g&N}MF zpBVX_hj#X2E}|C+d>aiU-3w%aK<=CX0Tg9kwE67fn<7t6bWSI1R%E}fn<7t lR3d@gjt0^(HeqXC5J>F=Am2v<8SMq~Dguavg`k0V{sYf)eh2^n diff --git a/target/test-classes/test/java/Test.class b/target/test-classes/test/java/Test.class new file mode 100644 index 0000000000000000000000000000000000000000..6ec764d33ca356ca97edb13df8485267496d4f64 GIT binary patch literal 257 zcmY+8y$ZrW5QJxAel*4(d;>eRFjy-#f>qE$vA@JaPhtYe#rLujEPMbTO56)J-oh~R z-OaJ@&+`RfhQ5ymIv%Va#LMnS?ooeG8sg9BGQ8> zl*vD6>$55e{YcAFhZk`Z;hx=`;P3LPNaR|XZp*-_xej2%A$0%W^AB}571=4=#uu4r r3}Nw_<`56JSY1wGodIX^0Noi_@K{~OVAo^~YVV*0pA(_YY9aUnAh$9! literal 0 HcmV?d00001 diff --git a/target/test-classes/test/java/Tests.class b/target/test-classes/test/java/Tests.class deleted file mode 100644 index e873db3c422c9e25c80122800999ba2cf2a34f0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmZ9Gy$ZrW5QJy*t1t From 67b85ff238246f32ecf4d8ebcf2b2f2f80b70cc2 Mon Sep 17 00:00:00 2001 From: ibrahimlawal Date: Sat, 23 Sep 2017 11:07:17 +0100 Subject: [PATCH 18/25] Avoid protocol_version error by forcing TLSv1.2 on all connections Signed-off-by: ibrahimlawal --- .../paystackjava/core/ApiConnection.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/me/iyanuadelekan/paystackjava/core/ApiConnection.java b/src/me/iyanuadelekan/paystackjava/core/ApiConnection.java index 1c06222..0341182 100644 --- a/src/me/iyanuadelekan/paystackjava/core/ApiConnection.java +++ b/src/me/iyanuadelekan/paystackjava/core/ApiConnection.java @@ -8,7 +8,17 @@ import java.io.FileNotFoundException; import java.io.IOException; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; import java.util.HashMap; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.net.ssl.SSLContext; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import static org.apache.http.conn.ssl.SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER; +import org.apache.http.conn.ssl.SSLContexts; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; /** * @author Iyanu Adelekan on 17/07/2016. @@ -33,6 +43,29 @@ public ApiConnection(String url) { } this.apiKey = keys.KEY_IN_USE; + this.enforceTlsV1point2(); + } + + private void enforceTlsV1point2() { + try { + SSLContext sslContext = SSLContexts.custom() + .useTLS() + .build(); + SSLConnectionSocketFactory f = new SSLConnectionSocketFactory( + sslContext, + new String[]{"TLSv1.2"}, + null, + BROWSER_COMPATIBLE_HOSTNAME_VERIFIER); + CloseableHttpClient httpClient = HttpClients.custom() + .setSSLSocketFactory(f) + .build(); + Unirest.setHttpClient(httpClient); + + } catch (NoSuchAlgorithmException ex) { + Logger.getLogger(ApiConnection.class.getName()).log(Level.SEVERE, null, ex); + } catch (KeyManagementException ex) { + Logger.getLogger(ApiConnection.class.getName()).log(Level.SEVERE, null, ex); + } } /** From 4ec246113585fdf7c60fc07706390205e68d07a0 Mon Sep 17 00:00:00 2001 From: ibrahimlawal Date: Sat, 23 Sep 2017 11:00:45 +0100 Subject: [PATCH 19/25] Update to latest dependency libraries Signed-off-by: ibrahimlawal --- pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 7a342cb..bea72c9 100644 --- a/pom.xml +++ b/pom.xml @@ -38,22 +38,22 @@ org.apache.httpcomponents httpclient - 4.3.6 + 4.5.3 org.apache.httpcomponents httpasyncclient - 4.0.2 + 4.1.3 org.apache.httpcomponents httpmime - 4.3.6 + 4.5.3 org.json json - 20140107 + 20170516 junit From 687950de55e15b8039a873eec799650ea1a42c4f Mon Sep 17 00:00:00 2001 From: ibrahimlawal Date: Sat, 23 Sep 2017 11:18:07 +0100 Subject: [PATCH 20/25] [chore] format all files using the netbeans command --- Keys.json | 14 +- .../paystackjava/constants/Definitions.java | 9 +- .../paystackjava/core/ApiConnection.java | 48 ++++--- .../paystackjava/core/ApiQuery.java | 14 +- .../paystackjava/core/Customers.java | 42 +++--- .../iyanuadelekan/paystackjava/core/Keys.java | 29 ++-- .../paystackjava/core/Pages.java | 30 ++-- .../paystackjava/core/Plans.java | 30 ++-- .../paystackjava/core/Subscriptions.java | 30 ++-- .../paystackjava/core/Transactions.java | 21 ++- src/test/java/Test.java | 3 +- .../paystackjava/core/ApiConnection.class | Bin 4687 -> 4850 bytes .../paystackjava/core/ApiQuery.class | Bin 940 -> 940 bytes .../paystackjava/core/Customers.class | Bin 3806 -> 3806 bytes .../paystackjava/core/Keys.class | Bin 2325 -> 2239 bytes .../paystackjava/core/Pages.class | Bin 3592 -> 3592 bytes .../paystackjava/core/Plans.class | Bin 3945 -> 3945 bytes .../paystackjava/core/Subscriptions.class | Bin 2948 -> 2948 bytes .../paystackjava/core/Transactions.class | Bin 4780 -> 4780 bytes .../surefire-reports/TEST-test.java.Tests.xml | 128 +++++++++--------- 20 files changed, 237 insertions(+), 161 deletions(-) diff --git a/Keys.json b/Keys.json index 19fbf23..811cacb 100644 --- a/Keys.json +++ b/Keys.json @@ -1,9 +1,9 @@ { - "API_KEYS":{ - "KEY_IN_USE": "sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", - "TEST_SECRET_KEY": "sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", - "TEST_PUBLIC_KEY": "pk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", - "LIVE_SECRET_KEY": "sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", - "LIVE_PUBLIC_KEY": "pk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - } + "API_KEYS": { + "KEY_IN_USE": "sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", + "TEST_SECRET_KEY": "sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", + "TEST_PUBLIC_KEY": "pk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", + "LIVE_SECRET_KEY": "sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", + "LIVE_PUBLIC_KEY": "pk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + } } diff --git a/src/me/iyanuadelekan/paystackjava/constants/Definitions.java b/src/me/iyanuadelekan/paystackjava/constants/Definitions.java index 00c94e3..285a8f5 100644 --- a/src/me/iyanuadelekan/paystackjava/constants/Definitions.java +++ b/src/me/iyanuadelekan/paystackjava/constants/Definitions.java @@ -6,12 +6,11 @@ public class Definitions { /** - * The following are URL definitions for the Paystack API. - * All URLs are RESTful endpoints and as such modification of any - * of these URL resources will lead to problems with querying the Paystack API. - * Only modify if you know what you are doing. + * The following are URL definitions for the Paystack API. All URLs are + * RESTful endpoints and as such modification of any of these URL resources + * will lead to problems with querying the Paystack API. Only modify if you + * know what you are doing. */ - private final static String BASE_API_ENDPOINT = "https://api.paystack.co"; public static final String PAYSTACK_INLINE_PAYSTACK_STANDARD = BASE_API_ENDPOINT + "/transaction/initialize"; diff --git a/src/me/iyanuadelekan/paystackjava/core/ApiConnection.java b/src/me/iyanuadelekan/paystackjava/core/ApiConnection.java index 1c06222..5fcd614 100644 --- a/src/me/iyanuadelekan/paystackjava/core/ApiConnection.java +++ b/src/me/iyanuadelekan/paystackjava/core/ApiConnection.java @@ -15,7 +15,7 @@ */ public class ApiConnection { - private String url; + private String url; private String apiKey; /** @@ -37,14 +37,15 @@ public ApiConnection(String url) { /** * Connects to and queries Paystack API with POST + * * @param query - APIQuery containing parameters to send * @return - JSONObject containing API response */ public JSONObject connectAndQuery(ApiQuery query) { try { HttpResponse queryForResponse = Unirest.post(url) - .header("Accept","application/json") - .header("Authorization","Bearer " + apiKey) + .header("Accept", "application/json") + .header("Authorization", "Bearer " + apiKey) .fields(query.getParams()) .asJson(); return queryForResponse.getBody().getObject(); @@ -54,17 +55,17 @@ public JSONObject connectAndQuery(ApiQuery query) { return null; } - /** * Connects to and queries API with POST + * * @param query - HashMap containing parameters to send * @return - JSONObject containing API response */ - public JSONObject connectAndQuery(HashMap query) { + public JSONObject connectAndQuery(HashMap query) { try { HttpResponse queryForResponse = Unirest.post(url) - .header("Accept","application/json") - .header("Authorization","Bearer " + apiKey) + .header("Accept", "application/json") + .header("Authorization", "Bearer " + apiKey) .fields(query) .asJson(); return queryForResponse.getBody().getObject(); @@ -76,13 +77,14 @@ public JSONObject connectAndQuery(HashMap query) { /** * Used to send a GET request to the Paystack API + * * @return - JSONObject containing the API response */ - public JSONObject connectAndQueryWithGet(){ + public JSONObject connectAndQueryWithGet() { try { HttpResponse queryForResponse = Unirest.get(url) - .header("Accept","application/json") - .header("Authorization","Bearer " + apiKey) + .header("Accept", "application/json") + .header("Authorization", "Bearer " + apiKey) .asJson(); return queryForResponse.getBody().getObject(); } catch (UnirestException e) { @@ -93,14 +95,15 @@ public JSONObject connectAndQueryWithGet(){ /** * Used to send a GET request to the Paystack API + * * @param query - APIQuery containing parameters to send * @return - JSONObject containing API response */ - public JSONObject connectAndQueryWithGet(ApiQuery query){ + public JSONObject connectAndQueryWithGet(ApiQuery query) { try { HttpResponse queryForResponse = Unirest.get(url) - .header("Accept","application/json") - .header("Authorization","Bearer " + apiKey) + .header("Accept", "application/json") + .header("Authorization", "Bearer " + apiKey) .queryString(query.getParams()) .asJson(); return queryForResponse.getBody().getObject(); @@ -112,14 +115,15 @@ public JSONObject connectAndQueryWithGet(ApiQuery query){ /** * Used to send a GET request to the Paystack API + * * @param query - HashMap containing parameters to send * @return - JSONObject containing API response */ - public JSONObject connectAndQueryWithGet(HashMap query) { + public JSONObject connectAndQueryWithGet(HashMap query) { try { HttpResponse queryForResponse = Unirest.get(url) - .header("Accept","application/json") - .header("Authorization","Bearer " + apiKey) + .header("Accept", "application/json") + .header("Authorization", "Bearer " + apiKey) .queryString(query) .asJson(); return queryForResponse.getBody().getObject(); @@ -131,14 +135,15 @@ public JSONObject connectAndQueryWithGet(HashMap query) { /** * Used to send a PUT request to the Paystack API + * * @param query - APIQuery containing parameters to send * @return - JSONObject containing API response */ public JSONObject connectAndQueryWithPut(ApiQuery query) { try { HttpResponse queryForResponse = Unirest.put(url) - .header("Accept","application/json") - .header("Authorization","Bearer " + apiKey) + .header("Accept", "application/json") + .header("Authorization", "Bearer " + apiKey) .fields(query.getParams()) .asJson(); return queryForResponse.getBody().getObject(); @@ -150,14 +155,15 @@ public JSONObject connectAndQueryWithPut(ApiQuery query) { /** * Used to send a PUT request to the Paystack API + * * @param query - HashMap containing parameters to send * @return - JSONObject containing API response */ - public JSONObject connectAndQueryWithPut(HashMap query) { + public JSONObject connectAndQueryWithPut(HashMap query) { try { HttpResponse queryForResponse = Unirest.get(url) - .header("Accept","application/json") - .header("Authorization","Bearer " + apiKey) + .header("Accept", "application/json") + .header("Authorization", "Bearer " + apiKey) .queryString(query) .asJson(); return queryForResponse.getBody().getObject(); diff --git a/src/me/iyanuadelekan/paystackjava/core/ApiQuery.java b/src/me/iyanuadelekan/paystackjava/core/ApiQuery.java index b6e8562..33119b5 100644 --- a/src/me/iyanuadelekan/paystackjava/core/ApiQuery.java +++ b/src/me/iyanuadelekan/paystackjava/core/ApiQuery.java @@ -7,29 +7,31 @@ */ public class ApiQuery { - private HashMap queryMap; + private HashMap queryMap; /** * Initializes a new query map */ - public ApiQuery(){ - this.queryMap = new HashMap(); + public ApiQuery() { + this.queryMap = new HashMap(); } /** * Used to add a parameter to the query map + * * @param key * @param value */ - public void putParams(String key, Object value){ - this.queryMap.put(key,value); + public void putParams(String key, Object value) { + this.queryMap.put(key, value); } /** * Used to get all parameters within the query map + * * @return - HashMap containin g query parameters */ - public HashMap getParams(){ + public HashMap getParams() { return this.queryMap; } diff --git a/src/me/iyanuadelekan/paystackjava/core/Customers.java b/src/me/iyanuadelekan/paystackjava/core/Customers.java index 159a3fb..43bd16b 100644 --- a/src/me/iyanuadelekan/paystackjava/core/Customers.java +++ b/src/me/iyanuadelekan/paystackjava/core/Customers.java @@ -14,16 +14,18 @@ public class Customers { /** * Used to create a new customer + * * @param queryMap * @return JSONObject */ - public JSONObject createCustomer(HashMap queryMap){ + public JSONObject createCustomer(HashMap queryMap) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_CUSTOMERS_CREATE_CUSTOMER); return this.apiConnection.connectAndQuery(queryMap); } /** * Used to create a new customer + * * @param query * @return JSONObject */ @@ -34,6 +36,7 @@ public JSONObject createCustomer(ApiQuery query) { /** * Used to create a new customer + * * @param email * @param firstName * @param lastName @@ -42,31 +45,33 @@ public JSONObject createCustomer(ApiQuery query) { * @return JSONObject */ public JSONObject createCustomer(String email, String firstName, String lastName, - String phone, Object metadata) { + String phone, Object metadata) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_CUSTOMERS_CREATE_CUSTOMER); ApiQuery apiQuery = new ApiQuery(); - apiQuery.putParams("email",email); - apiQuery.putParams("first_name",firstName); - apiQuery.putParams("last_name",lastName); - apiQuery.putParams("phone",phone); - apiQuery.putParams("metadata",metadata); + apiQuery.putParams("email", email); + apiQuery.putParams("first_name", firstName); + apiQuery.putParams("last_name", lastName); + apiQuery.putParams("phone", phone); + apiQuery.putParams("metadata", metadata); return this.apiConnection.connectAndQuery(apiQuery); } /** * Used to get a list of customers + * * @param queryMap * @return JSONObject */ - public JSONObject listCustomers(HashMap queryMap) { + public JSONObject listCustomers(HashMap queryMap) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_CUSTOMERS_LIST_CUSTOMERS); return this.apiConnection.connectAndQueryWithGet(queryMap); } /** * Used to get a list of customers + * * @param query * @return JSONObject */ @@ -77,6 +82,7 @@ public JSONObject listCustomers(ApiQuery query) { /** * Used to get a list of customers + * * @param perPage * @param page * @return JSONObject @@ -85,14 +91,15 @@ public JSONObject listCustomers(int perPage, int page) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_CUSTOMERS_LIST_CUSTOMERS); ApiQuery apiQuery = new ApiQuery(); - apiQuery.putParams("perPage",perPage); - apiQuery.putParams("page",page); + apiQuery.putParams("perPage", perPage); + apiQuery.putParams("page", page); return this.apiConnection.connectAndQueryWithGet(apiQuery); } /** * Used to get a customer + * * @param idOrCustomerCode * @return JSONObject */ @@ -103,17 +110,19 @@ public JSONObject fetchCustomer(String idOrCustomerCode) { /** * Used to update a customer + * * @param queryMap * @param idOrCustomerCode * @return JSONObject */ - public JSONObject updateCustomer(HashMap queryMap, String idOrCustomerCode) { + public JSONObject updateCustomer(HashMap queryMap, String idOrCustomerCode) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_CUSTOMERS_UPDATE_CUSTOMER + idOrCustomerCode); return this.apiConnection.connectAndQueryWithPut(queryMap); } /** * Used to update a customer + * * @param query * @param idOrCustomerCode * @return JSONObject @@ -125,6 +134,7 @@ public JSONObject updateCustomer(ApiQuery query, String idOrCustomerCode) { /** * Used to update a customer + * * @param idOrCustomerCode * @param email * @param firstName @@ -134,14 +144,14 @@ public JSONObject updateCustomer(ApiQuery query, String idOrCustomerCode) { * @return JSONObject */ public JSONObject updateCustomer(String idOrCustomerCode, String email, String firstName, String lastName, - String phone, Object metadata) { + String phone, Object metadata) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_CUSTOMERS_UPDATE_CUSTOMER.concat(idOrCustomerCode)); ApiQuery apiQuery = new ApiQuery(); - apiQuery.putParams("first_name",firstName); - apiQuery.putParams("last_name",lastName); - apiQuery.putParams("phone",phone); - apiQuery.putParams("metadata",metadata); + apiQuery.putParams("first_name", firstName); + apiQuery.putParams("last_name", lastName); + apiQuery.putParams("phone", phone); + apiQuery.putParams("metadata", metadata); return this.apiConnection.connectAndQueryWithPut(apiQuery); } diff --git a/src/me/iyanuadelekan/paystackjava/core/Keys.java b/src/me/iyanuadelekan/paystackjava/core/Keys.java index db7d35a..b6838eb 100644 --- a/src/me/iyanuadelekan/paystackjava/core/Keys.java +++ b/src/me/iyanuadelekan/paystackjava/core/Keys.java @@ -18,6 +18,7 @@ class Keys { /** * Used to initialise all necessary API keys + * * @throws FileNotFoundException */ void initKeys() throws FileNotFoundException { @@ -26,7 +27,7 @@ void initKeys() throws FileNotFoundException { File file = new File("Keys.json"); Scanner scanner = new Scanner(file); - while(scanner.hasNext()) { + while (scanner.hasNext()) { fileContent += scanner.nextLine(); } keyObject = new JSONObject(fileContent).getJSONObject("API_KEYS"); @@ -41,63 +42,73 @@ void initKeys() throws FileNotFoundException { /** * Used to set test secret key + * * @param key */ - protected void setTest_SECRET_KEY(String key){ + protected void setTest_SECRET_KEY(String key) { this.TEST_SECRET_KEY = key; } /** * Used to get test secret key + * * @return */ - protected String getTEST_SECRET_KEY() { return this.TEST_SECRET_KEY; } + protected String getTEST_SECRET_KEY() { + return this.TEST_SECRET_KEY; + } /** * Used to set test public key + * * @param key */ - protected void setTEST_PUBLIC_KEY(String key){ + protected void setTEST_PUBLIC_KEY(String key) { this.TEST_PUBLIC_KEY = key; } /** * Used to get test public key + * * @return */ - protected String getTEST_PUBLIC_KEY(){ + protected String getTEST_PUBLIC_KEY() { return this.TEST_PUBLIC_KEY; } /** * Used to set live secret key + * * @param key */ - protected void setLIVE_SECRET_KEY(String key){ + protected void setLIVE_SECRET_KEY(String key) { this.LIVE_SECRET_KEY = key; } /** * Used to get live secret key + * * @return */ - protected String getLIVE_SECRET_KEY(){ + protected String getLIVE_SECRET_KEY() { return this.LIVE_SECRET_KEY; } /** * Used to set live public key + * * @param key */ - protected void setLIVE_PUBLIC_KEY(String key){ + protected void setLIVE_PUBLIC_KEY(String key) { this.LIVE_PUBLIC_KEY = key; } /** * Used to get live public key + * * @return */ - protected String getLIVE_PUBLIC_KEY(){ + protected String getLIVE_PUBLIC_KEY() { return this.LIVE_PUBLIC_KEY; } diff --git a/src/me/iyanuadelekan/paystackjava/core/Pages.java b/src/me/iyanuadelekan/paystackjava/core/Pages.java index 47d892a..991ee9e 100644 --- a/src/me/iyanuadelekan/paystackjava/core/Pages.java +++ b/src/me/iyanuadelekan/paystackjava/core/Pages.java @@ -15,32 +15,35 @@ public class Pages { /** * Used to create a new page + * * @param queryMap * @return */ - public JSONObject createPage(HashMap queryMap) { + public JSONObject createPage(HashMap queryMap) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_PAGES_CREATE_PAGE); return this.apiConnection.connectAndQuery(queryMap); } /** * Used to create a new page + * * @param query * @return */ - public JSONObject createPage(ApiQuery query) { + public JSONObject createPage(ApiQuery query) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_PAGES_CREATE_PAGE); return this.apiConnection.connectAndQuery(query); } /** * Used to create a new page + * * @param name * @param description * @param amount * @return */ - public JSONObject createPage(String name, String description, String amount) { + public JSONObject createPage(String name, String description, String amount) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_PAGES_CREATE_PAGE); this.apiQuery = new ApiQuery(); this.apiQuery.putParams("name", name); @@ -52,31 +55,34 @@ public JSONObject createPage(String name, String description, String amount) { /** * Used to list created pages + * * @param queryMap * @return */ - public JSONObject listPages(HashMap queryMap) { + public JSONObject listPages(HashMap queryMap) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_PAGES_LIST_PAGES); return this.apiConnection.connectAndQueryWithGet(queryMap); } /** * Used to list created pages + * * @param query * @return */ - public JSONObject listPages(ApiQuery query) { + public JSONObject listPages(ApiQuery query) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_PAGES_LIST_PAGES); return this.apiConnection.connectAndQueryWithGet(query); } /** * Used to list created pages + * * @param perPage * @param page * @return */ - public JSONObject listPages(int perPage, int page) { + public JSONObject listPages(int perPage, int page) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_PAGES_LIST_PAGES); this.apiQuery = new ApiQuery(); this.apiQuery.putParams("perPage", perPage); @@ -87,38 +93,42 @@ public JSONObject listPages(int perPage, int page) { /** * Used to fetch a page + * * @param idOrSlug * @return */ - public JSONObject fetchPage(String idOrSlug) { + public JSONObject fetchPage(String idOrSlug) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_PAGES_FETCH_PAGE + idOrSlug); return this.apiConnection.connectAndQueryWithGet(); } /** * Used to update a page + * * @param idOrSlug * @param queryMap * @return */ - public JSONObject updatePage(String idOrSlug, HashMap queryMap) { + public JSONObject updatePage(String idOrSlug, HashMap queryMap) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_PAGES_UPDATE_PAGE + idOrSlug); return this.apiConnection.connectAndQueryWithPut(queryMap); } /** * Used to update a page + * * @param idOrSlug * @param query * @return */ - public JSONObject updatePage(String idOrSlug, ApiQuery query) { + public JSONObject updatePage(String idOrSlug, ApiQuery query) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_PAGES_UPDATE_PAGE + idOrSlug); return this.apiConnection.connectAndQueryWithPut(query); } /** * Used to update a page + * * @param idOrSlug * @param name * @param description @@ -126,7 +136,7 @@ public JSONObject updatePage(String idOrSlug, ApiQuery query) { * @param active * @return */ - public JSONObject updatePage(String idOrSlug, String name, String description, String amount, boolean active) { + public JSONObject updatePage(String idOrSlug, String name, String description, String amount, boolean active) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_PAGES_UPDATE_PAGE + idOrSlug); this.apiQuery = new ApiQuery(); this.apiQuery.putParams("name", name); diff --git a/src/me/iyanuadelekan/paystackjava/core/Plans.java b/src/me/iyanuadelekan/paystackjava/core/Plans.java index dbbf57d..fbde35f 100644 --- a/src/me/iyanuadelekan/paystackjava/core/Plans.java +++ b/src/me/iyanuadelekan/paystackjava/core/Plans.java @@ -14,26 +14,29 @@ public class Plans { /** * Used to create a plan + * * @param queryMap * @return */ - public JSONObject createPlan(HashMap queryMap) { + public JSONObject createPlan(HashMap queryMap) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_PLANS_CREATE_PLAN); return this.apiConnection.connectAndQuery(queryMap); } /** * Used to create a plan + * * @param query * @return */ - public JSONObject createPlan(ApiQuery query) { + public JSONObject createPlan(ApiQuery query) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_PLANS_CREATE_PLAN); return this.apiConnection.connectAndQuery(query); } /** * Used to create a plan + * * @param name * @param description * @param amount @@ -44,7 +47,7 @@ public JSONObject createPlan(ApiQuery query) { * @return */ public JSONObject createPlan(String name, String description, int amount, String interval, - boolean send_invoices, boolean send_sms, String currency) { + boolean send_invoices, boolean send_sms, String currency) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_PLANS_CREATE_PLAN); ApiQuery apiQuery = new ApiQuery(); @@ -60,31 +63,34 @@ public JSONObject createPlan(String name, String description, int amount, String /** * Used to list plans + * * @param queryMap * @return */ - public JSONObject listPlans(HashMap queryMap) { + public JSONObject listPlans(HashMap queryMap) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_PLANS_LIST_PLANS); return this.apiConnection.connectAndQueryWithGet(queryMap); } /** * Used to list plans + * * @param query * @return */ - public JSONObject listPlans(ApiQuery query) { + public JSONObject listPlans(ApiQuery query) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_PLANS_LIST_PLANS); return this.apiConnection.connectAndQueryWithGet(query); } /** * Used to list plans + * * @param perPage * @param page * @return */ - public JSONObject listPlans(String perPage, String page) { + public JSONObject listPlans(String perPage, String page) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_PLANS_LIST_PLANS); ApiQuery apiQuery = new ApiQuery(); @@ -96,38 +102,42 @@ public JSONObject listPlans(String perPage, String page) { /** * Used to fetch a plan + * * @param idOrPlanCode * @return */ - public JSONObject fetchPlan(String idOrPlanCode) { + public JSONObject fetchPlan(String idOrPlanCode) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_PLANS_FETCH_PLAN + idOrPlanCode); return this.apiConnection.connectAndQueryWithGet(); } /** * Used to update a plan + * * @param idOrPlanCode * @param queryMap * @return */ - public JSONObject updatePlan(String idOrPlanCode, HashMap queryMap) { + public JSONObject updatePlan(String idOrPlanCode, HashMap queryMap) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_PLANS_UPDATE_PLAN + idOrPlanCode); return this.apiConnection.connectAndQueryWithPut(queryMap); } /** * Used to update a plan + * * @param idOrPlanCode * @param query * @return */ - public JSONObject updatePlan(String idOrPlanCode, ApiQuery query) { + public JSONObject updatePlan(String idOrPlanCode, ApiQuery query) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_PLANS_UPDATE_PLAN.concat(idOrPlanCode)); return this.apiConnection.connectAndQueryWithPut(query); } /** * Used to update a plan + * * @param idOrPlanCode * @param name * @param description @@ -139,7 +149,7 @@ public JSONObject updatePlan(String idOrPlanCode, ApiQuery query) { * @return */ public JSONObject updatePlan(String idOrPlanCode, String name, String description, int amount, - String interval, boolean send_invoices, String send_sms, String currency) { + String interval, boolean send_invoices, String send_sms, String currency) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_PLANS_UPDATE_PLAN.concat(idOrPlanCode)); ApiQuery apiQuery = new ApiQuery(); diff --git a/src/me/iyanuadelekan/paystackjava/core/Subscriptions.java b/src/me/iyanuadelekan/paystackjava/core/Subscriptions.java index e434d1d..908fd7c 100644 --- a/src/me/iyanuadelekan/paystackjava/core/Subscriptions.java +++ b/src/me/iyanuadelekan/paystackjava/core/Subscriptions.java @@ -15,32 +15,35 @@ public class Subscriptions { /** * Used to create a subscription + * * @param queryMap * @return */ - public JSONObject createSubscription(HashMap queryMap) { + public JSONObject createSubscription(HashMap queryMap) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_SUBSCRIPTIONS_CREATE_SUBSCRIPTION); return this.apiConnection.connectAndQuery(queryMap); } /** * Used to create a subscription + * * @param query * @return */ - public JSONObject createSubscription(ApiQuery query) { + public JSONObject createSubscription(ApiQuery query) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_SUBSCRIPTIONS_CREATE_SUBSCRIPTION); return this.apiConnection.connectAndQuery(query); } /** * Used to create a subscription + * * @param customer * @param plan * @param authorization * @return */ - public JSONObject createSubscription(String customer, String plan, String authorization) { + public JSONObject createSubscription(String customer, String plan, String authorization) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_SUBSCRIPTIONS_CREATE_SUBSCRIPTION); this.apiQuery = new ApiQuery(); @@ -53,31 +56,34 @@ public JSONObject createSubscription(String customer, String plan, String author /** * Used to disable a subscription + * * @param queryMap * @return */ - public JSONObject disableSubscription(HashMap queryMap) { + public JSONObject disableSubscription(HashMap queryMap) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_SUBSCRIPTIONS_DISABLE_SUBSCRIPTION); return this.apiConnection.connectAndQuery(queryMap); } /** * Used to disable a subscription + * * @param query * @return */ - public JSONObject disableSubscription(ApiQuery query) { + public JSONObject disableSubscription(ApiQuery query) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_SUBSCRIPTIONS_DISABLE_SUBSCRIPTION); return this.apiConnection.connectAndQuery(query); } /** * Used to disable a subscription + * * @param code * @param token * @return */ - public JSONObject disableSubscription(String code, String token) { + public JSONObject disableSubscription(String code, String token) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_SUBSCRIPTIONS_DISABLE_SUBSCRIPTION); this.apiQuery = new ApiQuery(); @@ -89,31 +95,34 @@ public JSONObject disableSubscription(String code, String token) { /** * Used to enable a subscription + * * @param queryMap * @return */ - public JSONObject enableSubscription(HashMap queryMap) { + public JSONObject enableSubscription(HashMap queryMap) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_SUBSCRIPTIONS_ENABLE_SUBSCRIPTION); return this.apiConnection.connectAndQuery(queryMap); } /** * Used to enable a subscription + * * @param query * @return */ - public JSONObject enableSubscription(ApiQuery query) { + public JSONObject enableSubscription(ApiQuery query) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_SUBSCRIPTIONS_ENABLE_SUBSCRIPTION); return this.apiConnection.connectAndQuery(query); } /** * Used to enable a subscription + * * @param code * @param token * @return */ - public JSONObject enableSubscription(String code, String token) { + public JSONObject enableSubscription(String code, String token) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_SUBSCRIPTIONS_ENABLE_SUBSCRIPTION); this.apiQuery = new ApiQuery(); @@ -125,10 +134,11 @@ public JSONObject enableSubscription(String code, String token) { /** * Used to fetch a subscription + * * @param idOrSubscriptionCode * @return */ - public JSONObject fetchSubscription(String idOrSubscriptionCode) { + public JSONObject fetchSubscription(String idOrSubscriptionCode) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_SUBSCRIPTIONS_FETCH_SUBSCRIPTION); return this.apiConnection.connectAndQueryWithGet(); } diff --git a/src/me/iyanuadelekan/paystackjava/core/Transactions.java b/src/me/iyanuadelekan/paystackjava/core/Transactions.java index 4de8727..24bbc3a 100644 --- a/src/me/iyanuadelekan/paystackjava/core/Transactions.java +++ b/src/me/iyanuadelekan/paystackjava/core/Transactions.java @@ -15,6 +15,7 @@ public class Transactions { /** * Used to initialize a transaction + * * @param queryMap * @return */ @@ -25,6 +26,7 @@ public JSONObject initializeTransaction(HashMap queryMap) { /** * Used to initialize a transaction + * * @param query * @return */ @@ -35,6 +37,7 @@ public JSONObject initializeTransaction(ApiQuery query) { /** * Used to initialize a transaction + * * @param reference * @param amount * @param email @@ -43,7 +46,7 @@ public JSONObject initializeTransaction(ApiQuery query) { * @return */ public JSONObject initializeTransaction(String reference, String amount, String email, - String plan, String callback_url) { + String plan, String callback_url) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_TRANSACTIONS_INITIALIZE_TRANSACTION); ApiQuery apiQuery = new ApiQuery(); apiQuery.putParams("reference", reference); @@ -56,6 +59,7 @@ public JSONObject initializeTransaction(String reference, String amount, String /** * Used to verify a transaction + * * @param reference * @return */ @@ -66,6 +70,7 @@ public JSONObject verifyTransaction(String reference) { /** * Used to list transactions + * * @param queryMap * @return */ @@ -76,6 +81,7 @@ public JSONObject listTransactions(HashMap queryMap) { /** * Used to list transactions + * * @param query * @return */ @@ -86,6 +92,7 @@ public JSONObject listTransactions(ApiQuery query) { /** * Used to list transactions + * * @param perPage * @param page * @return @@ -100,6 +107,7 @@ public JSONObject listTransactions(String perPage, String page) { /** * Used to fetch transactions + * * @param id * @return */ @@ -110,6 +118,7 @@ public JSONObject fetchTransaction(String id) { /** * Used for charge authorization + * * @param queryMap * @return */ @@ -120,6 +129,7 @@ public JSONObject chargeAuthorization(HashMap queryMap) { /** * Used for charge authorization + * * @param query * @return */ @@ -130,6 +140,7 @@ public JSONObject chargeAuthorization(ApiQuery query) { /** * Used for charge authorization + * * @param reference * @param authorization_code * @param amount @@ -138,7 +149,7 @@ public JSONObject chargeAuthorization(ApiQuery query) { * @return */ public JSONObject chargeAuthorization(String reference, String authorization_code, String amount, - String email, String callback_url) { + String email, String callback_url) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_TRANSACTIONS_CHARGE_AUTHORIZATION); ApiQuery apiQuery = new ApiQuery(); @@ -153,6 +164,7 @@ public JSONObject chargeAuthorization(String reference, String authorization_cod /** * Used for charge token + * * @param queryMap * @return */ @@ -163,6 +175,7 @@ public JSONObject chargeToken(HashMap queryMap) { /** * Used for charge token + * * @param query * @return */ @@ -173,6 +186,7 @@ public JSONObject chargeToken(ApiQuery query) { /** * Used for charge token + * * @param reference * @param token * @param amount @@ -193,6 +207,7 @@ public JSONObject chargeToken(String reference, String token, String amount, Str /** * Used to export transactions + * * @param queryMap * @return */ @@ -203,6 +218,7 @@ public JSONObject exportTransactions(HashMap queryMap) { /** * Used to export transactions + * * @param query * @return */ @@ -213,6 +229,7 @@ public JSONObject exportTransactions(ApiQuery query) { /** * Used to export transactions + * * @param from * @param to * @param settled diff --git a/src/test/java/Test.java b/src/test/java/Test.java index 54f703f..e835577 100644 --- a/src/test/java/Test.java +++ b/src/test/java/Test.java @@ -4,4 +4,5 @@ * @author Iyanu Adelekan on 16/04/2017. * @// TODO: 16/04/2017 Create library tests */ -public class Test {} +public class Test { +} diff --git a/target/classes/me/iyanuadelekan/paystackjava/core/ApiConnection.class b/target/classes/me/iyanuadelekan/paystackjava/core/ApiConnection.class index 523c5c54b6822c8ebdc62b282c789b685a92d8da..f028ef652ade811b6b38586c33c217c51e9ab4eb 100644 GIT binary patch delta 1594 zcmcJP$#c|26vsb3ThIK`QDRw^RT{U_R1hJFiV_7PNsLJxFcOlG#GnJjkcA15hzo&X zF`(cAG!SuDa4)T*DAy{{ix)3myzvis_To+ab`l11@dTIm>v`|>d!PQk?)l@+zwavi z{_jucfErFm%%?3wB~MybN5p9hrrok8LkFE{x+2!n9g(6ZqeySaeJY}lb!nbX^GrmJ z^=UR(Hbz`WTblmxeKweZh)oQJjG>5OMj|$ow~Q{2xQQ*6tr6w)gksww#uyJqNn<=0 zu|2H%cs`gHEH6e>&|`VYvg6Fpktr)}AJ1(VUYXmnCbxd1-!gIbH}hA_Wc@dZn$%9R zhH}5el&3Ab90hj!C|O;;$FY}1j(ubuFSEdL4+|`lj{O|)UCCQguQ*=ipx=>vpz;u} zIbP=t%bSkF9B~}QTaG!7bHXy^c#D&U+r3F&?+ck^Y3tZ%e%0v4e#hIi_zTI}@^^UG z@?I$UzT*Qvw0z|Fm;;VeWPL|!UD>>$-1c16NG?B6)jqy$Fh6kiOzKp^obw$eD@@!^ zmE`6x(WGu5c7Yp-TPiKJR)a8>l*8~456f05=TDz>-Gv0zT33*fT||i@74qDzSyyu} z_j4b0vX8KsMjn(G#S-$Au#{!Q6iFy=xmM65|6+Z^s!kEZ3avxenf!WX1-cZbU^Pn7 zL^Q}5aL)Vlu5%7fy_z%#r%^2*Wuc1J@R-^*t8t4;KVHPCDdH@<45y)p(;%G2SsY2D zeE~nRz8CC| d(?H=(+v(f9QaRyGTVhR?ii85I^fSg2{{e#u&&U7( delta 1458 zcmb`H$#YCm6oGbP1diIi$3?fd(S=Rd%tsDf9?OFU;X>+`UC!+G*%L5; zN}s(x`<}fHyw*?N=a5%s--h$j_EToRh5JV83pu}!gVc0yV- zYPd$J$H=ygoJc%=of|$kUB+96+uZSKHr(a7;hxxPB1>C8Mq0w&eOs4N!jcwBY+i>U_Dg2}`ZRL&Jb;+&P%_AoKa9cJ%~jV%GMoZNP$+LQqqT$1 z!g|VJ9ODV;B&?VT@|0EkqqI6NpNXnjAm3<$$v3`NR3NesoR zGg(AaRI^0+OOMa ztXA8-W+tNB-B2EQQml3rQ%W2b($N2k;Vtx<)w;#enfYSf_h%3Z4p8`Or4dYR2hasH)2 zB`FPR?ws17y<*rWhW%ow(>otf&4X&tA!$*sn@5ri|G7a^e~D#ZWmct3%{f7x7gU3w z8YRpH33E}xG)b6C66SIe>R*I$^Y?3V{}iTK40pwFPYf**=Dun^kT4G=%p=`=oMiZ~ z!o--Sk0LR-<+dTK*VvE*fUcy=KG9r0*I(*We4YugwGG03l78EaPFIY_4A~Gfe*j{{ ByITMN diff --git a/target/classes/me/iyanuadelekan/paystackjava/core/ApiQuery.class b/target/classes/me/iyanuadelekan/paystackjava/core/ApiQuery.class index 85fb99691e32aca4695366297ff2c9f81eda1a1a..d7cb7ac8b13864ab525355c36f6744ef54b9c8e7 100644 GIT binary patch delta 23 ecmZ3(zJ`5+5i_e40~dqzWOL>KM&-#J%qjpu%>@$x delta 23 ecmZ3(zJ`5+5i_eK0~dqTWOL>KM#ae;%qjpusRa)J diff --git a/target/classes/me/iyanuadelekan/paystackjava/core/Customers.class b/target/classes/me/iyanuadelekan/paystackjava/core/Customers.class index 45468c2d4f8c9dc2ddee2703dabcc51690f129c2..4ef06ef42f8f6bdd811b2258f6f93166c3e6742b 100644 GIT binary patch delta 183 zcmca7drx-53Qkrr23`j7$>+JnCl_!lO@78{!Kw%pQ38s{Pj=$Uku?PJj2OfiOc>-C zOc~S|%oy|-%z@B?!GXbQ@@cM4Ru`ZOSEvb5to}e=0FYNK7!72_GKez7F~~E-GiWj- zP7da&X3YkglQa1;PX=o_kX14HBCq)5aNbhZW+1Nx$eScNg+Y*E8iN$WbOt4c84TJC RGl6!`Vz6bHGr5K@2>=Q1DtrI{ delta 183 zcmca7drx-53Qks023`iS$>+JnCl_!lO@78{!72|FQ2>g_Pj=$Uk<|n8^cln$3>oAY zj2P4yj2ZM8Oc=}=Oc@*)%qO4b>ST2Qs&Isw5XI^RYZ$Iazbg zaMw3}o^{1ikjNQQVn}JkJ}Oo@c_Fo~_1c)~;6z zQn5wa75n#9V|09ky8;l<-99x4J#k?-l*>bb%kFtAtLosDjxGEoFyNlHjOJq9EEi=} zhk4lDFmsFOgBHNUJC?<2Nwp z=Al84x(ybysJlkhv73;(*~8OY!29K!)rU)F>||^+&t2cRQ&t-92*&vI+~A|vfq7p_r$IXj%3d(`5Tg0f@s2;xsF0gQ7EyT&d|P}e;NOk#>VV4A@J z6)gJruy)Y$Yb>yOj9@+%IzmV07~%ZP5wy9`wa_6VzhUGUo%tg~rw`GkOgiNux>tXH z|KBls^3zA?ja@p#<@DrKEOv-1Z*i4cpR4s#8*sHjYS&zCh}v~m8&-&eF5+3@1ctb~ zj&2NNfV7PA^N@5bbNrsM{Ff|T61`3I2dqt1_o-Jwqq=2$f*IUr#XiI`H}>%{ z|5bv_S->nkLW}};f%jZGG`2v)XBvVUdE?K0&chH>e8Kfg0`Qn#V5$I5!jn^P(SJ&H z)U`e!j9C{@zvp#AcNlYo!3PwNFyF{^+O@yX{|A${c5Tk5Yax8)4`i?%NP<9~TmWRj z7sy~ckhCw5ul<1xwFB88kj)E#eB%pbs2#{FUm%bDfw(i}@#(duL?AmC09o_}GTaWN M;sZn=;WqHe2a7GK&Hw-a literal 2325 zcma)7ZBrXn6n-{@>}FX?38hFe1^dD~O{=xFv``BM1wud)&{S<$k_8sRZcH{#nQ{E+ z_|ef%{sO;hrwubQ;}7s(_(#;|?j|IJoxu;e=j^%XocrA8oOAQnKY#oQ;2z2<-ob)` zk7azKU{OUImSile2q7Vs6&XntVJwJcRan-9_GuXFNGV9G*ubWY&s20{Nx|nrW)zGF z`8)UDxFQm=hx%u>~cIKA(GhFztLj_ z-P(<%oRVqnKCZj1ZOkPW=RLQs#NuZBOrU3J_EDKIyO_*wq~a1nPfW{nW+k+Zj%`W^ z&f9r|i4&$}BrAv8Mk%dt7iftj?3`ZM)JvxLt{H>Qo>`VKmN+zG=8vP(?;ANsLT|z@?Z)=YwiR1SttLG)-8**7 zf-!Gfj$zR&D83|I^0+YV*aE-lC6{x$Wf>(2J>FKuF$=MjXXL&bf0;9ij%izE8QZ)} z*>KWE**Qa0@924o1to2S$&g)!v=-&c=-By~T6*Ez%=&49Ge!bAS25vv-dOiM6JGah zHmWJRQpy>E8geYCz9XujVH9H$AVG7BQe*Gbh13g|X$jr#elvw)Bc~w`X6$o!oBD9B zVixj7Ny83yHSA$VgNYd#`x*{VkkBcR4CTBUPRlsdV2NXTd@9cVc(%4ES~;b`Mp47p zVCE6r)Nn&Ax5RQ=EW@}dVdQ@{o`lN{*!7-^HuI3QodvsMJk%PZ-e;m2TOc_WAf(`Kn1=}wv=1SI$5~8MDRsPtQ?85+Q*L}{Z1u-39cd6*nvsvn&*Hi+~Jo98KW12 zrCvVQ?X>(H39Ou;EfWbIqdj?oP-f~F@^r92ScUQnq9+Jvj-gIg(IHG4Wfh$(zyAC8 zD_p8=M!IMf9^9$o@(H>#lgEfedaAgR7@vsrR&n(W`l!9-YW>u%x!M4=w_Pnt?YgTC zHm>pjorKs=sMn|spbt?D;yNCYxpi{4MOOC7nZqXkjy?VZdHRW06j#6RU9WcaExd=j z{L^BG;77d6xBxSLPwRbJ`tU8@#{&fMkdZ-peZch*rl|?0XXzcF42@5`L4O0E>RRve zq>5$p*or6`JftNvI@&_*Q$->5$p*or6`3ftNvi@&_*Q$-pTO8EhHa7(5u-8NwJk JC-36*0{}@OC|m#l diff --git a/target/classes/me/iyanuadelekan/paystackjava/core/Plans.class b/target/classes/me/iyanuadelekan/paystackjava/core/Plans.class index f1b85e4aeb23c41d9cfdc59734618c46dc14f519..59824a514f209b0c85d782cf2bbd29be57fa56e5 100644 GIT binary patch delta 195 zcmaDU_fl@dDNa@~20jMy$>%wXSrvgSB_KV*aR;)olUNF=Ij>%3u0fKQrk$46%hC~Kg zh9m|RhLp*Rd1_hnfM(`TR^`oNtpc*DCr{yRWNl**VrZW%#kWOuCXh9YL7HI>gEGTh g25p9UK>O!2I4~?=@L^cU5X!KKA&z0m%wXS>=H&1t3d&avWEOq5+U+$RN&O%plKT!l2Gz%3#D` z#$d-_&fvvh!4S+~HJP1zKC3fOl?zah<>V*aR;<22o*&c%j>%3u0fG@gkw^wHhG+&^ zh8PAFhPcU#d1_hHfo5h*R^`oNEdsKNCr{yRWUXZoVyK%e#kWPZAIO@(Ak8p|L78DP ggEqqypq*1092llC_%KXo2xXYT5XUfU@@Kv>044e>WB>pF diff --git a/target/classes/me/iyanuadelekan/paystackjava/core/Subscriptions.class b/target/classes/me/iyanuadelekan/paystackjava/core/Subscriptions.class index 448053e48b49fe43d97fb96bde9764c4bcc09251..c4022795c844cd344043ab217e8fe461c33e07a6 100644 GIT binary patch delta 179 zcmZn>ZxP=hz|Jbpz{?;pIiE{>vH+LTWIuKbRwbZ_GEhW*@+$TeQGFoKfI))6h(U?L zm_diZgu#r#Y_c*(Hmd_r#u2Xb42K1)H&Da}tW$$CN-!MAiva430_uzg>WrQIlS^~* w9!?9^bf8QIRA&@x5s+65ZxP=hz|Jbhz{?;$IiE{>vH+LTWIuKbRt2DlB2Ywr@+$TeQ5_&pmqCI-pFxSi zfI)}Bkim?>c(O7_HmeO##ul#g42K1)8&Jd@tW$$CN-z+}3j*p40qP6|>I|R!lS^~* w9!?9^1fWbJRA&@x7Lb<>T|7122QbWJRt*RwW=y8ORc!ypF3x)(FTmW)NdAVUS}mWl&=xg0&OK>w@c_$Co2J6DTqZ=$1J^ z9dm(hnFn;se4twv0Nt_(=oZDv9{d@sYk;cOf=zkHZ^619$lC!o#Y-Sr@+eT`7|@gx zKvPZvO*sWLmBm?rrFDDn}g`!i7Y7ohI1 R42BHf7_1n6OpX)s0|4gFP;LMK delta 333 zcmZ3Zx<++_3>T{y122R4WJRt*Rs|qS5y%psypF3xRv*YSU=U+4WRPPpVo+l+X3%3W zVK8SfWpH3Hn{3ZLlhqz5<1qOycQ~sjP^}kGr{&}#9t+lBATI=J4#(tkJbr?4K#_O` zQHBHt8HPj#Wrn25y1dn_*+Bg{lh^Wwvz7wo%fR}b_$*lKfxHH|{&{>kvVB02exO?> z0(DFRx@9uZEmMGQnF@5vbf8-lCwuT`ur2_qS_n4f9lr(ZDj;t)+!QZ?WXbJ7ksUx& zb^%S<4K!sB(3HJEQ}$0jCQ#3M0w{YDth-szg7p%RcNwnxzF?Z - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From f15efe43cef29d64bfa4fdad12f5dcc358e12f8f Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Sun, 28 Dec 2025 16:36:16 +0000 Subject: [PATCH 21/25] chore: update project dependencies --- pom.xml | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/pom.xml b/pom.xml index bea72c9..f6ee363 100644 --- a/pom.xml +++ b/pom.xml @@ -35,30 +35,15 @@ unirest-java 1.4.9 - - org.apache.httpcomponents - httpclient - 4.5.3 - - - org.apache.httpcomponents - httpasyncclient - 4.1.3 - - - org.apache.httpcomponents - httpmime - 4.5.3 - org.json json - 20170516 + 20250517 junit junit - 4.12 + 4.13.2 test From ebef4ca29c584e49d08b808ed5b72b0c2ee661ae Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Sun, 28 Dec 2025 16:42:44 +0000 Subject: [PATCH 22/25] documentation: update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index da32b57..e3e6c3d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,3 @@ -[![Issue Count](https://codeclimate.com/github/SeunAdelekan/PaystackJava/badges/issue_count.svg)](https://codeclimate.com/github/SeunAdelekan/PaystackJava) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) # PaystackJava From ad26fa3a9a2ff581727127bc7b9ede17ff1e2feb Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Sun, 28 Dec 2025 17:11:28 +0000 Subject: [PATCH 23/25] refactor: update project to read API key from environment variable and update README --- Keys.json | 9 -- README.md | 15 +-- .../paystackjava/core/ApiConnection.java | 17 +-- .../paystackjava/core/ApiKeyManager.java | 22 ++++ .../iyanuadelekan/paystackjava/core/Keys.java | 115 ------------------ 5 files changed, 27 insertions(+), 151 deletions(-) delete mode 100644 Keys.json create mode 100644 src/me/iyanuadelekan/paystackjava/core/ApiKeyManager.java delete mode 100644 src/me/iyanuadelekan/paystackjava/core/Keys.java diff --git a/Keys.json b/Keys.json deleted file mode 100644 index 811cacb..0000000 --- a/Keys.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "API_KEYS": { - "KEY_IN_USE": "sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", - "TEST_SECRET_KEY": "sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", - "TEST_PUBLIC_KEY": "pk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", - "LIVE_SECRET_KEY": "sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", - "LIVE_PUBLIC_KEY": "pk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - } -} diff --git a/README.md b/README.md index e3e6c3d..294461c 100644 --- a/README.md +++ b/README.md @@ -68,20 +68,7 @@ new Pages().createPage(query); ApiConnection.shutDown(); ``` -## NOTE -### PaystackJava utilizes a Keys.json file for the management of api key resources. This file must be placed in your root project directory and has the following structure: -```json -{ - "API_KEYS":{ - "KEY_IN_USE": "sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", - "TEST_SECRET_KEY": "sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", - "TEST_PUBLIC_KEY": "pk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", - "LIVE_SECRET_KEY": "sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", - "LIVE_PUBLIC_KEY": "pk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - } -} -``` -### The value attached to KEY_IN_USE is the value used for Authorization by PaystackJava +**NOTE**: PaystackJava reads the API key it uses for authorization via a 'PAYSTACK_API_KEY' environment variable. Ensure you define the variable for your project as necessary. ## Utilities at a glance ### ApiConnection {Class}: diff --git a/src/me/iyanuadelekan/paystackjava/core/ApiConnection.java b/src/me/iyanuadelekan/paystackjava/core/ApiConnection.java index 737a307..19f9ee5 100644 --- a/src/me/iyanuadelekan/paystackjava/core/ApiConnection.java +++ b/src/me/iyanuadelekan/paystackjava/core/ApiConnection.java @@ -6,7 +6,6 @@ import com.mashape.unirest.http.exceptions.UnirestException; import org.json.JSONObject; -import java.io.FileNotFoundException; import java.io.IOException; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; @@ -25,24 +24,16 @@ */ public class ApiConnection { - private String url; - private String apiKey; + private final String url; + private final String apiKey; /** * @param url - Paystack API URL */ public ApiConnection(String url) { this.url = url; - Keys keys = new Keys(); - - try { - keys.initKeys(); - } catch (FileNotFoundException e) { - System.out.print("Required Keys.json file could not be found."); - e.printStackTrace(); - } - - this.apiKey = keys.KEY_IN_USE; + ApiKeyManager apiKeyManager = new ApiKeyManager(); + this.apiKey = apiKeyManager.getApiKey(); this.enforceTlsV1point2(); } diff --git a/src/me/iyanuadelekan/paystackjava/core/ApiKeyManager.java b/src/me/iyanuadelekan/paystackjava/core/ApiKeyManager.java new file mode 100644 index 0000000..7c2e450 --- /dev/null +++ b/src/me/iyanuadelekan/paystackjava/core/ApiKeyManager.java @@ -0,0 +1,22 @@ +package me.iyanuadelekan.paystackjava.core; + +/** + * @author Iyanu Adelekan on 18/07/2016. + */ +class ApiKeyManager { + + private final String apiKey; + + ApiKeyManager() { + this.apiKey = System.getenv("PAYSTACK_API_KEY"); + } + + /** + * Gets Paystack API key + * @return - API key + */ + String getApiKey() { + return apiKey; + } + +} diff --git a/src/me/iyanuadelekan/paystackjava/core/Keys.java b/src/me/iyanuadelekan/paystackjava/core/Keys.java deleted file mode 100644 index b6838eb..0000000 --- a/src/me/iyanuadelekan/paystackjava/core/Keys.java +++ /dev/null @@ -1,115 +0,0 @@ -package me.iyanuadelekan.paystackjava.core; - -import org.json.JSONObject; -import java.io.File; -import java.io.FileNotFoundException; -import java.util.Scanner; - -/** - * @author Iyanu Adelekan on 18/07/2016. - */ -class Keys { - - private String TEST_SECRET_KEY; - private String TEST_PUBLIC_KEY; - private String LIVE_SECRET_KEY; - private String LIVE_PUBLIC_KEY; - String KEY_IN_USE; - - /** - * Used to initialise all necessary API keys - * - * @throws FileNotFoundException - */ - void initKeys() throws FileNotFoundException { - JSONObject keyObject; - String fileContent = ""; - File file = new File("Keys.json"); - Scanner scanner = new Scanner(file); - - while (scanner.hasNext()) { - fileContent += scanner.nextLine(); - } - keyObject = new JSONObject(fileContent).getJSONObject("API_KEYS"); - - this.KEY_IN_USE = keyObject.getString("KEY_IN_USE"); - this.TEST_SECRET_KEY = keyObject.getString("TEST_SECRET_KEY"); - this.TEST_PUBLIC_KEY = keyObject.getString("TEST_PUBLIC_KEY"); - this.LIVE_SECRET_KEY = keyObject.getString("LIVE_SECRET_KEY"); - this.LIVE_PUBLIC_KEY = keyObject.getString("LIVE_PUBLIC_KEY"); - - } - - /** - * Used to set test secret key - * - * @param key - */ - protected void setTest_SECRET_KEY(String key) { - this.TEST_SECRET_KEY = key; - } - - /** - * Used to get test secret key - * - * @return - */ - protected String getTEST_SECRET_KEY() { - return this.TEST_SECRET_KEY; - } - - /** - * Used to set test public key - * - * @param key - */ - protected void setTEST_PUBLIC_KEY(String key) { - this.TEST_PUBLIC_KEY = key; - } - - /** - * Used to get test public key - * - * @return - */ - protected String getTEST_PUBLIC_KEY() { - return this.TEST_PUBLIC_KEY; - } - - /** - * Used to set live secret key - * - * @param key - */ - protected void setLIVE_SECRET_KEY(String key) { - this.LIVE_SECRET_KEY = key; - } - - /** - * Used to get live secret key - * - * @return - */ - protected String getLIVE_SECRET_KEY() { - return this.LIVE_SECRET_KEY; - } - - /** - * Used to set live public key - * - * @param key - */ - protected void setLIVE_PUBLIC_KEY(String key) { - this.LIVE_PUBLIC_KEY = key; - } - - /** - * Used to get live public key - * - * @return - */ - protected String getLIVE_PUBLIC_KEY() { - return this.LIVE_PUBLIC_KEY; - } - -} From 21271d81aa292c93bdff4686f4f12a1a80266b51 Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Sun, 28 Dec 2025 17:12:23 +0000 Subject: [PATCH 24/25] chore: update pom.xml --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index f6ee363..a7467f8 100644 --- a/pom.xml +++ b/pom.xml @@ -2,10 +2,10 @@ 4.0.0 - me.iyanuadelekan + com.iyanuadelekan paystackjava jar - 1.1.0 + 2.0.0 PaystackJava A Java based API wrapper for the Paystack API πŸ’°πŸ’ΈπŸ’°πŸ’° From f10f3140e5780ae55e971a83df550494ea8ed85b Mon Sep 17 00:00:00 2001 From: Iyanu Adelekan Date: Sun, 28 Dec 2025 17:31:54 +0000 Subject: [PATCH 25/25] chore: update license file --- LICENSE | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/LICENSE b/LICENSE index c3d61b8..11e6525 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -The MIT License (MIT) +MIT License Copyright (c) 2016 Iyanu Adelekan @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +SOFTWARE. \ No newline at end of file