Overview

Namespaces

  • SMSApi
    • Api
      • Action
        • Phonebook
        • Sender
        • Sms
        • User
      • Response
    • Exception
    • Proxy
      • Http

Classes

  • SMSApi\Proxy\Http\AbstractHttp
  • SMSApi\Proxy\Http\Curl
  • SMSApi\Proxy\Http\Native
  • Overview
  • Namespace
  • Class
 1: <?php
 2: 
 3: namespace SMSApi\Proxy\Http;
 4: 
 5: use SMSApi\Proxy\Proxy;
 6: 
 7: class Native extends AbstractHttp implements Proxy
 8: {
 9:     /**
10:      * @deprecated
11:      */
12:     const CONNECT_FOPEN = 1;
13: 
14:     /**
15:      * @deprecated
16:      */
17:     const CONNECT_SOCKET = 2;
18: 
19:     protected function makeRequest($url, $query, $file)
20:     {
21:         $body = $this->prepareRequestBody($file);
22: 
23:         $headers = $this->prepareRequestHeaders($file);
24: 
25:         if (!empty($body)) {
26:             $url .= '?' . $query;
27:         }
28: 
29:         $headersString = $this->preparePlainTextHeaders($headers);
30: 
31:         $options = array(
32:             'http' => array(
33:                 'method'     => $this->method,
34:                 'header'     => $headersString,
35:                 'content'    => empty($body) ? $query : $body,
36:             )
37:         );
38: 
39:         $context = stream_context_create($options);
40: 
41:         $fp = fopen($url, 'r', false, $context);
42: 
43:         $response['code'] = $this->getStatusCode(stream_get_meta_data($fp));
44:         $response['output'] = stream_get_contents($fp);
45: 
46:         if ($fp) {
47:             fclose($fp);
48:         }
49: 
50:         return $response;
51:     }
52: 
53:     private function getStatusCode($metaData)
54:     {
55:         $statusCode = null;
56: 
57:         if ( isset( $metaData[ 'wrapper_data' ] ) AND is_array( $metaData[ 'wrapper_data' ] ) ) {
58:             if (isset($metaData['wrapper_data']['headers']) and is_array($metaData['wrapper_data']['headers'])) {
59:                 $headers = $metaData['wrapper_data']['headers'];
60:             } else {
61:                 $headers = $metaData['wrapper_data'];
62:             }
63: 
64:             foreach ($headers as $wrapperRow) {
65:                 if (preg_match( '/^[\s]*HTTP\/1\.[01]\s([\d]+)\sOK[\s]*$/i', $wrapperRow, $code)) {
66:                     $statusCode = next($code);
67:                 }
68:             }
69:         }
70: 
71:         return $statusCode;
72:     }
73: 
74:     /**
75:      * @param $headers
76:      * @return string
77:      */
78:     private function preparePlainTextHeaders($headers)
79:     {
80:         $headersString = "";
81: 
82:         foreach ($headers as $k => $v) {
83:             if (is_string($k)) {
84:                 $v = ucfirst($k) . ": " . $v;
85:             }
86: 
87:             $headersString .= $v . "\r\n";
88:         }
89: 
90:         return $headersString;
91:     }
92: }
93: 
SMSAPI Api Client API documentation generated by ApiGen