<?php
							 | 
						|
								
							 | 
						|
								namespace App\ResponseHandler;
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 *  Handle Response of a Rss Feed,
							 | 
						|
								 *  response will parsed to SimpleXMLElement
							 | 
						|
								 *  each item in a channel will be run through actions
							 | 
						|
								 *
							 | 
						|
								 *
							 | 
						|
								 */
							 | 
						|
								class Rss extends ResponseHandler
							 | 
						|
								{
							 | 
						|
								    /**
							 | 
						|
								     *  getting data from
							 | 
						|
								     *
							 | 
						|
								     *
							 | 
						|
								     *  @return object
							 | 
						|
								     *
							 | 
						|
								     */
							 | 
						|
								    public function get()
							 | 
						|
								    {
							 | 
						|
								        $this->response = Http::withHeaders([
							 | 
						|
								            "Content-Type" => "text/xml;charset=utf-8"
							 | 
						|
								        ])->get($this->source->url);
							 | 
						|
								
							 | 
						|
								        return $this->response;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     *  handle response
							 | 
						|
								     *
							 | 
						|
								     *
							 | 
						|
								     *
							 | 
						|
								     */
							 | 
						|
								    public function handle()
							 | 
						|
								    {
							 | 
						|
								        $xml = new SimpleXMLElement($this->response->body());
							 | 
						|
								
							 | 
						|
								        foreach($xml->channel->item as $item) {
							 | 
						|
								            foreach($this->actions as $action) {
							 | 
						|
								                $action->handle($item);
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								}
							 |