11<?php
22namespace AddressixAPI \Auth ;
33
4+ use AddressixAPI \Exception \Exception AS APIException ;
5+ use AddressixAPI \Exception \AuthException ;
6+ use AddressixAPI \Exception \NotFoundException ;
7+
48class OAuth2
59{
610 const OAUTH2_REVOKE_URI = 'https://www.addressix.com/oauth2/v1/revoke ' ;
@@ -93,10 +97,25 @@ public function fetchAccessToken($grant_type, array $parameters, array $extra_he
9397 }
9498
9599 if (!isset ($ parameters ['delegation ' ])) {
96- return $ this ->client ->getRequest ()->request (self ::OAUTH2_TOKEN_URI , 'POST ' , $ parameters , $ http_headers , 1 );
100+ $ response = $ this ->client ->getRequest ()->request (self ::OAUTH2_TOKEN_URI , 'POST ' , $ parameters , $ http_headers , 1 );
101+ } else {
102+ $ response = $ this ->client ->getRequest ()->request (self ::OAUTH2_DELEGATED_TOKEN_URI , 'POST ' , $ parameters , $ http_headers , 1 );
103+ }
104+
105+ if ($ response ->code ==200 ) {
106+ $ accesstoken = $ response ->body ;
97107 } else {
98- return $ this ->client ->getRequest ()->request (self ::OAUTH2_DELEGATED_TOKEN_URI , 'POST ' , $ parameters , $ http_headers , 1 );
108+ if ($ response ->code ==401 ) {
109+ throw new AuthException ('Authorization failed: ' . $ response ->code . '. ' , 401 );
110+ }
111+ else if ($ response ->code ==404 ) {
112+ throw new NotFoundException ('User not found: ' . $ response ->code . '. ' , 404 );
113+ }
114+ else {
115+ throw new APIException ('Request to resource failed: ' . $ response ->code . '. ' , $ response ->code );
116+ }
99117 }
118+ return $ accesstoken ;
100119 }
101120
102121 public function setAccessToken ($ token )
@@ -130,7 +149,7 @@ public function authenticate($code)
130149 return $ this ->access_token ;
131150 }
132151 else {
133- throw new \ AddressixAPI \ Exception ('Authentication failed: ' .$ response ->code );
152+ throw new APIException ('Authentication failed: ' .$ response ->code );
134153 }
135154 }
136155}
0 commit comments