| <?php |
| define("URL", "https://www.call2all.co.il/ym/api/"); |
| $server = "www"; |
| |
| class BodyPost |
| { |
| |
| public static function PartPost($name, $val) |
| { |
| $body = 'Content-Disposition: form-data; name="' . $name . '"'; |
| |
| if($val instanceof oFile) |
| { |
| $file = $val->Name(); |
| $mime = $val->Mime(); |
| $cont = $val->Content(); |
| |
| $body .= '; filename="' . $file . '"' . "\r\n"; |
| $body .= 'Content-Type: ' . $mime ."\r\n\r\n"; |
| $body .= $cont."\r\n"; |
| } else $body .= "\r\n\r\n".$val."\r\n"; |
| return $body; |
| } |
| |
| public static function Get(array $post, $delimiter = '-------------0123456789') |
| { |
| if(is_array($post) && !empty($post)) |
| { |
| $bool = true; |
| |
| if($bool) |
| { |
| $ret = ''; |
| foreach($post as $name=>$val) |
| $ret .= '--' . $delimiter. "\r\n". self::PartPost($name, $val); |
| $ret .= "--" . $delimiter . "--\r\n"; |
| } else $ret = http_build_query($post); |
| } else throw new \Exception('Error input param!'); |
| return $ret; |
| } |
| } |
| |
| class oFile |
| { |
| private $name; |
| private $mime; |
| private $content; |
| |
| public function __construct($name, $mime=null, $content=null) |
| { |
| if(is_null($content)) |
| { |
| $info = pathinfo($name); |
| |
| if(!empty($info['basename']) && is_readable($name)) |
| { |
| $this->name = $info['basename']; |
| |
| $this->mime = mime_content_type($name); |
| |
| $content = file_get_contents($name); |
| if($content!==false) |
| { |
| $this->content = $content; |
| } |
| else |
| { |
| throw new Exception('Don`t get content - "'.$name.'"'); |
| } |
| } |
| else |
| { |
| throw new Exception('Error param'); |
| } |
| } |
| else |
| { |
| $this->name = $name; |
| if(is_null($mime)) $mime = mime_content_type($name); |
| $this->mime = $mime; |
| $this->content = $content; |
| }; |
| } |
| |
| public function Name() { return $this->name; } |
| |
| public function Mime() { return $this->mime; } |
| |
| public function Content() { return $this->content; } |
| |
| } |
| |
| class connecting_to_yemot_api |
| { |
| public $token; |
| |
| const URL = URL; |
| |
| public function __construct($user_name, $password) |
| { |
| $body = array('username' => $user_name, 'password' => $password); |
| |
| $body = http_build_query($body); |
| |
| $opts = array('http' => array( |
| |
| 'method' => 'POST', |
| |
| 'header' => "Content-Type: application/x-www-form-urlencoded", |
| |
| 'content' => $body, |
| |
| 'follow_location' => false) ); |
| |
| $context = stream_context_create($opts); |
| |
| $url = self::URL.'Login'; |
| |
| $result = file_get_contents($url, FALSE, $context); |
| |
| $result = json_decode($result); |
| |
| if($result -> responseStatus == 'OK') |
| { |
| $this -> token = $result -> token; |
| |
| return TRUE; |
| } |
| else |
| { |
| throw new Exception('שם המשתמש או הסיסמא של המערכת שגויים'); |
| } |
| } |
| |
| public function __destruct() |
| { |
| $this -> connecting('Logout'); |
| } |
| |
| public function connecting($action, $body = array()) |
| { |
| $delimiter = '----'.uniqid(); |
| |
| $body['token'] = $this -> token; |
| |
| $body = BodyPost::Get($body, $delimiter); |
| |
| $opts = array('http' => |
| array( |
| 'method' => 'POST', |
| 'header' => 'Content-Type: multipart/form-data; boundary='.$delimiter, |
| 'content' => $body, |
| 'follow_location' => false |
| ) |
| ); |
| $context = stream_context_create($opts); |
| |
| $url = self::URL.$action; |
| |
| $result = file_get_contents($url, FALSE, $context); |
| |
| $headers = $this -> parseHeaders($http_response_header); |
| |
| if($headers['Content-Type'][0] == 'application/json') |
| { |
| return json_decode($result); |
| } |
| else |
| { |
| return $result; |
| } |
| } |
| |
| private function parseHeaders($headers) |
| { |
| |
| |
| |
| |
| |
| $head = array(); |
| |
| foreach( $headers as $k=>$v ) |
| { |
| $t = explode( ':', $v, 2 ); |
| |
| if( isset( $t[1] ) ) |
| { |
| if($t[0] == 'Set-Cookie') |
| { |
| $CookiesArr = array(); |
| |
| $cookies = explode( ';', $t[1]); |
| |
| foreach($cookies as $cookie) |
| { |
| $c = explode( '=', $cookie); |
| |
| if( isset( $c[1] ) ) |
| { |
| $CookiesArr[ trim($c[0]) ] = trim( $c[1] ); |
| } |
| else |
| { |
| $CookiesArr[] = trim( $c[0] ); |
| } |
| } |
| |
| $head[ trim($t[0]) ] = $CookiesArr; |
| } |
| elseif($t[0] == 'Content-Type') |
| { |
| $arr = array(); |
| |
| $children = explode( ';', $t[1]); |
| |
| foreach($children as $child) |
| { |
| $c = explode( '=', $child); |
| |
| if( isset( $c[1] ) ) |
| { |
| $arr[ trim($c[0]) ] = trim( $c[1] ); |
| } |
| else |
| { |
| $arr[] = trim( $c[0] ); |
| } |
| } |
| |
| $head[ trim($t[0]) ] = $arr; |
| } |
| else |
| { |
| $head[ trim($t[0]) ] = trim( $t[1] ); |
| } |
| } |
| else |
| { |
| $head[] = $v; |
| if( preg_match( "#HTTP/[0-9\.]+\s+([0-9]+)#",$v, $out ) ) |
| { |
| $head['reponse_code'] = intval($out[1]); |
| } |
| } |
| } |
| return $head; |
| } |
| } |
| echo "hello" ; |
| |
| $con = new connecting_to_yemot_api('0733000000','1234'); |
| $token = "0733000000:1234"; |
| $add_phone = $con -> connecting('ValidationCallerId', |
| [ |
| 'token' =>$token, |
| 'action'=> 'send', |
| [ |
| 'callerId' => '0771234567' , |
| 'validType' => "CALL" |
| ] |
| |
| ] |
| ); |
| print_r($add_phone); |
| |
| ?> |
| |