Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ public BankAccountTrackingAdapter(RequestOptions requestOptions) {
public BankAccountTrackingRecordListResponse searchRecords(SearchBankAccountTrackingRecordsRequest request) {
String query = RequestQueryParamsBuilder.buildQueryParam(request);
String path = "/bank-account-tracking/v1/merchant-bank-account-trackings/records" + query;
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), BankAccountTrackingRecordListResponse.class);
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), BankAccountTrackingRecordListResponse.class);
}

public BankAccountTrackingRecordResponse retrieveRecord(Long id) {
String path = "/bank-account-tracking/v1/merchant-bank-account-trackings/records/" + id;
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), BankAccountTrackingRecordResponse.class);
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), BankAccountTrackingRecordResponse.class);
}
}
35 changes: 24 additions & 11 deletions src/main/java/io/craftgate/adapter/BaseAdapter.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.craftgate.adapter;

import io.craftgate.request.common.HashGenerator;
import io.craftgate.request.common.RequestContext;
import io.craftgate.request.common.RequestOptions;

import java.util.HashMap;
Expand All @@ -18,37 +19,49 @@ public abstract class BaseAdapter {
private static final String CLIENT_VERSION_HEADER_NAME = "x-client-version";
private static final String SIGNATURE_HEADER_NAME = "x-signature";
private static final String LANGUAGE_HEADER_NAME = "lang";
private static final String IDEMPOTENCY_KEY = "x-idempotency-key";

protected final RequestOptions requestOptions;

protected BaseAdapter(RequestOptions requestOptions) {
this.requestOptions = requestOptions;
}

protected Map<String, String> createHeaders(Object request, String path, RequestOptions requestOptions) {
return createHttpHeaders(request, path, requestOptions);
protected Map<String, String> createHeaders(Object request, String path) {
return createHttpHeaders(request, path, null);
}

protected Map<String, String> createHeaders(String path, RequestOptions requestOptions) {
return createHttpHeaders(null, path, requestOptions);
protected Map<String, String> createHeaders(Object request, String path, RequestContext requestContext) {
return createHttpHeaders(request, path, requestContext);
}

private static Map<String, String> createHttpHeaders(Object request, String path, RequestOptions options) {
protected Map<String, String> createHeaders(String path) {
return createHttpHeaders(null, path, null);
}

protected Map<String, String> createHeaders(String path, RequestContext requestContext) {
return createHttpHeaders(null, path, requestContext);
}

private Map<String, String> createHttpHeaders(Object request, String path, RequestContext requestContext) {
Map<String, String> headers = new HashMap<>();

String randomString = UUID.randomUUID().toString();
headers.put(API_KEY_HEADER_NAME, options.getApiKey());
headers.put(API_KEY_HEADER_NAME, requestOptions.getApiKey());
headers.put(RANDOM_HEADER_NAME, randomString);
headers.put(AUTH_VERSION_HEADER_NAME, API_VERSION_HEADER_VALUE);
headers.put(CLIENT_VERSION_HEADER_NAME, CLIENT_VERSION_HEADER_VALUE + ":1.0.79");
headers.put(SIGNATURE_HEADER_NAME, prepareAuthorizationString(request, path, randomString, options));
if (Objects.nonNull(options.getLanguage())) {
headers.put(LANGUAGE_HEADER_NAME, options.getLanguage());
headers.put(SIGNATURE_HEADER_NAME, prepareAuthorizationString(request, path, randomString));
if (Objects.nonNull(requestOptions.getLanguage())) {
headers.put(LANGUAGE_HEADER_NAME, requestOptions.getLanguage());
}
if (Objects.nonNull(requestContext) && Objects.nonNull(requestContext.getIdempotencyKey())) {
headers.put(IDEMPOTENCY_KEY, requestContext.getIdempotencyKey());
}
return headers;
}

private static String prepareAuthorizationString(Object request, String path, String randomString, RequestOptions options) {
return HashGenerator.generateHash(options.getBaseUrl(), options.getApiKey(), options.getSecretKey(), randomString, request, path);
private String prepareAuthorizationString(Object request, String path, String randomString) {
return HashGenerator.generateHash(requestOptions.getBaseUrl(), requestOptions.getApiKey(), requestOptions.getSecretKey(), randomString, request, path);
}
}
25 changes: 18 additions & 7 deletions src/main/java/io/craftgate/adapter/BkmExpressPaymentAdapter.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package io.craftgate.adapter;

import io.craftgate.net.HttpClient;
import io.craftgate.request.*;
import io.craftgate.request.CompleteBkmExpressRequest;
import io.craftgate.request.InitBkmExpressRequest;
import io.craftgate.request.common.RequestContext;
import io.craftgate.request.common.RequestOptions;
import io.craftgate.response.*;
import io.craftgate.response.InitBkmExpressResponse;
import io.craftgate.response.PaymentResponse;

public class BkmExpressPaymentAdapter extends BaseAdapter {

Expand All @@ -12,24 +15,32 @@ public BkmExpressPaymentAdapter(RequestOptions requestOptions) {
}

public InitBkmExpressResponse init(InitBkmExpressRequest initBkmExpressRequest) {
return init(initBkmExpressRequest, null);
}

public InitBkmExpressResponse init(InitBkmExpressRequest initBkmExpressRequest, RequestContext requestContext) {
String path = "/payment/v1/bkm-express/init";
return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initBkmExpressRequest, path, requestOptions),
return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initBkmExpressRequest, path, requestContext),
initBkmExpressRequest, InitBkmExpressResponse.class);
}

public PaymentResponse complete(CompleteBkmExpressRequest completeRequest) {
return complete(completeRequest, null);
}

public PaymentResponse complete(CompleteBkmExpressRequest completeRequest, RequestContext requestContext) {
String path = "/payment/v1/bkm-express/complete";
return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(completeRequest, path, requestOptions),
return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(completeRequest, path, requestContext),
completeRequest, PaymentResponse.class);
}

public PaymentResponse retrievePayment(String ticketId) {
String path = "/payment/v1/bkm-express/payments/" + ticketId;
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PaymentResponse.class);
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), PaymentResponse.class);
}

public PaymentResponse retrievePaymentByToken(String token) {
String path = "/payment/v1/bkm-express/" + token;
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PaymentResponse.class);
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), PaymentResponse.class);
}
}
}
13 changes: 9 additions & 4 deletions src/main/java/io/craftgate/adapter/FileReportingAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import io.craftgate.request.RetrieveDailyPaymentReportRequest;
import io.craftgate.request.RetrieveDailyTransactionReportRequest;
import io.craftgate.request.RetrieveReportRequest;
import io.craftgate.request.common.RequestContext;
import io.craftgate.request.common.RequestOptions;
import io.craftgate.request.common.RequestQueryParamsBuilder;
import io.craftgate.response.ReportDemandResponse;
Expand All @@ -23,22 +24,26 @@ public FileReportingAdapter(RequestOptions requestOptions) {
public byte[] retrieveDailyTransactionReport(RetrieveDailyTransactionReportRequest retrieveDailyTransactionReportRequest) {
String query = RequestQueryParamsBuilder.buildQueryParam(retrieveDailyTransactionReportRequest);
String path = "/file-reporting/v1/transaction-reports" + query;
Map<String, String> headers = createHeaders(path, requestOptions);
Map<String, String> headers = createHeaders(path);
headers.put(CONTENT_TYPE, APPLICATION_OCTET_STREAM);
return HttpClient.get(requestOptions.getBaseUrl() + path, headers, byte[].class);
}

public byte[] retrieveDailyPaymentReport(RetrieveDailyPaymentReportRequest retrieveDailyPaymentReportRequest) {
String query = RequestQueryParamsBuilder.buildQueryParam(retrieveDailyPaymentReportRequest);
String path = "/file-reporting/v1/payment-reports" + query;
Map<String, String> headers = createHeaders(path, requestOptions);
Map<String, String> headers = createHeaders(path);
headers.put(CONTENT_TYPE, APPLICATION_OCTET_STREAM);
return HttpClient.get(requestOptions.getBaseUrl() + path, headers, byte[].class);
}

public ReportDemandResponse createReport(CreateReportRequest request) {
return createReport(request, null);
}

public ReportDemandResponse createReport(CreateReportRequest request, RequestContext requestContext) {
String path = "/file-reporting/v1/report-demands";
Map<String, String> headers = createHeaders(request, path, requestOptions);
Map<String, String> headers = createHeaders(request, path, requestContext);
return HttpClient.post(requestOptions.getBaseUrl() + path,
headers,
request,
Expand All @@ -48,7 +53,7 @@ public ReportDemandResponse createReport(CreateReportRequest request) {
public byte[] retrieveReport(RetrieveReportRequest retrieveReportRequest, Long reportId) {
String query = RequestQueryParamsBuilder.buildQueryParam(retrieveReportRequest);
String path = "/file-reporting/v1/reports/" + reportId + query;
Map<String, String> headers = createHeaders(path, requestOptions);
Map<String, String> headers = createHeaders(path);
headers.put(CONTENT_TYPE, APPLICATION_OCTET_STREAM);
return HttpClient.get(requestOptions.getBaseUrl() + path, headers, byte[].class);
}
Expand Down
38 changes: 27 additions & 11 deletions src/main/java/io/craftgate/adapter/FraudAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import io.craftgate.model.FraudValueType;
import io.craftgate.net.HttpClient;
import io.craftgate.request.*;
import io.craftgate.request.common.RequestContext;
import io.craftgate.request.common.RequestOptions;
import io.craftgate.request.common.RequestQueryParamsBuilder;
import io.craftgate.response.FraudAllValueListsResponse;
Expand All @@ -20,24 +21,24 @@ public FraudAdapter(RequestOptions requestOptions) {
public FraudCheckListResponse searchFraudChecks(SearchFraudChecksRequest searchFraudChecksRequest) {
String query = RequestQueryParamsBuilder.buildQueryParam(searchFraudChecksRequest);
String path = "/fraud/v1/fraud-checks" + query;
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), FraudCheckListResponse.class);
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), FraudCheckListResponse.class);
}

public void updateFraudCheckStatus(Long id, FraudCheckStatus fraudCheckStatus) {
String path = "/fraud/v1/fraud-checks/" + id + "/check-status";
UpdateFraudCheckRequest updateFraudCheckRequest = UpdateFraudCheckRequest.builder().checkStatus(fraudCheckStatus).build();
HttpClient.put(requestOptions.getBaseUrl() + path, createHeaders(updateFraudCheckRequest, path, requestOptions),
HttpClient.put(requestOptions.getBaseUrl() + path, createHeaders(updateFraudCheckRequest, path),
updateFraudCheckRequest, Void.class);
}

public FraudAllValueListsResponse retrieveAllValueLists() {
String path = "/fraud/v1/value-lists/all";
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), FraudAllValueListsResponse.class);
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), FraudAllValueListsResponse.class);
}

public FraudValueListResponse retrieveValueList(String listName) {
String path = "/fraud/v1/value-lists/" + listName;
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), FraudValueListResponse.class);
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), FraudValueListResponse.class);
}

public void createValueList(String listName, FraudValueType type) {
Expand All @@ -46,31 +47,46 @@ public void createValueList(String listName, FraudValueType type) {
}

public void deleteValueList(String listName) {
String path = "/fraud/v1/value-lists/" + listName;
deleteValueList(listName, null);
}

HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions));
public void deleteValueList(String listName, RequestContext requestContext) {
String path = "/fraud/v1/value-lists/" + listName;
HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestContext));
}

public void addValueToValueList(FraudValueListRequest fraudValueListRequest) {
addValueToValueList(fraudValueListRequest, null);
}

public void addValueToValueList(FraudValueListRequest fraudValueListRequest, RequestContext requestContext) {
String path = "/fraud/v1/value-lists";
HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(fraudValueListRequest, path, requestOptions),
HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(fraudValueListRequest, path, requestContext),
fraudValueListRequest, Void.class);
}

public void addCardFingerprint(AddCardFingerprintFraudValueListRequest request, String listName) {
String path = "/fraud/v1/value-lists/"+ listName + "/card-fingerprints";
HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestOptions),
addCardFingerprint(request, listName, null);
}

public void addCardFingerprint(AddCardFingerprintFraudValueListRequest request, String listName, RequestContext requestContext) {
String path = "/fraud/v1/value-lists/" + listName + "/card-fingerprints";
HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestContext),
request, Void.class);
}

public void removeValueFromValueList(String listName, String valueId) {
removeValueFromValueList(listName, valueId, null);
}

public void removeValueFromValueList(String listName, String valueId, RequestContext requestContext) {
String path = "/fraud/v1/value-lists/" + listName + "/values/" + valueId;
HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions));
HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestContext));
}

public FraudRuleListResponse searchRules(SearchFraudRuleRequest searchFraudRuleRequest) {
String query = RequestQueryParamsBuilder.buildQueryParam(searchFraudRuleRequest);
String path = "/fraud/v1/rules" + query;
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), FraudRuleListResponse.class);
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), FraudRuleListResponse.class);
}
}
4 changes: 2 additions & 2 deletions src/main/java/io/craftgate/adapter/InstallmentAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ public InstallmentAdapter(RequestOptions requestOptions) {
public InstallmentListResponse searchInstallments(SearchInstallmentsRequest searchInstallmentsRequest) {
String query = RequestQueryParamsBuilder.buildQueryParam(searchInstallmentsRequest);
String path = "/installment/v1/installments" + query;
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), InstallmentListResponse.class);
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), InstallmentListResponse.class);
}

public BinNumberResponse retrieveBinNumber(String binNumber) {
String path = "/installment/v1/bins/" + binNumber;
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), BinNumberResponse.class);
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), BinNumberResponse.class);
}
}
17 changes: 11 additions & 6 deletions src/main/java/io/craftgate/adapter/JuzdanPaymentAdapter.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package io.craftgate.adapter;

import io.craftgate.net.HttpClient;
import io.craftgate.request.*;
import io.craftgate.request.InitJuzdanPaymentRequest;
import io.craftgate.request.common.RequestContext;
import io.craftgate.request.common.RequestOptions;
import io.craftgate.response.*;
import io.craftgate.response.InitJuzdanPaymentResponse;
import io.craftgate.response.PaymentResponse;

public class JuzdanPaymentAdapter extends BaseAdapter {

Expand All @@ -12,14 +14,17 @@ public JuzdanPaymentAdapter(RequestOptions requestOptions) {
}

public InitJuzdanPaymentResponse init(InitJuzdanPaymentRequest initJuzdanPaymentRequest) {
return init(initJuzdanPaymentRequest, null);
}

public InitJuzdanPaymentResponse init(InitJuzdanPaymentRequest initJuzdanPaymentRequest, RequestContext requestContext) {
String path = "/payment/v1/juzdan-payments/init";
return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initJuzdanPaymentRequest, path, requestOptions),
return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initJuzdanPaymentRequest, path, requestContext),
initJuzdanPaymentRequest, InitJuzdanPaymentResponse.class);
}

public PaymentResponse retrieve(String referenceId) {
String path = "/payment/v1/juzdan-payments/" + referenceId;
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PaymentResponse.class);
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), PaymentResponse.class);
}

}
}
Loading
Loading