From 54da10492aa49bbfe09679edf43e81946e99116c Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Tue, 15 Apr 2025 13:42:50 +0300 Subject: [PATCH 1/4] PM-1078 - use finance api --- src/domain/Challenge.ts | 6 +++--- src/util/{WalletApi.ts => FinanceApi.ts} | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) rename src/util/{WalletApi.ts => FinanceApi.ts} (88%) diff --git a/src/domain/Challenge.ts b/src/domain/Challenge.ts index 85ece6e..e8d4c90 100644 --- a/src/domain/Challenge.ts +++ b/src/domain/Challenge.ts @@ -41,7 +41,7 @@ import ChallengeScheduler from "../util/ChallengeScheduler"; import { BAValidation, lockConsumeAmount } from "../api/BillingAccount"; import { ChallengeEstimator } from "../util/ChallengeEstimator"; import { V5_TRACK_IDS_TO_NAMES, V5_TYPE_IDS_TO_NAMES } from "../common/ConversionMap"; -import WalletApi, { PaymentDetail } from "../util/WalletApi"; +import FinanceApi, { PaymentDetail } from "../util/FinanceApi"; import { getChallengeResources, loadInformixSubmissions } from "../api/v5Api"; import m2mToken from "../helpers/MachineToMachineToken"; @@ -926,7 +926,7 @@ class ChallengeDomain extends CoreOperations { ); // Check if payment already exists - const existingPayments = await WalletApi.getPaymentsByChallengeId(challengeId, token); + const existingPayments = await FinanceApi.getPaymentsByChallengeId(challengeId, token); if (existingPayments.length > 0) { console.log(`Payments already exist for challenge ${challengeId}, skipping payment generation`); return 0; @@ -992,7 +992,7 @@ class ChallengeDomain extends CoreOperations { } console.log("Generate payment with payload", payload); - await WalletApi.createPayment(payload, token); + await FinanceApi.createPayment(payload, token); } return totalAmount; diff --git a/src/util/WalletApi.ts b/src/util/FinanceApi.ts similarity index 88% rename from src/util/WalletApi.ts rename to src/util/FinanceApi.ts index b50a8c7..63a1d44 100644 --- a/src/util/WalletApi.ts +++ b/src/util/FinanceApi.ts @@ -22,9 +22,9 @@ export interface PaymentPayload { } // TODO: Move this to a processor that handles challenge completion events from Harmony -class WalletApi { +class FinanceApi { private static readonly BASE_URL = - (process.env.TOPCODER_API_ENDPOINT ?? "https://api.topcoder-dev.com/v5") + "/payments"; + (process.env.TOPCODER_API_ENDPOINT ?? "https://api.topcoder-dev.com/v5") + "/finance"; async createPayment( payload: PaymentPayload, @@ -40,7 +40,7 @@ class WalletApi { try { console.log(payload.externalId, "Creating payment. Attempt", attempts, payload); - const response = await axios.post(WalletApi.BASE_URL + "/winnings", payload, config); + const response = await axios.post(FinanceApi.BASE_URL + "/winnings", payload, config); console.log("Payment created", response.data); return response; } catch (error) { @@ -69,7 +69,7 @@ class WalletApi { }; try { - const response = await axios.post(WalletApi.BASE_URL + "/winnings/list", payload, config); + const response = await axios.post(FinanceApi.BASE_URL + "/winnings/list", payload, config); return response.data.data; } catch (err) { return []; @@ -78,4 +78,4 @@ class WalletApi { } -export default new WalletApi(); +export default new FinanceApi(); From 54d5a056f5b5ec51696ee6d79b4263b2587c03f4 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Tue, 15 Apr 2025 14:26:38 +0300 Subject: [PATCH 2/4] PM-1078 - include BA fields --- src/domain/Challenge.ts | 1 + src/util/FinanceApi.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/src/domain/Challenge.ts b/src/domain/Challenge.ts index e8d4c90..5034528 100644 --- a/src/domain/Challenge.ts +++ b/src/domain/Challenge.ts @@ -958,6 +958,7 @@ class ChallengeDomain extends CoreOperations { grossAmount: payment.amount, installmentNumber: 1, currency: "USD", + billingAccount: `${billingAccountId}`, }, ]; diff --git a/src/util/FinanceApi.ts b/src/util/FinanceApi.ts index 63a1d44..9544255 100644 --- a/src/util/FinanceApi.ts +++ b/src/util/FinanceApi.ts @@ -5,6 +5,7 @@ export interface PaymentDetail { grossAmount: number; installmentNumber: number; currency: string; + billingAccount: string; } export interface PaymentPayload { From fa87ac9aed2143106f6b09416acd5d107bc9e366 Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Wed, 16 Apr 2025 06:45:18 +1000 Subject: [PATCH 3/4] Don't attempt to push to QA --- .circleci/config.yml | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index b99a00b..e322469 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -43,16 +43,7 @@ jobs: aws ecr get-login-password | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com docker tag ${SERVICE_NAME}:${CIRCLE_SHA1} $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/${SERVICE_NAME}:${CIRCLE_SHA1} docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/${SERVICE_NAME}:${CIRCLE_SHA1} - if [ "${CIRCLE_PULL_REQUEST}" != "" ]; then - echo "Publishing to ECR QA" - # Publish to ECR QA - ./awsconfiguration.sh QA - source awsenvconf - aws ecr get-login-password | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com - docker tag ${SERVICE_NAME}:${CIRCLE_SHA1} $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/${SERVICE_NAME}:${CIRCLE_SHA1} - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/${SERVICE_NAME}:${CIRCLE_SHA1} - else - echo "Not publishing to ECR QA" + echo "Not publishing to ECR QA" fi workflows: From 6a32ed2f35946674b4285a6271dc9d79eb9ea8a3 Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Wed, 16 Apr 2025 06:53:08 +1000 Subject: [PATCH 4/4] Typo --- .circleci/config.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e322469..95d8814 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -44,7 +44,6 @@ jobs: docker tag ${SERVICE_NAME}:${CIRCLE_SHA1} $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/${SERVICE_NAME}:${CIRCLE_SHA1} docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/${SERVICE_NAME}:${CIRCLE_SHA1} echo "Not publishing to ECR QA" - fi workflows: version: 2