Commit 60a3acbd authored by Ad Schellevis's avatar Ad Schellevis

sync with master

parent 9ff19157
...@@ -44,6 +44,11 @@ class Drive ...@@ -44,6 +44,11 @@ class Drive
*/ */
private $client = null; private $client = null;
/**
* @var null|Google_Auth_AssertionCredentials credential object
*/
private $cred = null;
public function __construct() public function __construct()
{ {
// hook in Google's autoloader // hook in Google's autoloader
...@@ -60,17 +65,13 @@ class Drive ...@@ -60,17 +65,13 @@ class Drive
$this->client = new \Google_Client(); $this->client = new \Google_Client();
$key = base64_decode($privateKeyB64); $key = base64_decode($privateKeyB64);
$cred = new \Google_Auth_AssertionCredentials( $this->cred = new \Google_Auth_AssertionCredentials(
$client_id, $client_id,
array('https://www.googleapis.com/auth/drive'), array('https://www.googleapis.com/auth/drive'),
$key $key
); );
$this->client->setAssertionCredentials($cred); $this->client->setAssertionCredentials($this->cred);
$this->client->setApplicationName("OPNsense"); $this->client->setApplicationName("OPNsense");
$this->client->setAssertionCredentials($cred);
if ($this->client->getAuth()->isAccessTokenExpired()) {
$this->client->getAuth()->refreshTokenWithAssertion($cred);
}
$this->service = new \Google_Service_Drive($this->client); $this->service = new \Google_Service_Drive($this->client);
} }
...@@ -87,6 +88,9 @@ class Drive ...@@ -87,6 +88,9 @@ class Drive
if ($filename != null) { if ($filename != null) {
$query .= " and title in '".$filename."'"; $query .= " and title in '".$filename."'";
} }
if ($this->client->getAuth()->isAccessTokenExpired()) {
$this->client->getAuth()->refreshTokenWithAssertion($this->cred);
}
return $this->service->files->listFiles(array('q' => $query)); return $this->service->files->listFiles(array('q' => $query));
} }
...@@ -97,6 +101,9 @@ class Drive ...@@ -97,6 +101,9 @@ class Drive
*/ */
public function download($fileHandle) public function download($fileHandle)
{ {
if ($this->client->getAuth()->isAccessTokenExpired()) {
$this->client->getAuth()->refreshTokenWithAssertion($this->cred);
}
$sUrl = $fileHandle->getDownloadUrl(); $sUrl = $fileHandle->getDownloadUrl();
$request = new \Google_Http_Request($sUrl, 'GET', null, null); $request = new \Google_Http_Request($sUrl, 'GET', null, null);
$httpRequest = $this->client->getAuth()->authenticatedRequest($request); $httpRequest = $this->client->getAuth()->authenticatedRequest($request);
...@@ -120,6 +127,9 @@ class Drive ...@@ -120,6 +127,9 @@ class Drive
public function upload($directoryId, $filename, $content, $mimetype = 'text/plain') public function upload($directoryId, $filename, $content, $mimetype = 'text/plain')
{ {
if ($this->client->getAuth()->isAccessTokenExpired()) {
$this->client->getAuth()->refreshTokenWithAssertion($this->cred);
}
$parent = new \Google_Service_Drive_ParentReference(); $parent = new \Google_Service_Drive_ParentReference();
$parent->setId($directoryId); $parent->setId($directoryId);
...@@ -144,6 +154,9 @@ class Drive ...@@ -144,6 +154,9 @@ class Drive
*/ */
public function delete($fileHandle) public function delete($fileHandle)
{ {
if ($this->client->getAuth()->isAccessTokenExpired()) {
$this->client->getAuth()->refreshTokenWithAssertion($this->cred);
}
$this->service->files->delete($fileHandle['id']); $this->service->files->delete($fileHandle['id']);
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment