Exemple #1
0
 /**
  * Returns an observable sequence that invokes the specified factory function whenever a new observer subscribes.
  *
  * @param callable $factory
  * @return \Rx\Observable\AnonymousObservable
  */
 public static function toObservable(callable $factory)
 {
     $observableFactory = function () use($factory) {
         return Promise::toObservable($factory());
     };
     return Observable::defer($observableFactory);
 }
 /**
  * @return ObservableInterface
  */
 public function jobs() : ObservableInterface
 {
     return Promise::toObservable($this->getTransport()->request('builds/' . $this->id()))->flatMap(function ($response) {
         return Observable::fromArray($response['jobs']);
     })->map(function ($job) {
         return $this->getTransport()->getHydrator()->hydrate('Job', $job);
     });
 }
 public function commits() : ObservableInterface
 {
     return Promise::toObservable($this->getTransport()->request('repos/' . $this->slug() . '/builds'))->flatMap(function ($response) {
         return Observable::fromArray($response['commits']);
     })->map(function ($build) {
         return $this->getTransport()->getHydrator()->hydrate('Commit', $build);
     });
 }
 /**
  * @return ObservableInterface
  */
 public function annotations() : ObservableInterface
 {
     return Promise::toObservable($this->getTransport()->request('jobs/' . $this->id() . '/annotations'))->flatMap(function ($response) {
         return Observable::fromArray($response['annotations']);
     })->map(function ($annotation) {
         return $this->getTransport()->getHydrator()->hydrate('Annotation', $annotation);
     });
 }
Exemple #5
0
 /**
  * @test
  */
 public function from_promise_success()
 {
     $source = PromiseFactory::toObservable(function () {
         return Promise::resolved(42);
     });
     $results = $this->scheduler->startWithCreate(function () use($source) {
         return $source;
     });
     $this->assertMessages(array(onNext(200, 42), onCompleted(200)), $results->getMessages());
 }
Exemple #6
0
 /**
  * Returns an observable sequence that invokes the specified factory function whenever a new observer subscribes.
  *
  * @param callable $factory
  * @return \Rx\Observable\AnonymousObservable
  */
 public static function toObservable($factory)
 {
     if (!is_callable($factory)) {
         throw new InvalidArgumentException('Factory should be a callable.');
     }
     $observableFactory = function () use($factory) {
         return Promise::toObservable($factory());
     };
     return BaseObservable::defer($observableFactory);
 }
 /**
  * @test
  *
  */
 public function promise_failure()
 {
     $source = new Subject();
     $source->onError(new Exception("some error"));
     $promise = Promise::fromObservable($source);
     $promise->then(function ($value) {
         $this->assertTrue(false);
     }, function ($error) {
         $this->assertEquals($error, new Exception("some error"));
     });
 }
 /**
  * @test
  *
  */
 public function from_promise_failure()
 {
     $p = Promise::rejected(new Exception('error'));
     $source = Promise::toObservable($p);
     $source->subscribe(new CallbackObserver(function ($x) {
         $this->assertFalse(true);
     }, function ($error) {
         $this->assertEquals($error, new Exception('error'));
     }, function () {
         $this->assertFalse(true);
     }));
 }
 /**
  * @test
  */
 public function from_promise_reject()
 {
     $error = new Exception("Test exception");
     $source = PromiseFactory::toObservable(function () use($error) {
         return Promise::rejected($error);
     });
     $theException = null;
     $source->subscribeCallback([$this, 'fail'], function ($err) use(&$theException) {
         $theException = $err;
     }, [$this, 'fail'], $this->scheduler);
     $this->scheduler->start();
     $this->assertTrue($theException instanceof Exception);
     $this->assertSame($error, $theException);
 }
<?php

require_once __DIR__ . '/../bootstrap.php';
$p = \Rx\React\Promise::resolved(42);
$source = \Rx\React\Promise::toObservable($p);
$subscription = $source->subscribe($stdoutObserver);
//Next value: 42
//Complete!
// Create a promise which rejects with an error
$p = \Rx\React\Promise::rejected(new Exception('because'));
$source2 = \Rx\React\Promise::toObservable($p);
$subscription = $source2->subscribe($createStdoutObserver());
//Exception: because
 /**
  * @return ObservableInterface
  */
 public function broadcasts() : ObservableInterface
 {
     return Promise::toObservable($this->transport->request('broadcasts'))->flatMap(function ($response) {
         return Observable::fromArray($response['broadcasts']);
     })->map(function ($broadcast) {
         return $this->getTransport()->getHydrator()->hydrate('Broadcast', $broadcast);
     });
 }
Exemple #12
0
<?php

require_once __DIR__ . '/../bootstrap.php';
/* Using a promise */
$source = \Rx\React\PromiseFactory::toObservable(function () {
    return \Rx\React\Promise::resolved(42);
});
$subscription = $source->subscribe($createStdoutObserver());
//Next value: 42
//Complete!
 /**
  * @test
  */
 public function observable_dispose_after_complete()
 {
     $canceled = false;
     $deferred = new Deferred(function () use(&$canceled) {
         $canceled = true;
     });
     $o = Promise::toObservable($deferred->promise());
     $this->scheduler->schedule(function () use($deferred) {
         $deferred->resolve(1);
     }, 200);
     $results = new MockObserver($this->scheduler);
     $s = $o->subscribe($results, $this->scheduler);
     $this->scheduler->schedule(function () use($s) {
         $s->dispose();
     }, 250);
     $this->scheduler->start();
     $this->assertMessages([onNext(200, 1), onCompleted(200)], $results->getMessages());
     $this->assertFalse($canceled);
 }
<?php

require_once __DIR__ . '/../bootstrap.php';
// With React Promise
$source = \Rx\Observable\BaseObservable::just(42);
$promise = \Rx\React\Promise::fromObservable($source);
$promise->then(function ($value) {
    echo "Value {$value}\n";
});
//Value 42
 /**
  * @return array
  */
 public function broadcasts() : array
 {
     return await(Promise::fromObservable($this->client->broadcasts()->toArray()), $this->transport->getLoop());
 }
 /**
  * @return ObservableInterface
  */
 public function caches() : ObservableInterface
 {
     return Promise::toObservable($this->getTransport()->request('repos/' . $this->slug() . '/caches'))->flatMap(function ($response) {
         return Observable::fromArray($response['caches']);
     })->map(function ($cache) {
         return $this->getTransport()->getHydrator()->hydrate('Cache', $cache);
     });
 }