diff --git a/charts/airdrop-service/Chart.yaml b/charts/airdrop-service/Chart.yaml index c3f1ed92cb78333f84bbfc4a768ac19fbbef6917..c001c71fa4fc3dd9689202fa96f6bca450e6672b 100644 --- a/charts/airdrop-service/Chart.yaml +++ b/charts/airdrop-service/Chart.yaml @@ -2,4 +2,4 @@ apiVersion: v1 appVersion: "1.0" description: Airdrop service. name: airdrop-service -version: 0.3.0 +version: 0.3.2 diff --git a/charts/airdrop-service/templates/serviceentry-message-server.yaml b/charts/airdrop-service/templates/serviceentry-message-server.yaml new file mode 100644 index 0000000000000000000000000000000000000000..40b23532508cf0e55319da60c0121e8d7edb1ad4 --- /dev/null +++ b/charts/airdrop-service/templates/serviceentry-message-server.yaml @@ -0,0 +1,18 @@ +apiVersion: networking.istio.io/v1alpha3 +kind: ServiceEntry +metadata: + name: {{ template "airdrop-service.fullname" . }}-message + labels: + app: {{ template "airdrop-service.name" . }} + chart: {{ template "airdrop-service.chart" . }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + hosts: + - {{ .Values.external.hosts.message }} + location: MESH_EXTERNAL + ports: + - number: 8888 + name: http + protocol: HTTP + resolution: DNS \ No newline at end of file diff --git a/charts/airdrop-service/templates/virtualservice-message-server.yaml b/charts/airdrop-service/templates/virtualservice-message-server.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9e1bcdc10a4e1b66b32297bd35bd765ccfbc3729 --- /dev/null +++ b/charts/airdrop-service/templates/virtualservice-message-server.yaml @@ -0,0 +1,17 @@ +apiVersion: networking.istio.io/v1alpha3 +kind: VirtualService +metadata: + name: {{ template "airdrop-service.fullname" . }}-message + labels: + app: {{ template "airdrop-service.name" . }} + chart: {{ template "airdrop-service.chart" . }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + hosts: + - {{ .Values.external.hosts.message }} + http: + - route: + - destination: + host: {{ .Values.external.hosts.message }} + timeout: 30s \ No newline at end of file diff --git a/charts/airdrop-service/templates/virtualservice-qoinpro.yaml b/charts/airdrop-service/templates/virtualservice-qoinpro.yaml index fc98eb7bee0aafaab4e158a8bad8871b42356dc3..277fc8126a492baf5af2e70c139b7a711c3211a3 100644 --- a/charts/airdrop-service/templates/virtualservice-qoinpro.yaml +++ b/charts/airdrop-service/templates/virtualservice-qoinpro.yaml @@ -10,7 +10,8 @@ metadata: spec: hosts: - {{ .Values.external.hosts.qoinPro }} - https: + http: - route: - destination: - host: {{ .Values.external.hosts.qoinPro }} \ No newline at end of file + host: {{ .Values.external.hosts.qoinPro }} + timeout: 30s \ No newline at end of file diff --git a/charts/airdrop-service/values.yaml b/charts/airdrop-service/values.yaml index 781bedbbbb2e3d1c459e59d1793164afb74303aa..303c04500acc1f7149b45c251fcebb42a7922253 100644 --- a/charts/airdrop-service/values.yaml +++ b/charts/airdrop-service/values.yaml @@ -69,6 +69,12 @@ rest: qoinPro: address: "https://apis.qoinpro.com" +# External Hosts +external: + hosts: + qoinPro: "apis.qoinpro.com" + message: "" + # LOGGING PROPERTIES logging: level: diff --git a/releases/dev/airdrop-service.yaml b/releases/dev/airdrop-service.yaml index e05ac8997f7384e47e5a0f8ca666504204e70b56..ccdd1bd37261812bd3c918cfe6dfbf143dc46278 100644 --- a/releases/dev/airdrop-service.yaml +++ b/releases/dev/airdrop-service.yaml @@ -8,7 +8,7 @@ spec: chart: repository: https://nynjagroup.jfrog.io/nynjagroup/helm/ name: airdrop-service - version: 0.2.0 + version: 0.3.2 values: replicaCount: 1 image: @@ -63,13 +63,14 @@ spec: # REST PROPERTIES rest: pushService: - address: "http://35.198.110.223:8888" + address: "http://nynja-dev-uw1-messaging01.dev-eu.nynja.net:8888" qoinPro: address: "https://apis.qoinpro.com" # External Hosts external: hosts: qoinPro: "apis.qoinpro.com" + message: "nynja-dev-uw1-messaging01.dev-eu.nynja.net" # LOGGING PROPERTIES logging: level: diff --git a/releases/staging/airdrop-service.yaml b/releases/staging/airdrop-service.yaml index 512bedc03133e9f6364a2f682442c0a8bd471d12..8b3cc955bece5d9d602d9ed1cdaefa1dba64694b 100644 --- a/releases/staging/airdrop-service.yaml +++ b/releases/staging/airdrop-service.yaml @@ -8,7 +8,7 @@ spec: chart: repository: https://nynjagroup.jfrog.io/nynjagroup/helm/ name: airdrop-service - version: 0.2.0 + version: 0.3.1 values: replicaCount: 1 image: @@ -63,13 +63,14 @@ spec: # REST PROPERTIES rest: pushService: - address: "http://35.198.110.223:8888" + address: "http://nynja-staging-ew3-messaging01.staging.nynja.net:8888" qoinPro: address: "https://apis.qoinpro.com" # External Hosts external: hosts: qoinPro: "apis.qoinpro.com" + message: "nynja-staging-ew3-messaging01.staging.nynja.net" # LOGGING PROPERTIES logging: level: diff --git a/src/main/java/biz/nynja/airdrop/Config.java b/src/main/java/biz/nynja/airdrop/Config.java index 4baeb49cde3cba574dcb4de3477c6197eba83502..6ade37f81757635e67077a8d0e6601f39d0bad2b 100644 --- a/src/main/java/biz/nynja/airdrop/Config.java +++ b/src/main/java/biz/nynja/airdrop/Config.java @@ -55,7 +55,7 @@ public class Config implements WebMvcConfigurer { @Value("${cassandra.port}") private int PORT; - //======= CASSANDRA PROPERTIES =========== + //======= KAFKA PROPERTIES =========== @Value("${kafka.host}") private String KAFKA_HOST; @Value("${kafka.port}") diff --git a/src/main/java/biz/nynja/airdrop/controller/AirdropController.java b/src/main/java/biz/nynja/airdrop/controller/AirdropController.java index 76d33d06c486d7a624a694f66999662ea241622c..6f2d168e4ada3f70f58761cbc5a1a5138c7f6823 100644 --- a/src/main/java/biz/nynja/airdrop/controller/AirdropController.java +++ b/src/main/java/biz/nynja/airdrop/controller/AirdropController.java @@ -32,7 +32,6 @@ import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; -import org.springframework.web.util.UriComponentsBuilder; import javax.servlet.http.HttpServletRequest; @@ -114,13 +113,24 @@ public class AirdropController { @Autowired private RestTemplate restTemplate; + // https://airdrop.staging.nynja.net + @GetMapping("/") + public String index() { + + return "Airdrop Service"; + } + + + // AccountId -> 6065b9bf-a69c-4837-99bd-489065f106f1 (Jayendra) + // 564a1741-b98f-47c9-8de5-2b6a4753c7f3 -> (ramawat) + // 564a1741-b98f-47c9-8de5-2b6a4753c7f3 -> (vishal) + // 3dd830d4-ffa3-4327-9866-9f8d8efbb23c -> (vkgoriya1222) - // AccountId -> 6065b9bf-a69c-4837-99bd-489065f106f1 @GetMapping("/test/pushNotification/{username}/{password}") public String testPushNotification(@PathVariable("username") String username, @PathVariable("password") String password - ) { + ) { System.out.println(""); System.out.println("----------------"); @@ -146,10 +156,11 @@ public class AirdropController { HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("Authorization", "Basic " + new String(base64Credentials)); - HttpEntity request = new HttpEntity<>( httpHeaders); + HttpEntity request = new HttpEntity<>(httpHeaders); - ResponseEntity response = restTemplate.exchange("http://35.198.110.223:8888/chat/3dd830d4-ffa3-4327-9866-9f8d8efbb23c/qoinpro?sender=qoin_pro&message=This is a test demo message", HttpMethod.GET, request, String.class); + // ResponseEntity response = restTemplate.exchange("http://35.198.110.223:8888/chat/3dd830d4-ffa3-4327-9866-9f8d8efbb23c/qoinpro?sender=qoin_pro&message=This is a test demo message", HttpMethod.GET, request, String.class); + ResponseEntity response = restTemplate.exchange("http://35.198.110.223:8888/chat/3dd830d4-ffa3-4327-9866-9f8d8efbb23c/message?sender_type=sys&sender=6065b9bf-a69c-4837-99bd-489065f106f1&text=Hello Hi Bye", HttpMethod.GET, request, String.class); System.out.println(""); System.out.println("================"); @@ -165,7 +176,7 @@ public class AirdropController { System.out.println(""); - return response.getBody(); + return response.getBody(); } @@ -198,22 +209,36 @@ public class AirdropController { return "Push Notification Test done : " + basic; } - @GetMapping("/") - public String index() { + @GetMapping("/test/rest/push/{accountId}") + public String restPush(@PathVariable("accountId") String accountId) { - return "Airdrop Service"; + System.out.println(""); + System.out.println("Sending Push Notification"); + restTemplateUtil.sendPushNotification(accountId, 0000); + System.out.println(""); + + + return "Push Notification Sent"; } - @GetMapping("/test/rest/push") - public String restPush() { + + @GetMapping("/test/rest/qoinpro/{accountId}/{username}") + public String restQoinPro(@PathVariable("accountId") String accountId, + @PathVariable("username") String username + ) { System.out.println(""); - System.out.println("Sending Push Notification"); - restTemplateUtil.sendPushNotification("3dd830d4-ffa3-4327-9866-9f8d8efbb23c", 0000); + System.out.println("Sending QoinPro Notification"); + System.out.println(""); + System.out.println("accountId : " + accountId); + System.out.println("username : " + username); + System.out.println(""); + String response = restTemplateUtil.qoinProChannelEngagementAPI(accountId, username, "join", ""); + System.out.println(""); System.out.println(""); - return "Push Notification Sent"; + return response; } @@ -566,7 +591,7 @@ public class AirdropController { System.out.println("SEND PUSH NOTIFICATION API CALLED HERE"); System.out.println(""); - restTemplateUtil.sendPushNotification(accountId.toString(), otp); + restTemplateUtil.sendPushNotification(accountId.toString(), otp); return HttpResponse.getResponse(SUCCESS_STATUS_CODE, responseData, null); } @@ -814,7 +839,7 @@ public class AirdropController { KafkaMessageTemplate kafkaMessageTemplate = new KafkaMessageTemplate(); kafkaMessageTemplate.setAccount_id(airdropProfiles.getAccount_id().toString()); - kafkaMessageTemplate.setAction_type(Constants.KafkaActionType.JOIN); + kafkaMessageTemplate.setEvent_type(Constants.KafkaActionType.JOIN); System.out.println(""); System.out.println("Message Pushed to Kafka Producer"); @@ -975,7 +1000,7 @@ public class AirdropController { System.out.println("SEND PUSH NOTIFICATION API CALLED HERE"); System.out.println(""); - restTemplateUtil.sendPushNotification(otpSessions.getAccount_id().toString(), otp); + restTemplateUtil.sendPushNotification(otpSessions.getAccount_id().toString(), otp); return HttpResponse.getResponse(SUCCESS_STATUS_CODE, responseData, null); } diff --git a/src/main/java/biz/nynja/airdrop/kafka/KafkaConsumer.java b/src/main/java/biz/nynja/airdrop/kafka/KafkaConsumer.java index a44e8717212fde3f91252a7dcb1cf64ddf4ee24e..55e565885467be6f89216e062b51a027521e7db3 100644 --- a/src/main/java/biz/nynja/airdrop/kafka/KafkaConsumer.java +++ b/src/main/java/biz/nynja/airdrop/kafka/KafkaConsumer.java @@ -64,7 +64,7 @@ public class KafkaConsumer { System.out.println("airdropProfilesList : "); System.out.println(airdropProfilesList); - ActionsSummary actionsSummary = actionSummaryService.getActionsSummary(kafkaMessageTemplate.getAction_type()); + ActionsSummary actionsSummary = actionSummaryService.getActionsSummary(kafkaMessageTemplate.getEvent_type()); System.out.println(""); System.out.println("actionsSummary : "); System.out.println(actionsSummary); @@ -90,7 +90,7 @@ public class KafkaConsumer { } else { - List airdropActionsList = airdropActionsService.getAirDropActions(accountId, kafkaMessageTemplate.getAction_type()); + List airdropActionsList = airdropActionsService.getAirDropActions(accountId, kafkaMessageTemplate.getEvent_type()); // This flag is to check. If qoinpro successfully got this Action Boolean notifiedQoinPro = null; @@ -108,7 +108,7 @@ public class KafkaConsumer { // UNCOMMENT IT LATER - String response = restTemplateUtil.qoinProChannelEngagementAPI(airdropProfilesList.get(0).getAccount_id().toString(), airdropProfilesList.get(0).getUsername(), kafkaMessageTemplate.getAction_type(), actionsSummary.getAction_description()); + String response = restTemplateUtil.qoinProChannelEngagementAPI(airdropProfilesList.get(0).getAccount_id().toString(), airdropProfilesList.get(0).getUsername(), kafkaMessageTemplate.getEvent_type(), actionsSummary.getAction_description()); System.out.println(""); System.out.println("QOIN-PRO Channel Engagement API Response"); @@ -138,7 +138,7 @@ public class KafkaConsumer { AirdropActions airdropActions = new AirdropActions(); airdropActions.setId(UUID.randomUUID()); airdropActions.setAccount_id(UUID.fromString(kafkaMessageTemplate.getAccount_id())); - airdropActions.setAction_type(kafkaMessageTemplate.getAction_type()); + airdropActions.setAction_type(kafkaMessageTemplate.getEvent_type()); airdropActions.setCount(1); airdropActions.setLast_action_ts(AirdropUtil.generateCurrentEpochTimeStamp()); @@ -149,13 +149,13 @@ public class KafkaConsumer { logger.info("Airdrop Action is Generated"); - } else if (!kafkaMessageTemplate.getAction_type().equals(Constants.KafkaActionType.JOIN)) { + } else if (!kafkaMessageTemplate.getEvent_type().equals(Constants.KafkaActionType.JOIN)) { Map updateMap = new HashMap(); updateMap.put("count", airdropActionsList.get(0).getCount() + 1); updateMap.put("last_action_ts", AirdropUtil.generateCurrentEpochTimeStamp()); - airdropActionsService.updateAirdropActions(accountId, airdropActionsList.get(0).getId(), kafkaMessageTemplate.getAction_type(), updateMap); + airdropActionsService.updateAirdropActions(accountId, airdropActionsList.get(0).getId(), kafkaMessageTemplate.getEvent_type(), updateMap); } else { System.out.println(""); @@ -177,7 +177,7 @@ public class KafkaConsumer { actionsFailed.setChannel(Constants.QoinProChannel.NYNJA); actionsFailed.setCreated_ts(AirdropUtil.generateCurrentEpochTimeStamp()); actionsFailed.setAccount_id(UUID.fromString(kafkaMessageTemplate.getAccount_id())); - actionsFailed.setAction_type(kafkaMessageTemplate.getAction_type()); + actionsFailed.setAction_type(kafkaMessageTemplate.getEvent_type()); actionsFailed.setUsername(airdropProfilesList.get(0).getUsername()); actionsFailed.setAction_detail(actionsSummary.getAction_description()); diff --git a/src/main/java/biz/nynja/airdrop/kafka/KafkaMessageTemplate.java b/src/main/java/biz/nynja/airdrop/kafka/KafkaMessageTemplate.java index 6d45d1c66e4195a243c794da781d19e6b0bf5a17..306752f65bf01cf71601ac45130d575ac7165d4f 100644 --- a/src/main/java/biz/nynja/airdrop/kafka/KafkaMessageTemplate.java +++ b/src/main/java/biz/nynja/airdrop/kafka/KafkaMessageTemplate.java @@ -3,7 +3,7 @@ package biz.nynja.airdrop.kafka; public class KafkaMessageTemplate { private String account_id; - private String action_type; + private String event_type; public String getAccount_id() { return account_id; @@ -13,19 +13,19 @@ public class KafkaMessageTemplate { this.account_id = account_id; } - public String getAction_type() { - return action_type; + public String getEvent_type() { + return event_type; } - public void setAction_type(String action_type) { - this.action_type = action_type; + public void setEvent_type(String event_type) { + this.event_type = event_type; } @Override public String toString() { return "KafkaMessageTemplate{" + "account_id='" + account_id + '\'' + - ", action_type='" + action_type + '\'' + + ", event_type='" + event_type + '\'' + '}'; } } diff --git a/src/main/java/biz/nynja/airdrop/util/RestTemplateUtil.java b/src/main/java/biz/nynja/airdrop/util/RestTemplateUtil.java index b53f09d06d12c56b9487b7afa2117771d54ce10b..b6e6ad8850e5b112a91b59f9c1cbdbbe32ee3511 100644 --- a/src/main/java/biz/nynja/airdrop/util/RestTemplateUtil.java +++ b/src/main/java/biz/nynja/airdrop/util/RestTemplateUtil.java @@ -15,6 +15,7 @@ import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; import java.util.Base64; +import java.util.Map; @Component public class RestTemplateUtil { @@ -42,8 +43,8 @@ public class RestTemplateUtil { @Value("${authentication.nynjaP2PMessaging.password}") private String nynjaP2PPassword; - @Value("${authentication.nynjaP2PMessaging.sender}") - private String nynjaP2PSender; + @Value("${authentication.nynjaP2PMessaging.senderAccountId}") + private String nynjaP2PSenderAccountId; /* public Object exchangeRefreshToken(String refreshToken) { @@ -82,11 +83,14 @@ public class RestTemplateUtil { // In case of success. its response will be "Success" try { - Object response = restTemplate.postForObject(qoinProChannelEngagement, httpEntity, Object.class); - logger.info("QoinPro action API response : {}", response); + String response = restTemplate.postForObject(qoinProChannelEngagement, httpEntity, String.class); + //logger.info("QoinPro action API response : {}", response); + System.out.println(""); + System.out.println("QoinPro Response : "); + System.out.println(response); + System.out.println(""); - - return response.toString(); + return response; } catch (Exception e) { logger.info("Exception in calling action API of quionPro service. message: {}, cause: {}", e.getMessage(), e.getCause()); @@ -103,7 +107,7 @@ public class RestTemplateUtil { System.out.println(""); System.out.println("Send OTP Message Function"); System.out.println(""); - System.out.println("nynjaP2PSender : " + nynjaP2PSender); + System.out.println("nynjaP2PSenderAccountId : " + nynjaP2PSenderAccountId); System.out.println(""); System.out.println("nynjaP2PUserName : " + nynjaP2PUserName); System.out.println("nynjaP2PPassword : " + nynjaP2PPassword); @@ -121,7 +125,9 @@ public class RestTemplateUtil { httpHeaders.add("Authorization", "Basic " + new String(base64Credentials)); HttpEntity request = new HttpEntity<>(httpHeaders); - ResponseEntity response = restTemplate.exchange(pushNotification + "/" + accountId + "/qoinpro?sender=" + nynjaP2PSender + "&message=Your verification OTP is " + otp + "", HttpMethod.GET, request, String.class); + + // http://35.198.110.223:8888/chat/3dd830d4-ffa3-4327-9866-9f8d8efbb23c/message?sender=6065b9bf-a69c-4837-99bd-489065f106f1&text=Hello, This is a message for test + ResponseEntity response = restTemplate.exchange(pushNotification + "/" + accountId + "/message?sender_type=sys&sender=" + nynjaP2PSenderAccountId + "&text=Your verification OTP is " + otp + "", HttpMethod.GET, request, String.class); System.out.println(""); System.out.println("Response : "); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 23ba912172c57fbe7a159b7f87391ee53653ebbf..254c4459aefda54a145e84c577f39b9130c35a0c 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -17,8 +17,8 @@ cassandra: kafka: host: localhost port: 9092 - group: nynjaTest - topic: nynjaTest + group: qoinproActivity + topic: qoinproActivity # OTP PROPERTIES otp: @@ -29,7 +29,7 @@ otp: grpc: accountService: host: 127.0.0.1 - port: 6566 + port: 6565 authService: host: 127.0.0.1 port: 6566 @@ -80,7 +80,7 @@ authentication: nynjaP2PMessaging: # This service will be called to send OTP message on P2P chat connection. username: nynja password: nynjaTS - sender: qoin_pro # This will be send in request parameters. + senderAccountId: 6065b9bf-a69c-4837-99bd-489065f106f1 # This will be send in request parameters. # QOIN-PRO TOKEN AUTHENTICATION DETAILS # localhost:8080/airdrop/oauth/token -> Use this url to get access Token. for calling Airdrop APIs @@ -90,3 +90,5 @@ users: secret: qoinProSecret userName: qoinPro password: qoinProPassword + +