public function testCreateFromResponse() { $mockResponse = $this->createMockResponse('MockEventResponse'); $event = Event::createFromResponse($mockResponse); $this->assertInstanceOf('BinaryThinking\\LastfmBundle\\Lastfm\\Model\\Event', $event, 'object created is not an instance of Event'); $this->assertNotEmpty($event->getId(), 'empty event id'); $this->assertNotEmpty($event->getTitle(), 'empty event title'); $this->assertNotEmpty($event->getArtists(), 'empty event artists'); $this->assertNotEmpty($event->getHeadliner(), 'empty event headliner'); $this->assertInstanceOf('BinaryThinking\\LastfmBundle\\Lastfm\\Model\\Venue', $event->getVenue(), 'wrong instance for venue'); $this->assertNotEmpty($event->getStartDate(), 'empty event start date'); $this->assertNotEmpty($event->getDescription(), 'empty event description'); $this->assertNotEmpty($event->getImages(), 'empty event images'); $this->assertArrayHasKey('extralarge', $event->getImages(), 'empty event extralarge image'); $this->assertNotEmpty($event->getAttendance(), 'empty event attendance'); $this->assertNotEmpty($event->getReviews(), 'empty event reviews'); $this->assertNotEmpty($event->getEventTag(), 'empty event tag'); $this->assertNotEmpty($event->getUrl(), 'empty event url'); $this->assertNotEmpty($event->getWebsite(), 'empty event website'); $this->assertNotEmpty($event->getTickets(), 'empty event tickets'); $this->assertEquals(0, $event->getCancelled(), 'event is cancelled'); }
/** * Get a paginated list of all the events this artist has played at in the past. * * @param string $artist the artist name * @param string $mbid the musicbrainz id for the artist * @param int $limit the number of results to fetch per page. Defaults to 50 * @param int $page the page number to fetch. Defaults to first page * @param bool $autocorrect transform misspelled artist names into correct artist names, returning the correct version instead. The corrected artist name will be returned in the response */ public function getPastEvents($artist, $mbid = null, $limit = null, $page = null, $autocorrect = true) { $respone = $this->call(array('method' => 'artist.getPastEvents', 'artist' => $artist, 'mbid' => $mbid, 'limit' => $limit, 'page' => $page, 'autocorrect' => $autocorrect)); $events = array(); if (!empty($respone->events->event)) { foreach ($respone->events->event as $event) { $events[] = LastfmModel\Event::createFromResponse($event); } } return $events; }
public static function createFromResponse(\SimpleXMLElement $response) { $event = new Event(); $event->setId((int) $response->id); $event->setTitle((string) $response->title); $artists = array(); foreach ($response->artists->artist as $artist) { $artists[] = (string) $artist; } $event->setArtists($artists); $event->setHeadliner((string) $response->artists->headliner); $venue = Venue::createFromResponse($response->venue); $event->setVenue($venue); $event->setStartDate((string) $response->startDate); $event->setDescription($response->description); $images = array(); foreach ($response->image as $image) { $imageAttributes = $image->attributes(); if (!empty($imageAttributes->size)) { $images[(string) $imageAttributes->size] = (string) $image; } } $event->setImages($images); $event->setAttendance((int) $response->attendance); $event->setReviews((int) $response->reviews); $event->setEventTag((string) $response->tag); $event->setUrl((string) $response->url); $event->setWebsite((string) $response->website); $event->setTickets((int) $response->tickets); $event->setCancelled((int) $response->cancelled); return $event; }