33namespace Nurigo \Solapi \Libraries ;
44
55use Exception ;
6+ use Nurigo \Solapi \Exceptions \BaseException ;
67use Nurigo \Solapi \Exceptions \CurlException ;
8+ use Nurigo \Solapi \Exceptions \UnknownException ;
9+ use Nurigo \Solapi \Models \Response \ErrorResponse ;
710
811/**
912 * @template T, R
@@ -51,7 +54,7 @@ public function __destruct()
5154 * @param string $method
5255 * @param string $uri
5356 * @param mixed $data
54- * @throws Exception|CurlException CURL 관련된 Exception
57+ * @throws Exception|CurlException|BaseException|UnknownException CURL 관련된 Exception
5558 */
5659 public function request (string $ method , string $ uri , $ data = false )
5760 {
@@ -76,13 +79,22 @@ public function request(string $method, string $uri, $data = false)
7679 curl_setopt ($ curl , CURLOPT_URL , $ url );
7780 curl_setopt ($ curl , CURLOPT_RETURNTRANSFER , true );
7881 curl_setopt ($ curl , CURLOPT_SSL_VERIFYPEER , false );
79- curl_setopt ($ curl , CURLOPT_SSLVERSION , 3 );
80- if (curl_error ($ curl )) {
82+ $ result = curl_exec ($ curl );
83+ $ jsonResult = json_decode ($ result );
84+
85+ if (curl_errno ($ curl )) {
8186 throw new CurlException (curl_error ($ curl ));
8287 }
83- $ result = curl_exec ($ curl );
88+
89+ $ httpStatusCode = curl_getinfo ($ curl , CURLINFO_HTTP_CODE );
90+ if ($ httpStatusCode >= 400 && $ httpStatusCode <= 500 ) {
91+ $ errorResponse = new ErrorResponse ($ jsonResult );
92+ throw new BaseException ($ errorResponse ->errorMessage , $ errorResponse ->errorCode );
93+ } else if ($ httpStatusCode != 200 ) {
94+ throw new UnknownException ("Unknown Http Error Occurred " , $ result );
95+ }
8496 curl_close ($ curl );
8597
86- return json_decode ( $ result ) ;
98+ return $ jsonResult ;
8799 }
88100}
0 commit comments