File tree Expand file tree Collapse file tree 7 files changed +105
-3
lines changed Expand file tree Collapse file tree 7 files changed +105
-3
lines changed Original file line number Diff line number Diff line change @@ -22,7 +22,7 @@ test: pcov-disable
2222
2323static-analysis : pcov-disable
2424 mkdir -p build/logs/phpstan
25- ${PHPSTAN} analyse --no-progress --memory-limit=64
25+ ${PHPSTAN} analyse --no-progress --memory-limit=128M
2626
2727update-dependencies :
2828 composer update
Original file line number Diff line number Diff line change @@ -51,7 +51,7 @@ final class KafkaConsumerBuilder implements KafkaConsumerBuilderInterface
5151 /**
5252 * @var callable
5353 */
54- private $ consumeCallback ;
54+ private $ oauthBearerCallback ;
5555
5656 /**
5757 * @var callable
@@ -228,6 +228,20 @@ public function withOffsetCommitCallback(callable $offsetCommitCallback): KafkaC
228228 return $ that ;
229229 }
230230
231+ /**
232+ * Set callback that is being called on offset commits
233+ *
234+ * @param callable $oauthBearerCallback
235+ * @return KafkaConsumerBuilderInterface
236+ */
237+ public function withOAuthBearerTokenRefreshCallback (callable $ oauthBearerCallback ): KafkaConsumerBuilderInterface
238+ {
239+ $ that = clone $ this ;
240+ $ that ->oauthBearerCallback = $ oauthBearerCallback ;
241+
242+ return $ that ;
243+ }
244+
231245 /**
232246 * Lets you set a custom decoder for the consumed message
233247 *
@@ -292,5 +306,9 @@ private function registerCallbacks(KafkaConfiguration $conf): void
292306 if (null !== $ this ->offsetCommitCallback ) {
293307 $ conf ->setOffsetCommitCb ($ this ->offsetCommitCallback );
294308 }
309+
310+ if (null !== $ this ->oauthBearerCallback ) {
311+ $ conf ->setOAuthBearerTokenRefreshCb ($ this ->oauthBearerCallback );
312+ }
295313 }
296314}
Original file line number Diff line number Diff line change @@ -105,7 +105,15 @@ public function withDecoder(DecoderInterface $decoder): self;
105105 * @param callable $logCallback
106106 * @return KafkaConsumerBuilderInterface
107107 */
108- public function withLogCallback (callable $ logCallback ): KafkaConsumerBuilderInterface ;
108+ public function withLogCallback (callable $ logCallback ): self ;
109+
110+ /**
111+ * Set callback that is being called on offset commits
112+ *
113+ * @param callable $oauthBearerCallback
114+ * @return KafkaConsumerBuilderInterface
115+ */
116+ public function withOAuthBearerTokenRefreshCallback (callable $ oauthBearerCallback ): self ;
109117
110118 /**
111119 * Returns your consumer instance
Original file line number Diff line number Diff line change @@ -39,6 +39,11 @@ final class KafkaProducerBuilder implements KafkaProducerBuilderInterface
3939 */
4040 private $ logCallback ;
4141
42+ /**
43+ * @var callable
44+ */
45+ private $ oauthBearerCallback ;
46+
4247 /**
4348 * @var EncoderInterface
4449 */
@@ -131,6 +136,19 @@ public function withLogCallback(callable $logCallback): KafkaProducerBuilderInte
131136 return $ this ;
132137 }
133138
139+ /**
140+ * Callback for OAuth Bearer Token refresh
141+ *
142+ * @param callable $oauthBearerCallback
143+ * @return KafkaProducerBuilderInterface
144+ */
145+ public function withOAuthBearerTokenRefreshCallback (callable $ oauthBearerCallback ): KafkaProducerBuilderInterface
146+ {
147+ $ this ->oauthBearerCallback = $ oauthBearerCallback ;
148+
149+ return $ this ;
150+ }
151+
134152 /**
135153 * Lets you set a custom encoder for produce message
136154 *
@@ -188,5 +206,9 @@ private function registerCallbacks(KafkaConfiguration $conf): void
188206 if (null !== $ this ->logCallback ) {
189207 $ conf ->setLogCb ($ this ->logCallback );
190208 }
209+
210+ if (null !== $ this ->oauthBearerCallback ) {
211+ $ conf ->setOAuthBearerTokenRefreshCb ($ this ->oauthBearerCallback );
212+ }
191213 }
192214}
Original file line number Diff line number Diff line change @@ -50,6 +50,14 @@ public function withErrorCallback(callable $errorCallback): self;
5050 */
5151 public function withLogCallback (callable $ logCallback ): self ;
5252
53+ /**
54+ * Callback for OAuth Bearer Token refresh
55+ *
56+ * @param callable $oauthBearerCallback
57+ * @return KafkaProducerBuilderInterface
58+ */
59+ public function withOAuthBearerTokenRefreshCallback (callable $ oauthBearerCallback ): self ;
60+
5361 /**
5462 * Lets you set a custom encoder for produce message
5563 *
Original file line number Diff line number Diff line change @@ -203,6 +203,33 @@ public function testSetRebalanceCallback(): void
203203 self ::assertArrayHasKey ('rebalance_cb ' , $ conf );
204204 }
205205
206+ /**
207+ * @return void
208+ * @throws \ReflectionException
209+ */
210+ public function testSetOAuthBearerTokenRefreshCallback (): void
211+ {
212+ $ callback = function () {
213+ // Anonymous test method, no logic required
214+ };
215+
216+ $ clone = $ this ->kafkaConsumerBuilder ->withOAuthBearerTokenRefreshCallback ($ callback );
217+
218+ $ reflectionProperty = new \ReflectionProperty ($ clone , 'oauthBearerCallback ' );
219+ $ reflectionProperty ->setAccessible (true );
220+
221+ self ::assertSame ($ callback , $ reflectionProperty ->getValue ($ clone ));
222+ self ::assertNotSame ($ clone , $ this ->kafkaConsumerBuilder );
223+
224+ $ consumer = $ clone
225+ ->withAdditionalBroker ('localhost ' )
226+ ->withSubscription ('test ' )
227+ ->withOAuthBearerTokenRefreshCallback ($ callback )
228+ ->build ();
229+ $ conf = $ consumer ->getConfiguration ();
230+ self ::assertArrayHasKey ('oauthbearer_token_refresh_cb ' , $ conf );
231+ }
232+
206233 /**
207234 * @return void
208235 * @throws \ReflectionException
Original file line number Diff line number Diff line change @@ -108,6 +108,24 @@ public function testSetErrorCallback(): void
108108 self ::assertSame ($ callback , $ reflectionProperty ->getValue ($ clone ));
109109 }
110110
111+ /**
112+ * @return void
113+ * @throws \ReflectionException
114+ */
115+ public function testSetOAuthBearerTokenRefreshCallback (): void
116+ {
117+ $ callback = function () {
118+ // Anonymous test method, no logic required
119+ };
120+
121+ $ clone = $ this ->kafkaProducerBuilder ->withOAuthBearerTokenRefreshCallback ($ callback );
122+
123+ $ reflectionProperty = new \ReflectionProperty ($ clone , 'oauthBearerCallback ' );
124+ $ reflectionProperty ->setAccessible (true );
125+
126+ self ::assertSame ($ callback , $ reflectionProperty ->getValue ($ clone ));
127+ }
128+
111129 /**
112130 * @throws KafkaProducerException
113131 */
@@ -132,6 +150,7 @@ public function testBuild(): void
132150 ->withDeliveryReportCallback ($ callback )
133151 ->withErrorCallback ($ callback )
134152 ->withLogCallback ($ callback )
153+ ->withOAuthBearerTokenRefreshCallback ($ callback )
135154 ->build ();
136155
137156 self ::assertInstanceOf (KafkaProducerInterface::class, $ producer );
You can’t perform that action at this time.
0 commit comments