<?php

	// 認証キー (必要)
	$auth_key = '' ;

	// 動画IDを指定
	$post_id = '1049109950888337408' ;

	// GETメソッドで指定がある場合
	foreach( array( 'post_id' ) as $val )
	{
		if( isset( $_GET[ $val ] ) && $_GET[ $val ] != '' )
		{
			${ $val } = $_GET[ $val ] ;
		}
	}

	// リクエストURL
	$request_url = 'https://api.vineapp.com/posts/' . $post_id . '/reposts' ;

	// BASIC認証のリクエスト
	$curl = curl_init() ;
	curl_setopt( $curl , CURLOPT_URL , $request_url ) ;
	curl_setopt( $curl , CURLOPT_HEADER, 1 ) ;
	if( $auth_key )
	{
		curl_setopt( $curl , CURLOPT_HTTPHEADER , array( 'vine-session-id: ' . $auth_key . "\r\n" ) ) ;
	}
	curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER , false ) ;
	curl_setopt( $curl , CURLOPT_RETURNTRANSFER , true ) ;
	curl_setopt( $curl , CURLOPT_TIMEOUT , 5 ) ;
	$res1 = curl_exec( $curl ) ;
	$res2 = curl_getinfo( $curl ) ;
	curl_close( $curl ) ;

	// 取得したデータ
	$json = substr( $res1, $res2['header_size'] ) ;			// 取得したデータ(JSONなど)
	$header = substr( $res1, 0, $res2['header_size'] ) ;		// レスポンスヘッダー (検証に利用したい場合にどうぞ)

	// HTML用
	$html = '' ;

	// JSONデータをオブジェクト形式に変換する
	$obj = json_decode( $json ) ;

	// キーワードを指定する
	$html .= '<h2>動画IDを指定する</h2>' ;
	$html .= '<p>動画IDを指定して、Revineをしたユーザーを取得してみて下さい。</p>' ;
	$html .= '<form>' ;
	$html .= 	'<p><input name="post_id" value="' . $post_id . '"></p>' ;
	$html .= 	'<p><button>検索する</button></p>' ;
	$html .= '</form>' ;

	// 実行結果の出力
	$html .= '<h2>実行結果</h2>' ;

	// エラー判定
	if( !$obj || !isset($obj->data->records) || empty($obj->data->records) )
	{
		$html .= '<p>データを取得できませんでした…。設定を再確認して下さい。</p>' ;
	}
	else
	{
		// 説明
		$html .= '<p>動画ID:<code><b>' . $post_id . '</b></code>をRevineしたユーザーを取得しました。</p>' ;

		// 解析
		foreach( $obj->data->records as $item )
		{
			// 各データの整理
			$userId = (string)$item->userId ;		// ユーザーID (文字列にキャストしないと末尾の数値が丸まる…)
			$username = $item->username ;		// ユーザー名
			$created = $item->created ;		// 投稿日時
			$repostId = (string)$item->repostId ;		// RevineのID (文字列にキャストしないと末尾の数値が丸まる…)

			// 日時の整形
			$created = date( 'Y/m/d H:i' , strtotime( $created ) ) ;

			// ブラウザに出力
			$html .= '<dl>' ;
			$html .= 	'<dt>ユーザーID</dt>' ;
			$html .= 		'<dd><a href="https://vine.co/u/' . $userId . '" target="_blank">' . $userId . '</a></dd>' ;
			$html .= 	'<dt>ユーザー名</dt>' ;
			$html .= 		'<dd>' . $username . '</dd>' ;
			$html .= 	'<dt>投稿日時</dt>' ;
			$html .= 		'<dd>' . $created . '</dd>' ;
			$html .= 	'<dt>RevineのID</dt>' ;
			$html .= 		'<dd>' . $repostId . '</dd>' ;
			$html .= '</dl>' ;
		}
	}

	// 取得したデータ
	$html .= '<h2>取得したデータ</h2>' ;
	$html .= '<p>下記のデータを取得できました。</p>' ;
	$html .= 	'<h3>JSON</h3>' ;
	$html .= 	'<p><textarea rows="8">' . $json . '</textarea></p>' ;
	$html .= 	'<h3>レスポンスヘッダー</h3>' ;
	$html .= 	'<p><textarea rows="8">' . $header . '</textarea></p>' ;

?><!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<meta name="robots" content="noindex,nofollow">

		<!-- ビューポートの設定 -->
		<meta name="viewport" content="width=device-width, initial-scale=1.0">

		<title>Vine APIでRevineしたユーザーを取得するサンプルデモ</title><!-- 

/********************************************************************************

	SYNCER 〜 知識、感動をみんなと同期(Sync)するブログ

	* 配布場所
	https://syncer.jp/vine-api-matome

	* 動作確認
	https://syncer.jp/vine-api-matome/demo/get-revine.php

	* 最終更新日時
	2015/08/03 14:32

	* 作者
	あらゆ

	** 連絡先
	Twitter: https://twitter.com/arayutw
	Facebook: https://www.facebook.com/arayutw
	Google+: https://plus.google.com/114918692417332410369/
	E-mail: info@syncer.jp

	※ バグ、不具合の報告、提案、ご要望など、お待ちしております。
	※ 申し訳ありませんが、ご利用者様、個々の環境における問題はサポートしていません。

********************************************************************************/

		-->
	</head>
<body>



<?php echo $html ?>


<p style="text-align:center"><a href="https://syncer.jp/vine-api-matome">配布元: Syncer</a></p>






</body>
</html>