1: <?php
 2: 
 3: /**
 4:  * Get information about a subscription
 5:  * @see  https://app.syspay.com/bundles/emiuser/doc/merchant_subscription.html#get-subscription-information
 6:  */
 7: class Syspay_Merchant_SubscriptionInfoRequest extends Syspay_Merchant_Request
 8: {
 9:     const METHOD = 'GET';
10:     const PATH   = '/api/v1/merchant/subscription/%d';
11: 
12:     /**
13:      * @var integer
14:      */
15:     private $subscriptionId;
16: 
17:     public function __construct($subscriptionId = null)
18:     {
19:         if (null !== $subscriptionId) {
20:             $this->setSubscriptionId($subscriptionId);
21:         }
22:     }
23: 
24:     /**
25:      * {@inheritDoc}
26:      */
27:     public function getMethod()
28:     {
29:         return self::METHOD;
30:     }
31: 
32:     /**
33:      * {@inheritDoc}
34:      */
35:     public function getPath()
36:     {
37:         return sprintf(self::PATH, $this->subscriptionId);
38:     }
39: 
40:     /**
41:      * Gets the value of subscriptionId.
42:      *
43:      * @return integer
44:      */
45:     public function getSubscriptionId()
46:     {
47:         return $this->subscriptionId;
48:     }
49: 
50:     /**
51:      * Sets the value of subscriptionId.
52:      *
53:      * @param integer $subscriptionId the subscriptionId
54:      *
55:      * @return self
56:      */
57:     public function setSubscriptionId($subscriptionId)
58:     {
59:         $this->subscriptionId = $subscriptionId;
60: 
61:         return $this;
62:     }
63: 
64:     /**
65:      * {@inheritDoc}
66:      */
67:     public function buildResponse(stdClass $response)
68:     {
69:         if (!isset($response->subscription)) {
70:             throw new Syspay_Merchant_UnexpectedResponseException(
71:                 'Unable to retrieve "subscription" data from response',
72:                 $response
73:             );
74:         }
75: 
76:         $subscription = Syspay_Merchant_Entity_Subscription::buildFromResponse($response->subscription);
77: 
78:         if (isset($response->redirect) && !empty($response->redirect)) {
79:             $subscription->setRedirect($response->redirect);
80:         }
81: 
82:         return $subscription;
83:     }
84: }
85: