Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.15 KB | None | 0 0
  1. HTTP/1.1 100 Continue
  2.  
  3. HTTP/1.1 201 Created
  4. x-amz-id-2: CaF37TJwdt0PZjGdquV4yQSeNqtDyWrZge1DfkBinhNdhHYb635nsWcECFhUoRgiYzuAAxf+z2Q=
  5. x-amz-request-id: F24A002779D03E34
  6. Date: Tue, 21 Mar 2017 13:15:17 GMT
  7. ETag: "3b45dadd80ddb4019e129e1c8469ca40"
  8. Location: http://qbprod.s3.amazonaws.com/2e5b9610a6ff4a8395ade21377def2f500
  9. Content-Type: application/xml
  10. Content-Length: 269
  11. Server: AmazonS3
  12.  
  13. <?php
  14.  
  15. $quickblox_user_name = "quickblox_agicent"; //quickblox account
  16. $quickblox_password = "quickblox@123";
  17.  
  18. $user_login = "quickblox_qb_130"; //API
  19. $user_pwd = "21663496";
  20.  
  21. $profile_pic = "c.png"; // image path
  22. $file_size = filesize($profile_pic);
  23.  
  24. //CREATE SESSION
  25. $session = createSession($quickblox_user_name,$quickblox_password);
  26. $token = $session->token;
  27.  
  28. //LOGIN USER
  29. $login_user = loginUser($user_login,$user_pwd,$token);
  30. $login_user_decode = json_decode($login_user);
  31. $log_in = $login_user_decode->user;
  32. $user_id = $log_in->id;
  33.  
  34. //CREATE A BLOB
  35. $create_blob = createBlob($profile_pic, $token);
  36. $res = json_decode($create_blob)->blob;
  37.  
  38. $blob_id = $res->id;
  39. $name = $res->name;
  40. $size = $res->size;
  41. $res_en = json_encode($res->blob_object_access);
  42. $rr = json_decode($res_en);
  43. $get_params = $rr->params;
  44.  
  45. //EXTRACTING BLOB PARAMETER FROM QUERY STRING
  46. $Query_String = explode("&", explode("?", $get_params)[1] );
  47. $content_type = urldecode(substr($Query_String[0], strpos($Query_String[0], "=") + 1));
  48. $expires = urldecode(substr($Query_String[1], strpos($Query_String[1], "=") + 1));
  49. $acl = substr($Query_String[2], strpos($Query_String[2], "=") + 1);
  50. $key = substr($Query_String[3], strpos($Query_String[3], "=") + 1);
  51. $policy = substr($Query_String[4], strpos($Query_String[4], "=") + 1);
  52. $success_action_status = substr($Query_String[5], strpos($Query_String[5], "=") + 1);
  53. $x_amz_algorithm = substr($Query_String[6], strpos($Query_String[6], "=") + 1);
  54. $x_amz_credential = urldecode(substr($Query_String[7], strpos($Query_String[7], "=") + 1));
  55. $x_amz_date = substr($Query_String[8], strpos($Query_String[8], "=") + 1);
  56. $x_amz_signature = substr($Query_String[9], strpos($Query_String[9], "=") + 1);
  57.  
  58. //CREATE JSON ARRAY OF EXTRATED PARAMETER
  59. $fields = array
  60. (
  61. "Content-Type" => $content_type,
  62. "Expires" => $expires,
  63. "acl" => $acl,
  64. "key" => $key,
  65. "policy" => $policy,
  66. "success_action_status" => $success_action_status,
  67. "x-amz-algorithm" => $x_amz_algorithm,
  68. "x-amz-credential" => $x_amz_credential,
  69. "x-amz-date" => $x_amz_date,
  70. "x-amz-signature" => $x_amz_signature,
  71. "file" => "@".$profile_pic
  72. );
  73.  
  74. //UPLOAD AVATAR / IMAGE
  75. $upload_avatar = uploadAvatar($fields);
  76. $resPP = json_decode($upload_avatar);
  77.  
  78. //DECLARE FILE UPLOAD
  79. $declare_upload_avatar = declareUploadAvatar($file_size,$blob_id,$token);
  80.  
  81. //CONNECT BLOB ID TO API USER
  82. $resultConnect = connectBlobToUser($blob_id,$user_id,$token);
  83.  
  84.  
  85.  
  86. //FUNCTIONS
  87. function createSession($login,$pwd)
  88. {
  89. // Application credentials - change to yours (found in QB Dashboard)
  90. DEFINE('APPLICATION_ID', 12345);
  91. DEFINE('AUTH_KEY', "MDJ8979q328");
  92. DEFINE('AUTH_SECRET', 'asDCE-JLDJCEU');
  93. DEFINE("RESETPWD_BASE_URL", strtolower(stristr($_SERVER["SERVER_PROTOCOL"], "/", true)) . "://" . $_SERVER["HTTP_HOST"] ."/img");
  94.  
  95. // User credentials
  96. DEFINE('USER_LOGIN', $login);
  97. DEFINE('USER_PASSWORD', $pwd);
  98.  
  99. // Quickblox endpoints
  100. DEFINE('QB_API_ENDPOINT', "https://api.quickblox.com");
  101. DEFINE('QB_PATH_SESSION', "session.json");
  102.  
  103. // Generate signature
  104. $nonce = rand();
  105. $timestamp = time();
  106. $signature_string = "application_id=".APPLICATION_ID."&auth_key=".AUTH_KEY."&nonce=".$nonce."&timestamp=".$timestamp."&user[login]=".USER_LOGIN."&user[password]=".USER_PASSWORD;
  107.  
  108. $signature = hash_hmac('sha1', $signature_string , AUTH_SECRET);
  109.  
  110. $post_body = "application_id=" . APPLICATION_ID . "&auth_key=" . AUTH_KEY . "&timestamp=" . $timestamp . "&nonce=" . $nonce . "&signature=" . $signature . "&user[login]=" . USER_LOGIN . "&user[password]=" . USER_PASSWORD;
  111.  
  112. // Configure cURL
  113. $curl = curl_init();
  114. curl_setopt($curl, CURLOPT_URL, QB_API_ENDPOINT . '/' . QB_PATH_SESSION); // Full path is - https://api.quickblox.com/session.json
  115. curl_setopt($curl, CURLOPT_POST, true); // Use POST
  116. curl_setopt($curl, CURLOPT_POSTFIELDS, $post_body); // Setup post body
  117. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // Receive server response
  118. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  119. curl_setopt($curl, CURLOPT_CAINFO,RESETPWD_BASE_URL."/quickblox.com.crt");
  120.  
  121. // Execute request and read response
  122. $response = curl_exec($curl);
  123. $responseJSON = json_decode($response);
  124. // Check errors
  125. if ($response)
  126. {
  127. $rs = json_decode($response)->session;
  128. return $rs;
  129.  
  130. } else {
  131. echo "0";
  132. // $error = curl_error($curl). '(' .curl_errno($curl). ')';
  133. // echo $error . "n";
  134. }
  135.  
  136. // Close connection
  137. curl_close($curl);
  138.  
  139. }
  140.  
  141. function loginUser($login1,$pwd1,$token)
  142. {
  143. $requestCred = '{"login": "'.$login1.'", "password": "'.$pwd1.'"}';
  144.  
  145. $ch = curl_init('http://api.quickblox.com/login.json');
  146. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
  147. curl_setopt($ch, CURLOPT_POSTFIELDS, $requestCred);
  148. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  149. curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  150. 'Content-Type: application/json',
  151. 'QuickBlox-REST-API-Version: 0.1.1',
  152. 'QB-Token: ' . $token
  153. ));
  154. $res = curl_exec($ch);
  155. curl_close( $ch );
  156.  
  157. return $res;
  158. }
  159.  
  160. function createBlob($profile_pic,$token)
  161. {
  162. $ext = pathinfo($profile_pic, PATHINFO_EXTENSION);
  163. if($ext == 'png' || $ext == "Png" || $ext == "PNG")
  164. $request = '{"blob": {"content_type": "image/png", "name": "'.$profile_pic.'", "public": "true"}}';
  165. else
  166. $request = '{"blob": {"content_type": "image/jpeg", "name": "'.$profile_pic.'"}}';
  167.  
  168. $ch = curl_init('http://api.quickblox.com/blobs.json');
  169. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
  170. curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
  171. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  172. curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  173. 'Content-Type: application/json',
  174. 'QuickBlox-REST-API-Version: 0.1.1',
  175. 'QB-Token: ' . $token
  176. ));
  177. $res = curl_exec($ch);
  178. curl_close( $ch );
  179.  
  180. return $res;
  181. }
  182.  
  183. function uploadAvatar($fields)
  184. {
  185. $ch = curl_init('http://qbprod.s3.amazonaws.com/');
  186. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  187. curl_setopt($ch, CURLOPT_HEADER, true);
  188. curl_setopt($ch, CURLOPT_POST, true);
  189. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  190. curl_setopt($ch, CURLOPT_POSTFIELDS, $fields );
  191. $res = curl_exec($ch);
  192. curl_close( $ch );
  193.  
  194. return $res;
  195. }
  196.  
  197. function declareUploadAvatar($file_size,$blob_id,$token)
  198. {
  199. $request_size = '{"blob": {"size": '.$file_size.'}}';
  200. $ch = curl_init("http://api.quickblox.com/blobs/".$blob_id."/complete.json/");
  201. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
  202. curl_setopt($ch, CURLOPT_POSTFIELDS, $request_size );
  203. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  204. curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  205. 'Content-Type: application/json',
  206. 'QuickBlox-REST-API-Version: 0.1.1',
  207. 'QB-Token: ' . $token
  208. ));
  209. $res = curl_exec($ch);
  210. curl_close( $ch );
  211.  
  212. return $res;
  213. }
  214.  
  215. function connectBlobToUser($blob_id,$user_id,$token)
  216. {
  217. $update_user = '{"user": {"blob_id": '.$blob_id.'}}';
  218. $ch = curl_init("http://api.quickblox.com/users/$user_id.json/");
  219. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
  220. curl_setopt($ch, CURLOPT_POSTFIELDS, $update_user );
  221. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  222. curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  223. 'Content-Type: application/json',
  224. 'QuickBlox-REST-API-Version: 0.1.1',
  225. 'QB-Token: ' . $token
  226. ));
  227. $res = curl_exec($ch);
  228. curl_close( $ch );
  229.  
  230. return $res;
  231. }
  232.  
  233. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement