From 6ec61fab8f557207c2514a98f04ac93455c2357a Mon Sep 17 00:00:00 2001 From: Luisito Date: Mon, 22 Nov 2021 22:03:02 -0600 Subject: [PATCH 1/3] Add first version for publish title on twitter --- .../application/SendNotificationTwitter.java | 24 +++++++++++++++++++ .../twitter/domain/TwitterRepository.java | 5 ++++ .../mooc/twitter/infrastructure/Twitter.java | 11 +++++++++ .../VideoPublisherCliController.java | 8 ++++++- 4 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 src/mooc/main/tv/codely/mooc/twitter/application/SendNotificationTwitter.java create mode 100644 src/mooc/main/tv/codely/mooc/twitter/domain/TwitterRepository.java create mode 100644 src/mooc/main/tv/codely/mooc/twitter/infrastructure/Twitter.java diff --git a/src/mooc/main/tv/codely/mooc/twitter/application/SendNotificationTwitter.java b/src/mooc/main/tv/codely/mooc/twitter/application/SendNotificationTwitter.java new file mode 100644 index 0000000..086d4cf --- /dev/null +++ b/src/mooc/main/tv/codely/mooc/twitter/application/SendNotificationTwitter.java @@ -0,0 +1,24 @@ +package tv.codely.mooc.twitter.application; + +import tv.codely.mooc.twitter.domain.TwitterRepository; +import tv.codely.mooc.video.domain.VideoPublished; +import tv.codely.shared.application.DomainEventSubscriber; + +public final class SendNotificationTwitter implements DomainEventSubscriber { + + private TwitterRepository twitterAPI; + + public SendNotificationTwitter(TwitterRepository twitterAPI) { + this.twitterAPI = twitterAPI; + } + + @Override + public Class subscribedTo() { + return VideoPublished.class; + } + + @Override + public void consume(VideoPublished event) { + twitterAPI.create(String.format("Hey! A new video is published: <%s>", event.title())); + } +} diff --git a/src/mooc/main/tv/codely/mooc/twitter/domain/TwitterRepository.java b/src/mooc/main/tv/codely/mooc/twitter/domain/TwitterRepository.java new file mode 100644 index 0000000..806c0e8 --- /dev/null +++ b/src/mooc/main/tv/codely/mooc/twitter/domain/TwitterRepository.java @@ -0,0 +1,5 @@ +package tv.codely.mooc.twitter.domain; + +public interface TwitterRepository { + void create(String text); +} diff --git a/src/mooc/main/tv/codely/mooc/twitter/infrastructure/Twitter.java b/src/mooc/main/tv/codely/mooc/twitter/infrastructure/Twitter.java new file mode 100644 index 0000000..9b56297 --- /dev/null +++ b/src/mooc/main/tv/codely/mooc/twitter/infrastructure/Twitter.java @@ -0,0 +1,11 @@ +package tv.codely.mooc.twitter.infrastructure; + +import tv.codely.mooc.twitter.domain.TwitterRepository; + +public class Twitter implements TwitterRepository { + + @Override + public void create(String text) { + System.out.println(text); + } +} diff --git a/src/mooc/main/tv/codely/mooc/video/infrastructure/VideoPublisherCliController.java b/src/mooc/main/tv/codely/mooc/video/infrastructure/VideoPublisherCliController.java index 864eb8e..c60935c 100644 --- a/src/mooc/main/tv/codely/mooc/video/infrastructure/VideoPublisherCliController.java +++ b/src/mooc/main/tv/codely/mooc/video/infrastructure/VideoPublisherCliController.java @@ -1,6 +1,9 @@ package tv.codely.mooc.video.infrastructure; import tv.codely.mooc.notification.application.create.SendPushToSubscribersOnVideoPublished; +import tv.codely.mooc.twitter.application.SendNotificationTwitter; +import tv.codely.mooc.twitter.domain.TwitterRepository; +import tv.codely.mooc.twitter.infrastructure.Twitter; import tv.codely.mooc.video.application.publish.VideoPublisher; import tv.codely.shared.application.DomainEventSubscriber; import tv.codely.shared.domain.EventBus; @@ -10,8 +13,11 @@ public class VideoPublisherCliController { public static void main(String[] args) { + final TwitterRepository twitter = new Twitter(); + final Set subscribers = Set.of( - new SendPushToSubscribersOnVideoPublished() + new SendPushToSubscribersOnVideoPublished(), + new SendNotificationTwitter(twitter) ); final EventBus eventBus = new ReactorEventBus(subscribers); final var videoPublisher = new VideoPublisher(eventBus); From 20d0ad7f474f2b73bbe0f465d348c45f86d000d0 Mon Sep 17 00:00:00 2001 From: Luisito Date: Mon, 22 Nov 2021 22:43:37 -0600 Subject: [PATCH 2/3] Add DTO for the request to twitter API --- .../application/SendNotificationTwitter.java | 5 +++- .../twitter/application/TwiterRequest.java | 24 +++++++++++++++++++ .../twitter/domain/TwitterRepository.java | 4 +++- .../mooc/twitter/infrastructure/Twitter.java | 10 +++++--- 4 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 src/mooc/main/tv/codely/mooc/twitter/application/TwiterRequest.java diff --git a/src/mooc/main/tv/codely/mooc/twitter/application/SendNotificationTwitter.java b/src/mooc/main/tv/codely/mooc/twitter/application/SendNotificationTwitter.java index 086d4cf..f496d68 100644 --- a/src/mooc/main/tv/codely/mooc/twitter/application/SendNotificationTwitter.java +++ b/src/mooc/main/tv/codely/mooc/twitter/application/SendNotificationTwitter.java @@ -19,6 +19,9 @@ public Class subscribedTo() { @Override public void consume(VideoPublished event) { - twitterAPI.create(String.format("Hey! A new video is published: <%s>", event.title())); + TwiterRequest twit = new TwiterRequest( + String.format("Hey! A new video is published: <%s>", event.title()) + ); + twitterAPI.create(twit); } } diff --git a/src/mooc/main/tv/codely/mooc/twitter/application/TwiterRequest.java b/src/mooc/main/tv/codely/mooc/twitter/application/TwiterRequest.java new file mode 100644 index 0000000..427da3e --- /dev/null +++ b/src/mooc/main/tv/codely/mooc/twitter/application/TwiterRequest.java @@ -0,0 +1,24 @@ +package tv.codely.mooc.twitter.application; + +public final class TwiterRequest { + private String id; + private String text; + + public TwiterRequest(String id, String text) { + this.id = id; + this.text = text; + } + + public TwiterRequest(String text) { + this.text = text; + } + + public String getId() { + return id; + } + + public String getText() { + return text; + } + +} diff --git a/src/mooc/main/tv/codely/mooc/twitter/domain/TwitterRepository.java b/src/mooc/main/tv/codely/mooc/twitter/domain/TwitterRepository.java index 806c0e8..179b75a 100644 --- a/src/mooc/main/tv/codely/mooc/twitter/domain/TwitterRepository.java +++ b/src/mooc/main/tv/codely/mooc/twitter/domain/TwitterRepository.java @@ -1,5 +1,7 @@ package tv.codely.mooc.twitter.domain; +import tv.codely.mooc.twitter.application.TwiterRequest; + public interface TwitterRepository { - void create(String text); + void create(TwiterRequest twit); } diff --git a/src/mooc/main/tv/codely/mooc/twitter/infrastructure/Twitter.java b/src/mooc/main/tv/codely/mooc/twitter/infrastructure/Twitter.java index 9b56297..364c7ad 100644 --- a/src/mooc/main/tv/codely/mooc/twitter/infrastructure/Twitter.java +++ b/src/mooc/main/tv/codely/mooc/twitter/infrastructure/Twitter.java @@ -1,11 +1,15 @@ package tv.codely.mooc.twitter.infrastructure; +import tv.codely.mooc.twitter.application.TwiterRequest; import tv.codely.mooc.twitter.domain.TwitterRepository; -public class Twitter implements TwitterRepository { +/** + * TODO: Implement a HTTPClient for the consume of the twitter API. + */ +public final class Twitter implements TwitterRepository { @Override - public void create(String text) { - System.out.println(text); + public void create(TwiterRequest twit) { + System.out.println(twit.getText()); } } From 1d515c77322c5a61f21351bd62b9e9dbe033dec3 Mon Sep 17 00:00:00 2001 From: Luisito Date: Mon, 22 Nov 2021 22:47:18 -0600 Subject: [PATCH 3/3] Change in a typo in the name of class TwitterRequest --- .../mooc/twitter/application/SendNotificationTwitter.java | 2 +- .../application/{TwiterRequest.java => TwitterRequest.java} | 6 +++--- .../tv/codely/mooc/twitter/domain/TwitterRepository.java | 4 ++-- .../main/tv/codely/mooc/twitter/infrastructure/Twitter.java | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) rename src/mooc/main/tv/codely/mooc/twitter/application/{TwiterRequest.java => TwitterRequest.java} (69%) diff --git a/src/mooc/main/tv/codely/mooc/twitter/application/SendNotificationTwitter.java b/src/mooc/main/tv/codely/mooc/twitter/application/SendNotificationTwitter.java index f496d68..5cf715c 100644 --- a/src/mooc/main/tv/codely/mooc/twitter/application/SendNotificationTwitter.java +++ b/src/mooc/main/tv/codely/mooc/twitter/application/SendNotificationTwitter.java @@ -19,7 +19,7 @@ public Class subscribedTo() { @Override public void consume(VideoPublished event) { - TwiterRequest twit = new TwiterRequest( + TwitterRequest twit = new TwitterRequest( String.format("Hey! A new video is published: <%s>", event.title()) ); twitterAPI.create(twit); diff --git a/src/mooc/main/tv/codely/mooc/twitter/application/TwiterRequest.java b/src/mooc/main/tv/codely/mooc/twitter/application/TwitterRequest.java similarity index 69% rename from src/mooc/main/tv/codely/mooc/twitter/application/TwiterRequest.java rename to src/mooc/main/tv/codely/mooc/twitter/application/TwitterRequest.java index 427da3e..a9b3536 100644 --- a/src/mooc/main/tv/codely/mooc/twitter/application/TwiterRequest.java +++ b/src/mooc/main/tv/codely/mooc/twitter/application/TwitterRequest.java @@ -1,15 +1,15 @@ package tv.codely.mooc.twitter.application; -public final class TwiterRequest { +public final class TwitterRequest { private String id; private String text; - public TwiterRequest(String id, String text) { + public TwitterRequest(String id, String text) { this.id = id; this.text = text; } - public TwiterRequest(String text) { + public TwitterRequest(String text) { this.text = text; } diff --git a/src/mooc/main/tv/codely/mooc/twitter/domain/TwitterRepository.java b/src/mooc/main/tv/codely/mooc/twitter/domain/TwitterRepository.java index 179b75a..a72369d 100644 --- a/src/mooc/main/tv/codely/mooc/twitter/domain/TwitterRepository.java +++ b/src/mooc/main/tv/codely/mooc/twitter/domain/TwitterRepository.java @@ -1,7 +1,7 @@ package tv.codely.mooc.twitter.domain; -import tv.codely.mooc.twitter.application.TwiterRequest; +import tv.codely.mooc.twitter.application.TwitterRequest; public interface TwitterRepository { - void create(TwiterRequest twit); + void create(TwitterRequest twit); } diff --git a/src/mooc/main/tv/codely/mooc/twitter/infrastructure/Twitter.java b/src/mooc/main/tv/codely/mooc/twitter/infrastructure/Twitter.java index 364c7ad..2fa2a50 100644 --- a/src/mooc/main/tv/codely/mooc/twitter/infrastructure/Twitter.java +++ b/src/mooc/main/tv/codely/mooc/twitter/infrastructure/Twitter.java @@ -1,6 +1,6 @@ package tv.codely.mooc.twitter.infrastructure; -import tv.codely.mooc.twitter.application.TwiterRequest; +import tv.codely.mooc.twitter.application.TwitterRequest; import tv.codely.mooc.twitter.domain.TwitterRepository; /** @@ -9,7 +9,7 @@ public final class Twitter implements TwitterRepository { @Override - public void create(TwiterRequest twit) { + public void create(TwitterRequest twit) { System.out.println(twit.getText()); } }