testrequest
This commit is contained in:
		
							parent
							
								
									3d17d2ff64
								
							
						
					
					
						commit
						d719bc283c
					
				
							
								
								
									
										47
									
								
								src/FileRequest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								src/FileRequest.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | |||||||
|  | <?php | ||||||
|  | 
 | ||||||
|  | namespace Nwb\MultiDownloaderClient; | ||||||
|  | 
 | ||||||
|  | class FileRequest | ||||||
|  | { | ||||||
|  |     private string $url; | ||||||
|  |     private ?string $fallbackUrl; | ||||||
|  | 
 | ||||||
|  |     public function __construct(string $url, string $fallbackUrl = null) | ||||||
|  |     { | ||||||
|  |         $this->url = $url; | ||||||
|  |         $this->fallbackUrl = $fallbackUrl; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public function url(string $url) | ||||||
|  |     { | ||||||
|  |         $this->url = $url; | ||||||
|  | 
 | ||||||
|  |         return $this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public function fallbackUrl(string $fallbackUrl) | ||||||
|  |     { | ||||||
|  |         $this->fallbackUrl = $fallbackUrl; | ||||||
|  | 
 | ||||||
|  |         return $this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public function getUrl(): string | ||||||
|  |     { | ||||||
|  |         return $this->url; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public function getFallbackUrl(): ?string | ||||||
|  |     { | ||||||
|  |         return $this->fallbackUrl; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public function toArray(): array | ||||||
|  |     { | ||||||
|  |         return [ | ||||||
|  |             'url' => $this->url, | ||||||
|  |             'fallback_url' => $this->fallbackUrl, | ||||||
|  |         ]; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -4,6 +4,7 @@ namespace Nwb\MultiDownloaderClient; | |||||||
| 
 | 
 | ||||||
| class MultiDownloaderClient | class MultiDownloaderClient | ||||||
| { | { | ||||||
|  |     private string $apiUrl = 'https://multi-dl.kub.nwb.fr'; | ||||||
|     private string $apiKey; |     private string $apiKey; | ||||||
| 
 | 
 | ||||||
|     public function __construct(string $apiKey = null) |     public function __construct(string $apiKey = null) | ||||||
| @ -16,4 +17,40 @@ class MultiDownloaderClient | |||||||
| 
 | 
 | ||||||
|         $this->apiKey = $apiKey; |         $this->apiKey = $apiKey; | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     public function download(array $files) | ||||||
|  |     { | ||||||
|  |         $files = array_map(function (FileRequest $file) { | ||||||
|  |             return $file->toArray(); | ||||||
|  |         }, $files); | ||||||
|  | 
 | ||||||
|  |         return $this->sendRequest($files); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private function sendRequest(array $files) | ||||||
|  |     { | ||||||
|  |         $ch = curl_init(); | ||||||
|  | 
 | ||||||
|  |         curl_setopt($ch, CURLOPT_URL, $this->apiUrl . '/v2/zip'); | ||||||
|  |         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); | ||||||
|  |         curl_setopt($ch, CURLOPT_POST, true); | ||||||
|  | 
 | ||||||
|  |         curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($files)); | ||||||
|  | 
 | ||||||
|  |         curl_setopt($ch, CURLOPT_HTTPHEADER, [ | ||||||
|  |             'Content-Type: application/json', | ||||||
|  |         ]); | ||||||
|  | 
 | ||||||
|  |         $response = curl_exec($ch); | ||||||
|  | 
 | ||||||
|  |         $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); | ||||||
|  | 
 | ||||||
|  |         if ($httpCode !== 200) { | ||||||
|  |             throw new MultiDownloaderException('Error while requesting API: ' . $response); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         curl_close($ch); | ||||||
|  | 
 | ||||||
|  |         return $response; | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										7
									
								
								src/MultiDownloaderException.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/MultiDownloaderException.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | |||||||
|  | <?php | ||||||
|  | 
 | ||||||
|  | namespace Nwb\MultiDownloaderClient; | ||||||
|  | 
 | ||||||
|  | class MultiDownloaderException extends \Exception | ||||||
|  | { | ||||||
|  | } | ||||||
| @ -2,6 +2,7 @@ | |||||||
| 
 | 
 | ||||||
| include __DIR__ . '/../vendor/autoload.php'; | include __DIR__ . '/../vendor/autoload.php'; | ||||||
| 
 | 
 | ||||||
|  | use Nwb\MultiDownloaderClient\FileRequest; | ||||||
| use Nwb\MultiDownloaderClient\MultiDownloaderClient; | use Nwb\MultiDownloaderClient\MultiDownloaderClient; | ||||||
| use PHPUnit\Framework\TestCase; | use PHPUnit\Framework\TestCase; | ||||||
| 
 | 
 | ||||||
| @ -16,6 +17,20 @@ class MultiDownloaderClientTest extends TestCase | |||||||
|         return $reflection->getValue($object); |         return $reflection->getValue($object); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     public function testRequest() | ||||||
|  |     { | ||||||
|  |         $client = new MultiDownloaderClient(); | ||||||
|  | 
 | ||||||
|  |         $files = [ | ||||||
|  |             new FileRequest('https://s3.eu-central-1.wasabisys.com/dev-data-nwb/multi-downloader-sat/tests/img/watermarks/portrait.png'), | ||||||
|  |             new FileRequest('https://s3.eu-central-1.wasabisys.com/dev-data-nwb/multi-downloader-sat/tests/img/watermarks/paysage.png') | ||||||
|  |         ]; | ||||||
|  | 
 | ||||||
|  |         $response = $client->download($files); | ||||||
|  | 
 | ||||||
|  |         var_dump($response); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     public function testApiKeyEnv() |     public function testApiKeyEnv() | ||||||
|     { |     { | ||||||
|         putenv('MULTI_DOWNLOADER_API_KEY=1234567890'); |         putenv('MULTI_DOWNLOADER_API_KEY=1234567890'); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user