src/me/iyanuadelekan/paystackjava/core/Customers.java
package me.iyanuadelekan.paystackjava.core; import me.iyanuadelekan.paystackjava.constants.Definitions; import org.json.JSONObject;import java.util.HashMap; /** * @author Iyanu Adelekan on 17/07/2016. */public class Customers { private ApiConnection apiConnection; /** * Used to create a new customer * * @param queryMap * @return JSONObject */ public JSONObject createCustomer(HashMap<String, Object> 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 */ public JSONObject createCustomer(ApiQuery query) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_CUSTOMERS_CREATE_CUSTOMER); return this.apiConnection.connectAndQuery(query); } /** * Used to create a new customer * * @param email * @param firstName * @param lastName * @param phone * @param metadata * @return JSONObject */Method `createCustomer` has 5 arguments (exceeds 4 allowed). Consider refactoring.
Similar blocks of code found in 3 locations. Consider refactoring. public JSONObject createCustomer(String email, String firstName, String lastName, 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); return this.apiConnection.connectAndQuery(apiQuery); } /** * Used to get a list of customers * * @param queryMap * @return JSONObject */ public JSONObject listCustomers(HashMap<String, Object> 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 */ public JSONObject listCustomers(ApiQuery query) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_CUSTOMERS_LIST_CUSTOMERS); return this.apiConnection.connectAndQueryWithGet(query); } /** * Used to get a list of customers * * @param perPage * @param page * @return JSONObject */Similar blocks of code found in 3 locations. Consider refactoring. 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); return this.apiConnection.connectAndQueryWithGet(apiQuery); } /** * Used to get a customer * * @param idOrCustomerCode * @return JSONObject */ public JSONObject fetchCustomer(String idOrCustomerCode) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_CUSTOMERS_FETCH_CUSTOMER + idOrCustomerCode); return this.apiConnection.connectAndQueryWithGet(); } /** * Used to update a customer * * @param queryMap * @param idOrCustomerCode * @return JSONObject */ public JSONObject updateCustomer(HashMap<String, Object> 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 */ public JSONObject updateCustomer(ApiQuery query, String idOrCustomerCode) { this.apiConnection = new ApiConnection(Definitions.PAYSTACK_CUSTOMERS_UPDATE_CUSTOMER + idOrCustomerCode); return this.apiConnection.connectAndQueryWithPut(query); } /** * Used to update a customer * * @param idOrCustomerCode * @param email * @param firstName * @param lastName * @param phone * @param metadata * @return JSONObject */Method `updateCustomer` has 6 arguments (exceeds 4 allowed). Consider refactoring. public JSONObject updateCustomer(String idOrCustomerCode, String email, String firstName, String lastName, 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); return this.apiConnection.connectAndQueryWithPut(apiQuery); } }