Skip to content

Commit

Permalink
added quote endpoints
Browse files Browse the repository at this point in the history
rename InstantConversion to Conversions
  • Loading branch information
mihaimoiseanu committed Feb 22, 2024
1 parent 0eb5ffa commit c5a17fa
Show file tree
Hide file tree
Showing 8 changed files with 204 additions and 62 deletions.
12 changes: 6 additions & 6 deletions src/main/java/com/mangopay/MangoPayApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public MangoPayApi() {
setSettlementApi(new SettlementApiImpl(this));
setRegulatoryApi(new RegulatoryApiImpl(this));
setDepositApi(new DepositApiImpl(this));
setInstantConversionApi(new InstantConversionApiImpl(this));
setConversionsApi(new ConversionsApiImpl(this));
setGson(gsonBuilder.create());
}

Expand Down Expand Up @@ -206,7 +206,7 @@ public MangoPayApi() {
/**
* Provides Instant conversion methods
*/
private InstantConversionApi instantConversionApi;
private ConversionsApi conversionApi;

private Gson gson;

Expand Down Expand Up @@ -447,11 +447,11 @@ public MangoPayApi setDepositApi(DepositApi depositApi) {
return this;
}

public InstantConversionApi getInstantConversionApi() {
return instantConversionApi;
public ConversionsApi getConversionsApi() {
return conversionApi;
}

public void setInstantConversionApi(InstantConversionApi instantConversionApi) {
this.instantConversionApi = instantConversionApi;
public void setConversionsApi(ConversionsApi conversionApi) {
this.conversionApi = conversionApi;
}
}
9 changes: 5 additions & 4 deletions src/main/java/com/mangopay/core/APIs/ApiBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,8 @@ protected MangoPayApi getRoot() {
put("get_conversion_rate", new String[]{"/conversion/rate/%s/%s", RequestType.GET.toString()});
put("create_instant_conversion", new String[]{"/instant-conversion", RequestType.POST.toString()});
put("get_instant_conversion", new String[]{"/instant-conversion/%s", RequestType.GET.toString()});
put("create_conversion_quote", new String[]{"/conversions/quote", RequestType.POST.toString()});
put("get_conversion_quote", new String[]{"/conversions/quote/%s", RequestType.GET.toString()});

}};

Expand Down Expand Up @@ -329,11 +331,10 @@ protected <T extends Dto, U extends Dto> T createObject(Class<T> classOfT, Strin
}

/**
*
* @param classOfT Type on behalf of which the request is being called.
* @param classOfT Type on behalf of which the request is being called.
* @param methodKey Relevant method key.
* @param args Arguments that will be set on the method
* @param <T> Type on behalf of which the request is being called.
* @param args Arguments that will be set on the method
* @param <T> Type on behalf of which the request is being called.
* @return The Dto instance returned from API.
* @throws Exception
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package com.mangopay.core.APIs;

import com.mangopay.entities.ConversionQuote;
import com.mangopay.entities.ConversionRate;
import com.mangopay.entities.InstantConversion;

public interface InstantConversionApi {
public interface ConversionsApi {

/**
* This endpoint allows the platform to get a real
Expand All @@ -29,4 +30,19 @@ public interface InstantConversionApi {
* @return InstantConversion object returned from API
*/
InstantConversion getInstantConversion(String id) throws Exception;

/**
* This call guarantees a conversion rate to let you Create a Quoted Conversion.
*
* @return Quote object returned from API
*/
ConversionQuote createConversionQuote(ConversionQuote conversionQuote, String idempotencyKey) throws Exception;

/**
* This endpoint allows the platform to get the details of a quote
*
* @param quoteId The unique identifier of the quote
* @return Quote object returned from API
*/
ConversionQuote getConversionQuote(String quoteId) throws Exception;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,19 @@

import com.mangopay.MangoPayApi;
import com.mangopay.core.APIs.ApiBase;
import com.mangopay.core.APIs.InstantConversionApi;
import com.mangopay.core.APIs.ConversionsApi;
import com.mangopay.entities.ConversionQuote;
import com.mangopay.entities.ConversionRate;
import com.mangopay.entities.InstantConversion;

public class InstantConversionApiImpl extends ApiBase implements InstantConversionApi {
public class ConversionsApiImpl extends ApiBase implements ConversionsApi {

/**
* Creates new API instance.
*
* @param root Root/parent instance that holds the OAuthToken and Configuration instance.
*/
public InstantConversionApiImpl(MangoPayApi root) {
public ConversionsApiImpl(MangoPayApi root) {
super(root);
}

Expand All @@ -29,6 +30,16 @@ public InstantConversion createInstantConversion(InstantConversion conversion, S

@Override
public InstantConversion getInstantConversion(String id) throws Exception {
return this.getObject(InstantConversion.class, "get_instant_conversion",id);
return this.getObject(InstantConversion.class, "get_instant_conversion", id);
}

@Override
public ConversionQuote createConversionQuote(ConversionQuote conversionQuote, String idempotencyKey) throws Exception {
return this.createObject(ConversionQuote.class, idempotencyKey, "create_conversion_quote", conversionQuote);
}

@Override
public ConversionQuote getConversionQuote(String quoteId) throws Exception {
return this.getObject(ConversionQuote.class, "get_conversion_quote", quoteId);
}
}
69 changes: 69 additions & 0 deletions src/main/java/com/mangopay/entities/ConversionQuote.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package com.mangopay.entities;

import com.google.gson.annotations.SerializedName;
import com.mangopay.core.EntityBase;
import com.mangopay.core.Money;

public class ConversionQuote extends EntityBase {

@SerializedName("ExpirationDate")
private int expirationDate;
@SerializedName("Status")
private String status;
@SerializedName("Duration")
private int duration;
@SerializedName("DebitedFunds")
private Money debitedFunds;
@SerializedName("CreditedFunds")
private Money creditedFunds;
@SerializedName("ConversionRateResponse")
private ConversionRate conversionRateResponse;

public int getExpirationDate() {
return expirationDate;
}

public void setExpirationDate(int expirationDate) {
this.expirationDate = expirationDate;
}

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}

public int getDuration() {
return duration;
}

public void setDuration(int duration) {
this.duration = duration;
}

public Money getDebitedFunds() {
return debitedFunds;
}

public void setDebitedFunds(Money debitedFunds) {
this.debitedFunds = debitedFunds;
}

public Money getCreditedFunds() {
return creditedFunds;
}

public void setCreditedFunds(Money creditedFunds) {
this.creditedFunds = creditedFunds;
}

public ConversionRate getConversionRateResponse() {
return conversionRateResponse;
}

public void setConversionRateResponse(ConversionRate conversionRateResponse) {
this.conversionRateResponse = conversionRateResponse;
}
}
6 changes: 3 additions & 3 deletions src/test/java/com/mangopay/core/BaseTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -1602,7 +1602,7 @@ protected <T> void assertEqualInputProps(T entity1, T entity2) throws Exception
}

protected ConversionRate getConversionRate() throws Exception {
return this.api.getInstantConversionApi().getConversionRate("EUR", "GBP");
return this.api.getConversionsApi().getConversionRate("EUR", "GBP");
}

protected InstantConversion createInstantConversion() throws Exception {
Expand Down Expand Up @@ -1633,12 +1633,12 @@ protected InstantConversion createInstantConversion() throws Exception {
instantConversion.setDebitedFunds(debitedFunds);
instantConversion.setTag("create instant conversion");

return this.api.getInstantConversionApi().createInstantConversion(instantConversion, null);
return this.api.getConversionsApi().createInstantConversion(instantConversion, null);
}

protected InstantConversion getInstantConversion() throws Exception {
InstantConversion createdInstantConversion = createInstantConversion();

return api.getInstantConversionApi().getInstantConversion(createdInstantConversion.getId());
return api.getConversionsApi().getInstantConversion(createdInstantConversion.getId());
}
}
89 changes: 89 additions & 0 deletions src/test/java/com/mangopay/core/ConversionsImplTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
package com.mangopay.core;

import com.mangopay.core.enumerations.CurrencyIso;
import com.mangopay.core.enumerations.TransactionStatus;
import com.mangopay.core.enumerations.TransactionType;
import com.mangopay.entities.ConversionQuote;
import com.mangopay.entities.ConversionRate;
import com.mangopay.entities.InstantConversion;
import org.junit.Test;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

public class ConversionsImplTest extends BaseTest {

@Test
public void getConversionRateTest() throws Exception {
ConversionRate conversionRate = getConversionRate();

assertNotNull(conversionRate);
assertNotNull(conversionRate.clientRate);
assertNotNull(conversionRate.marketRate);
}

@Test
public void createInstantConversionTest() throws Exception {
InstantConversion instantConversion = createInstantConversion();

assertNotNull(instantConversion);
assertNotNull(instantConversion.creditedFunds.getAmount());
assertNotNull(instantConversion.debitedFunds.getAmount());
assertEquals(instantConversion.status, TransactionStatus.SUCCEEDED);
assertEquals(instantConversion.type, TransactionType.CONVERSION);
}

@Test
public void getInstantConversionTest() throws Exception {
InstantConversion instantConversion = getInstantConversion();

assertNotNull(instantConversion);
assertNotNull(instantConversion.creditedFunds.getAmount());
assertNotNull(instantConversion.debitedFunds.getAmount());
assertEquals(instantConversion.status, TransactionStatus.SUCCEEDED);
assertEquals(instantConversion.type, TransactionType.CONVERSION);

}

@Test
public void createConversionQuoteTest() throws Exception {
ConversionQuote conversionQuote = createConversionQuote();

assertNotNull(conversionQuote);
assertNotNull(conversionQuote.getDebitedFunds());
assertNotNull(conversionQuote.getCreditedFunds());
assertNotNull(conversionQuote.getConversionRateResponse());
assertEquals("ACTIVE", conversionQuote.getStatus());

}

@Test
public void getConversionQuoteTest() throws Exception {
ConversionQuote createdConversionQuote = createConversionQuote();
ConversionQuote conversionQuote = this.api.getConversionsApi().getConversionQuote(createdConversionQuote.getId());

assertNotNull(conversionQuote);
assertNotNull(conversionQuote.getDebitedFunds());
assertNotNull(conversionQuote.getCreditedFunds());
assertNotNull(conversionQuote.getConversionRateResponse());
assertEquals("ACTIVE", conversionQuote.getStatus());
}

private ConversionQuote createConversionQuote() throws Exception {
ConversionQuote conversionQuote = new ConversionQuote();

Money creditedFunds = new Money();
creditedFunds.setCurrency(CurrencyIso.USD);
conversionQuote.setCreditedFunds(creditedFunds);

Money debitedFunds = new Money();
debitedFunds.setCurrency(CurrencyIso.GBP);
debitedFunds.setAmount(100);
conversionQuote.setDebitedFunds(debitedFunds);

conversionQuote.setDuration(90);
conversionQuote.setTag("Created using the Mangopay PHP SDK");

return this.api.getConversionsApi().createConversionQuote(conversionQuote, null);
}
}
44 changes: 0 additions & 44 deletions src/test/java/com/mangopay/core/InstantConversionImplTest.java

This file was deleted.

0 comments on commit c5a17fa

Please sign in to comment.