blob: 8eb66c588097aefce5caa290a2c0e5acc874b836 [file] [log] [blame]
<?php
/*******************************************************************************
* Copyright (c) 2016 Eclipse Foundation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Christopher Guindon (Eclipse Foundation) - Initial implementation
*******************************************************************************/
require_once('restclient.class.php');
/**
* EclipseUSSBlob class
*
* @author chrisguindon
*/
class EclipseUSSBlob extends RestClient{
/**
* etag value
*
* @var string
*/
private $etag = '';
/**
* Reponse body
*
* @var string
*/
private $body = '';
function __construct(App $App = NULL) {
parent::__construct($App);
$this->setBaseUrl('https://api.eclipse.org');
switch ($this->getEnvShortName()) {
case 'local':
$this->setBaseUrl('https://api.eclipse.local:51243');
break;
case 'staging':
$this->setBaseUrl('https://api-staging.eclipse.org');
break;
}
}
/**
* Set etag
*
* @param string $etag
*/
public function setEtag($etag = ''){
$this->etag = $etag;
}
/**
* Get etag
*
* @return string
*/
public function getEtag(){
return $this->etag;
}
/**
* Set body
* @param string $body
*/
public function setBody($body = ''){
$this->body = $body;
}
/**
* Get body
* @return string
*/
public function getBody(){
return $this->body;
}
/**
* Get Blob
*
* @param string $application_token
* @param string $blob_key
* @param string $etag
*
* @return Response $data
*/
public function getBlob($application_token = "", $blob_key = "", $username = "") {
$etag = $this->getEtag();
if (!empty($etag)) {
$this->setHeader(array(
'If-None-Match' => $etag,
));
}
$url = 'uss/blob/';
if (!empty($username)) {
$url = 'account/profile/' . $username . '/blob/';
}
$url .= $application_token . '/' . $blob_key;
$data = $this->get($url);
$this->unsetHeader('If-None-Match');
return $data;
}
/**
* Get an index of blobs
*
* @param string $application_token
* @param number $page
* @param number $pagesize
*
* @return Response $data
*/
public function indexBlob($application_token = "", $page = 1, $pagesize = 20, $username = "") {
$url = 'uss/blob/' . $application_token;
if (!empty($username)) {
$url = 'account/profile/' . $username . '/blob/' . $application_token;
}
$data = $this->get($url . '?page=' . $page . '&pagesize=' . $pagesize);
return $data;
}
/**
* Fetch all blob from an $application_token
*
* @param string $application_token
* @param number $page
* @param number $pagesize
*
* @return Response $data
*/
public function indexAllBlob($application_token = "", $page = 1, $pagesize = 20, $username = "") {
$data = $this->indexBlob($application_token, $page, $pagesize, $username);
$return = array();
$return[] = $data;
if (!isset($data->error) && !empty($data->body) && $data) {
while ($data = $this->_getNextPage($data)) {
$return[] = $data;
}
}
return $return;
}
/**
* Create or update a blob
*
* @param string $application_token
* @param string $blob_key
* @param string $etag
* @param unknown $data
*
* @return Response $data
*/
public function putBlob($application_token = "", $blob_key = "", $data = NULL) {
$fields['value'] = base64_encode($data);
$etag = $this->getEtag();
if (!empty($etag)) {
$this->setHeader(array(
'If-Match' => $etag,
));
}
$result = $this->put('uss/blob/' . $application_token . '/' . $blob_key, json_encode($fields));
$this->unsetHeader('If-Match');
return $result;
}
/**
* Delete a blob
*
* @param string $application_token
* @param string $blob_key
* @param string $etag
*
* @return Response $data
*/
public function deleteBlob($application_token = "", $blob_key = "") {
$this->setHeader(array(
'If-Match' => $this->getEtag(),
));
$data = $this->delete('uss/blob/' . $application_token . '/' . $blob_key);
$this->unsetHeader('If-Match');
return $data;
}
}