- Timestamp:
- 06/15/12 14:49:24 (12 years ago)
- Location:
- sandbox/2.4.1-3/prototype
- Files:
-
- 1 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
sandbox/2.4.1-3/prototype/api/datalayer.js
r6514 r6523 1 internalUrl = /^([A-z0-9-_]+)(:[A-z0-9-_]+)?$/; 1 2 (function($){$.parseQuery=function(options){var config={query:window.location.search||""},params={};if(typeof options==='string'){options={query:options};} 3 $.extend(config,$.parseQuery,options);config.query=config.query.replace(/^\?/,'');$.each(config.query.split(config.separator),function(i,param){var pair=param.split('='),key=config.decode(pair.shift(),null).toString(),value=config.decode(pair.length?pair.join('='):null,key);if(config.array_keys(key)){params[key]=params[key]||[];params[key].push(value);}else{params[key]=value;}});return params;};$.parseQuery.decode=$.parseQuery.default_decode=function(string){return decodeURIComponent((string||"").replace('+',' '));};$.parseQuery.array_keys=function(){return false;};$.parseQuery.separator="&";}(jQuery)); 4 5 internalUrl = /^([A-z0-9-_]+)(:[A-z0-9-_]+)?$/; 2 6 internalUri = /^([a-zA-Z0-9-_]+)\(([a-zA-Z0-9-_]+)\):\/\/(.*)|([a-zA-Z0-9-_]+):\/\/(.*)$/; 3 7 isGeneratedId = /^\d+\(javascript\)$/; … … 57 61 58 62 jqXHR.abort(); 63 64 if( typeof options.data === "string" ) 65 options.data = $.parseQuery( options.data ); 59 66 60 67 switch( options.type.toUpperCase() ) … … 195 202 196 203 send: function( url, type, data, callback, sync, extraOptions ){ 197 204 198 205 var result = false, fired = false; 199 206 … … 213 220 214 221 }, 215 'error': function( dt, textStatus, jqXHR ){216 217 if( callback )218 {219 fired = true;220 result = callback( $.parseJSON(dt.responseText), textStatus, jqXHR );221 }222 else223 result = $.parseJSON(dt.responseText);224 225 },226 222 'complete': function( jqXHR, textStatus ){ 227 223 … … 243 239 244 240 $.ajax( envelope ); 241 245 242 return( result ); 246 },247 248 /**249 * This method is used to read resources from the server.250 *251 * @param uri Uri of the resource that gonna be readed.252 * @param callback A function that is called when the resource is loaded successfully. When the parameter is ignored the request is made synchrounsly.253 * @param accept The attribute accept that is used to ask the target format to the server254 * @return The target resource when the callback is ommitted ( made it synchronous )255 */256 257 read: function( uri, data, callback, accept ){258 //return this.send( this.dispatchPath + 'rest' + uri, [ 'get', accept || 'json' ], false, callback );259 //http://expressodev.prognus.com.br/cristiano/expresso-api/rest/maillast260 //return this.send( ('rest' + uri), [ 'get', accept || 'json' ], data, callback, !!!callback,261 console.log(this.dispatchPath+'../rest'+uri);262 return this.send( (this.dispatchPath + '../rest' + uri), [ 'get', accept || 'json' ], data, callback, !!!callback,263 {'beforeSend' : function (xhr){264 xhr.setRequestHeader('Authorization', "OAUTH Bearer " + (DataLayer.me ? DataLayer.me.token : DataLayer.dispatch("../prototype/me").token))}265 });266 267 },268 269 /**270 * This method is used to create resources from the server.271 *272 * @param uri Uri of the resource that gonna be readed.273 * @param callback A function that is called when the resource is created on the server successfully. When the parameter is ignored the request is made synchrounsly.274 * @param accept The attribute accept that is used to ask the target format to the server.275 * @return The result response of the create from the server when the callback is ommitted ( made it synchronous )276 */277 278 create: function( uri, data, callback, accept ){279 //return this.send( 'rest' + uri, [ 'post', accept || 'json' ], data, callback, !!!callback,280 return this.send( (this.dispatchPath + '../rest' + uri), [ 'post', accept || 'json' ], data, callback, !!!callback,281 {'beforeSend' : function (xhr){282 //xhr.setRequestHeader('Authorization', "OAUTH Bearer " + DataLayer.me.token)}283 xhr.setRequestHeader('Authorization', "OAUTH Bearer " + (DataLayer.me ? DataLayer.me.token : DataLayer.dispatch("../prototype/me").token))}284 });285 },286 287 /**288 * This method is used to update resources from the server.289 *290 * @param uri Uri of the resource that gonna be readed.291 * @param callback A function that is called when the resource is update on the server successfully. When the parameter is ignored the request is made synchrounsly.292 * @param accept The attribute accept that is used to ask the target format to the server293 * @return The result response of the update from the server when the callback is ommitted ( made it synchronous )294 */295 296 update: function( uri, data, callback, accept ){297 298 //return this.send( 'rest' + uri, [ 'put', accept || 'json' ], data, callback, !!!callback,299 return this.send( (this.dispatchPath + '../rest' + uri), [ 'put', accept || 'json' ], data, callback, !!!callback,300 {'beforeSend' : function (xhr){301 //xhr.setRequestHeader('Authorization', "OAUTH Bearer " + DataLayer.me.token)}302 xhr.setRequestHeader('Authorization', "OAUTH Bearer " + (DataLayer.me ? DataLayer.me.token : DataLayer.dispatch("../prototype/me").token))}303 });304 305 },306 307 /**308 * This method is used to delete resources from the server.309 *310 * @param uri Uri of the resource that gonna be readed.311 * @param callback A function that is called when the resource is deleted successfully in the server. When the parameter is ignored the request is made synchrounsly.312 * @param accept The attribute accept that is used to ask the target format to the server313 * @return The result response of the delete from the server when the callback is ommitted ( made it synchronous )314 */315 316 delete: function( uri, callback, accept ){317 //return this.send( 'rest' + uri, [ 'delete', accept || 'json' ], false, callback, !!!callback,318 return this.send( (this.dispatchPath + '../rest' + uri), [ 'delete', accept || 'json' ], false, callback, !!!callback,319 {'beforeSend' : function (xhr){320 //xhr.setRequestHeader('Authorization', "OAUTH Bearer " + DataLayer.me.token)}321 xhr.setRequestHeader('Authorization', "OAUTH Bearer " + (DataLayer.me ? DataLayer.me.token : DataLayer.dispatch("../prototype/me").token))}322 });323 324 243 }, 325 244 … … 646 565 }, 647 566 567 /* 568 * RemoveFilter = método para remoção de objetos por critério, funcionalidade não implementada no método remove 569 * TODO - A remoção é feira em tempo real, onde ainda o mesmo não suporta remoção apenas na camada do cliente 570 * caso necessária tao funcionalidade a mesma será implementada no futuro 571 **/ 572 removeFilter: function( concept, filter, oneSide ){ 573 //remover 574 oneSide = true; 575 576 if(filter) 577 filter = this.criteria(concept, filter); 578 else 579 return; 580 581 if ( $.type(filter) === "array" ) 582 filter = { filter: filter, criteria: false }; 583 584 var toRemove = {}; 585 586 toRemove[concept] = []; 587 588 toRemove[concept][toRemove[concept].length] = {filter: filter.filter, criteria: filter.criteria, method: 'delete'}; 589 590 this.dispatch( 'call', toRemove, false, true ); 591 592 this.broadcast( concept, oneSide ? 'server' : bothSides ? 'serverclient' : 'client', false ); 593 }, 594 648 595 report: function( concept, id, data ) 649 596 { … … 684 631 685 632 rollback: function( concept, ids ){ 686 687 var queue = this.prepareQ( 'current', concept, ids ); 688 689 ids = []; 690 691 for( var id in queue ) 692 { 693 this.put( concept, id, queue[id], false ); 694 695 ids[ ids.length ] = id; 633 if(!DataLayer.storage.cache[':diff']) 634 return false; 635 if(concept){ 636 if(ids){ 637 ids = !$.isArray(ids) ? [ids] : ids; 638 for (var i in ids) 639 delete DataLayer.storage.cache[':diff'][concept][ids[i]]; 640 }else 641 delete DataLayer.storage.cache[':diff'][concept]; 642 }else{ 643 644 var queue = this.prepareQ( 'current', concept, ids ); 645 646 ids = []; 647 648 for( var id in queue ) 649 { 650 this.put( concept, id, queue[id], false ); 651 652 ids[ ids.length ] = id; 653 } 654 655 for(var link in ids) 656 delete DataLayer.storage.cache[':diff'][ids[link]]; 657 696 658 } 697 698 this.clearQ( concept, ( ids.length ? ids : false ) );699 700 this.broadcast( concept, 'revert' );701 702 659 }, 703 660 … … 1443 1400 properties: criteria.properties || '' 1444 1401 1445 } );1402 }, false, true ); 1446 1403 }, 1447 1404 … … 2127 2084 2128 2085 if( !this.dispatchPath ) 2129 this.dispatchPath = " prototype/";2086 this.dispatchPath = "../../"; 2130 2087 2131 2088 if( !this.templatePath ) … … 2142 2099 2143 2100 this.start(); 2144 this.me = this.dispatch( "me" );2145 2101 } 2146 2102 } -
sandbox/2.4.1-3/prototype/config/oauthRefreshToken.ini
r6368 r6523 3 3 4 4 [PostgreSQL.mapping] 5 id = refresh_token 5 6 refresh_token = refresh_token 6 7 client_id = client_id -
sandbox/2.4.1-3/prototype/config/oauthToken.ini
r6367 r6523 3 3 4 4 [PostgreSQL.mapping] 5 id = oauth_token 5 6 oauth_token = oauth_token 6 7 client_id = client_id -
sandbox/2.4.1-3/prototype/library/tonic/lib/tonic.php
r6351 r6523 1 1 <?php 2 3 use prototype\api\Config as Config; 4 2 5 /* 3 6 * This file is part of the Tonic. … … 433 436 $arrayData = array(); 434 437 if($data){ 435 $arrayIndex = explode('&', $data);438 $arrayIndex = explode('&', urldecode($data)); 436 439 foreach($arrayIndex as $key => $value){ 437 440 list($i,$val) = explode ('=', $value); … … 655 658 $token = $oauth->getBearerToken(); 656 659 $oauth->verifyAccessToken($token); 660 661 if(!Config::me('uidNumber')) 662 throw new ResponseException('Session experired.', Response::UNAUTHORIZED); 657 663 } 658 664 catch (OAuth2ServerException $oauthError) … … 660 666 $oauthError->sendHttpResponse(); 661 667 } 668 662 669 } 663 670 -
sandbox/2.4.1-3/prototype/me.php
r6357 r6523 1 1 <?php 2 3 2 require_once (dirname(__FILE__).'/api/controller.php'); 4 3 use prototype\api\Config as Config; 5 4 6 5 $me = Controller::read(array('concept' => 'user', 'service' => 'OpenLDAP' , 'id' => Config::me('uidNumber'))); 6 7 if(isset($_POST['refreshToken'])){ 8 9 $ch = curl_init(); 10 11 $restConf = parse_ini_file( __DIR__ . '/config/REST.ini', true ); 12 13 $param = 'grant_type=refresh_token'; 14 $param .= '&client_id=' . $restConf['oauth']['client_id']; 15 $param .= '&client_secret=' . $restConf['oauth']['client_secret']; 16 $param .= '&refresh_token=' . $_SESSION['oauth']['refresh_token']; 17 18 // set URL and other appropriate options 19 curl_setopt($ch, CURLOPT_URL, $restConf['oauth']['url_token']); 20 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: */*')); 21 curl_setopt($ch, CURLOPT_POST, TRUE); 22 curl_setopt($ch, CURLOPT_POSTFIELDS, $param); 23 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); //configura para nao imprimir a saida na tela 24 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);//Passe um número long como parâmetro que contêm o limite de tempo, em segundos, que você permite as funções CURL levar. 25 26 // grab URL and pass it to the browser 27 $res = curl_exec($ch); 28 29 // close cURL resource, and free up system resources 30 curl_close($ch); 31 $a = json_decode($res); 32 33 if ( isset($a->access_token) ) { 34 $_SESSION['oauth']['access_token'] = $a->access_token; 35 $_SESSION['oauth']['expires_in'] = $a->expires_in; 36 $_SESSION['oauth']['token_type'] = $a->token_type; 37 $_SESSION['oauth']['scope'] = $a->scope; 38 $_SESSION['oauth']['refresh_token'] = $a->refresh_token; 39 $_SESSION['oauth']['client_secret'] = $restConf['oauth']['client_secret']; 40 } else { 41 echo json_encode(null); 42 return; 43 } 44 } 45 7 46 $me['token'] = $_SESSION['oauth']['access_token']; 8 9 47 echo json_encode( $me ); 10 48 -
sandbox/2.4.1-3/prototype/rest/catalog/DynamicContactResource.php
r6512 r6523 1 1 <?php 2 2 3 if ( !defined( 'ROOTPATH' ))4 define( 'ROOTPATH', dirname(__FILE__).'/..');5 6 require_once(ROOTPATH .'/rest/hypermedia/hypermedia.php');3 if (!defined('ROOTPATH')) 4 define('ROOTPATH', dirname(__FILE__) . '/..'); 5 6 require_once(ROOTPATH . '/rest/hypermedia/hypermedia.php'); 7 7 8 8 use prototype\api\Config as Config; … … 20 20 * @access public 21 21 * */ 22 function get($request, $id){ 23 24 $response = new Response($request); 25 $response->addHeader('Content-type', 'aplication/json'); 26 $response->code = Response::OK; 27 28 $h = new Hypermedia(); 29 $c = new Collection($request->resources, 'DynamicContactResource'); 30 31 try { 32 // $this->secured(); 33 34 $dynamicContacts = Controller::find( 35 array( 'concept' => 'dynamicContact' ), 36 false, 37 array( 'filter' => array( 'AND', array( '=', 'owner', Config::me("uidNumber") ) , array('=', 'id', $id) ) ) 38 ); 39 40 //Se nao foi encontrado contatos na consulta 41 if($dynamicContacts===false){ 42 $error = new Error(); 43 $error->setCode(Response::NOTFOUND); 44 $error->setTitle('Dynamic Contact not found'); 45 $error->setDescription('Dynamic Contact not found.'); 46 47 $c->setError($error); 48 $h->setCollection($c); 49 50 $response->code = Response::NOTFOUND; 51 $response->body = $h->getHypermedia($request->accept[10][0]); 52 return $response; 53 } 54 55 56 $t = new Template(); 57 $d = new Data(); 58 59 $d->setName('name'); 60 $d->setValue(null); 61 $d->setPrompt('Nome do Contato Recente'); 62 $d->setDataType('string'); 63 $d->setMaxLength(100); 64 $d->setMinLength(null); 65 $d->setRequired(true); 66 67 $t->addData($d); 68 69 $d = new Data(); 70 $d->setName('mail'); 71 $d->setValue(null); 72 $d->setPrompt('Email do Contato Recente'); 73 $d->setDataType('string'); 74 $d->setMaxLength(100); 75 $d->setMinLength(null); 76 $d->setRequired(true); 77 78 $t->addData($d); 79 80 $d = new Data(); 81 $d->setName('number_of_messages'); 82 $d->setValue(null); 83 $d->setPrompt('Quantidade de mensagens enviadas'); 84 $d->setDataType('integer'); 85 $d->setMaxLength(100); 86 $d->setMinLength(null); 87 $d->setRequired(false); 88 89 $t->addData($d); 90 91 $c->setTemplate($t); 92 93 $d = new Data(); 94 $d->setName('id'); 95 $d->setValue($dynamicContacts[0]['id']); 96 $d->setPrompt('Identificador do Contato Recente'); 97 $d->setDataType('integer'); 98 $d->setMaxLength(null); 99 $d->setMinLength(null); 100 $d->setRequired(true); 101 102 $c->addData($d); 103 104 $d = new Data(); 105 106 $d->setName('name'); 107 $d->setValue($dynamicContacts[0]['name']); 108 $d->setPrompt('Nome do Contato Recente'); 109 $d->setDataType('string'); 110 $d->setMaxLength('100'); 111 $d->setMinLength(null); 112 $d->setRequired(true); 113 114 $c->addData($d); 115 116 $d = new Data(); 117 $d->setName('mail'); 118 $d->setValue($dynamicContacts[0]['mail']); 119 $d->setPrompt('Email do Contato Recente'); 120 $d->setDataType('string'); 121 $d->setMaxLength('100'); 122 $d->setMinLength(null); 123 $d->setRequired(true); 124 125 $c->addData($d); 126 127 $d = new Data(); 128 $d->setName('number_of_messages'); 129 $d->setValue($dynamicContacts[0]['number_of_messages']); 130 $d->setPrompt('Quantidade de mensagens enviadas'); 131 $d->setDataType('integer'); 132 $d->setMaxLength('100'); 133 $d->setMinLength(null); 134 $d->setRequired(false); 135 136 $c->addData($d); 137 138 139 $l = new Link(); 140 141 $l->setHref(''); 142 $l->setRel('delete'); 143 $l->setAlt('Remover'); 144 $l->setPrompt('Remover'); 145 $l->setRender('link'); 146 147 $c->addLink($l); 148 149 $l = new Link(); 150 $l->setHref(''); 151 $l->setRel('put'); 152 $l->setAlt('Atualizar'); 153 $l->setPrompt('Atualizar'); 154 $l->setRender('link'); 155 156 $c->addLink($l); 22 function get($request, $id) { 23 24 $this->secured(); 25 26 $response = new Response($request); 27 $response->addHeader('Content-type', 'aplication/json'); 28 $response->code = Response::OK; 29 30 $h = new Hypermedia(); 31 $c = new Collection($request->resources, 'DynamicContactResource', $id); 32 33 try { 34 $dynamicContact = Controller::read( 35 array('concept' => 'dynamicContact'), false, array('filter' => array('AND', array('=', 'owner', Config::me("uidNumber")), array('=', 'id', $id))) 36 ); 37 38 //Se nao foi encontrado contatos na consulta 39 if (!$dynamicContact) { 40 $this->createException($request, $response, Response::NOTFOUND, 'Bad request', 'Dynamic Contact not found.'); 41 return $response; 42 } 43 44 //Normaliza dado 45 if(is_array($dynamicContact)) 46 $dynamicContact = $dynamicContact[0]; 47 48 49 $t = new Template(); 50 $d = new Data(); 51 52 $d->setName('name'); 53 $d->setValue(null); 54 $d->setPrompt('Nome do Contato Recente'); 55 $d->setDataType('string'); 56 $d->setMaxLength(100); 57 $d->setMinLength(null); 58 $d->setRequired(true); 59 60 $t->addData($d); 61 62 $d = new Data(); 63 $d->setName('mail'); 64 $d->setValue(null); 65 $d->setPrompt('Email do Contato Recente'); 66 $d->setDataType('string'); 67 $d->setMaxLength(100); 68 $d->setMinLength(null); 69 $d->setRequired(true); 70 71 $t->addData($d); 72 73 $d = new Data(); 74 $d->setName('number_of_messages'); 75 $d->setValue(null); 76 $d->setPrompt('Quantidade de mensagens enviadas'); 77 $d->setDataType('integer'); 78 $d->setMaxLength(100); 79 $d->setMinLength(null); 80 $d->setRequired(false); 81 82 $t->addData($d); 83 84 $c->setTemplate($t); 85 86 $d = new Data(); 87 $d->setName('id'); 88 $d->setValue($dynamicContact['id']); 89 $d->setPrompt('Identificador do Contato Recente'); 90 $d->setDataType('integer'); 91 $d->setMaxLength(null); 92 $d->setMinLength(null); 93 $d->setRequired(true); 94 95 $c->addData($d); 96 97 $d = new Data(); 98 99 $d->setName('name'); 100 $d->setValue($dynamicContact['name']); 101 $d->setPrompt('Nome do Contato Recente'); 102 $d->setDataType('string'); 103 $d->setMaxLength('100'); 104 $d->setMinLength(null); 105 $d->setRequired(true); 106 107 $c->addData($d); 108 109 $d = new Data(); 110 $d->setName('mail'); 111 $d->setValue($dynamicContact['mail']); 112 $d->setPrompt('Email do Contato Recente'); 113 $d->setDataType('string'); 114 $d->setMaxLength('100'); 115 $d->setMinLength(null); 116 $d->setRequired(true); 117 118 $c->addData($d); 119 120 $d = new Data(); 121 $d->setName('number_of_messages'); 122 $d->setValue($dynamicContact['number_of_messages']); 123 $d->setPrompt('Quantidade de mensagens enviadas'); 124 $d->setDataType('integer'); 125 $d->setMaxLength('100'); 126 $d->setMinLength(null); 127 $d->setRequired(false); 128 129 $c->addData($d); 130 131 132 $l = new Link(); 133 134 $l->setHref(''); 135 $l->setRel('delete'); 136 $l->setAlt('Remover'); 137 $l->setPrompt('Remover'); 138 $l->setRender('link'); 139 140 $c->addLink($l); 141 142 $l = new Link(); 143 $l->setHref(''); 144 $l->setRel('put'); 145 $l->setAlt('Atualizar'); 146 $l->setPrompt('Atualizar'); 147 $l->setRender('link'); 148 149 $c->addLink($l); 157 150 158 151 $h->setCollection($c); 159 160 161 }catch (Exception $ex){ 162 $error = new Error(); 163 $error->setCode(Response::INTERNALSERVERERROR); 164 $error->setTitle('Internal Server Error'); 165 $error->setDescription($ex); 166 167 $c->setError($error); 168 $h->setCollection($c); 169 170 $response->code = Response::INTERNALSERVERERROR; 171 $response->body = $h->getHypermedia($request->accept[10][0]); 172 return $response; 173 } 174 175 $response->body = $h->getHypermedia($request->accept[10][0]); 176 return $response; 177 } 152 } catch (Exception $ex) { 153 $this->createException($request, $response, Response::INTERNALSERVERERROR, 'Internal Server Error', 'Internal Server Error'); 154 return $response; 155 } 156 157 $response->body = $h->getHypermedia($request->accept[10][0]); 158 return $response; 159 } 178 160 179 161 /** … … 187 169 * @access public 188 170 * */ 189 function put($request, $id){ 190 $post = $request->dataDecoded; 191 192 if(count($post) == 0){ 193 $response = new Response($request); 194 $response->code = Response::INTERNALSERVERERROR; 195 return $response; 196 } 197 198 //recupera os atributos definidos no conceito 'user' 199 $map = Config::get('dynamicContact', 'PostgreSQL.mapping'); 200 201 $params = array(); 202 foreach($post as $key => $value){ 203 204 if( !isset( $map[ $key ] ) || $key == 'id' || $key == 'timestamp' || $key == 'number_of_messages' ){ 205 continue; 206 } 207 $params[$key] = $value; 208 } 209 210 if(count($params) == 0){ 211 $response = new Response($request); 212 $response->code = Response::INTERNALSERVERERROR; 213 return $response; 214 } 215 216 //completar os atributos 217 $params['owner'] = Config::me("uidNumber"); 218 $params['timestamp'] = time(); 219 $params['id'] = $id; 220 221 222 $response = new Response($request); 223 // $response->addHeader('Content-type', 'aplication/json'); 224 // $response->code = Response::NOCONTENT; 225 226 try{ 227 228 // $this->secured(); 229 230 $dynamicContact = Controller::read( 231 array( 'concept' => 'dynamicContact' ), 232 false, 233 array( 'filter' => array( 234 'AND', 235 array('=', 'owner', Config::me("uidNumber") ), 236 array('=', 'id', $id) ) ) 237 ); 238 171 function put($request, $id) { 172 173 $this->secured(); 174 175 $post = $request->dataDecoded; 176 $response = new Response($request); 177 178 if (count($post) == 0){ 179 $this->createException($request, $response, Response::BADREQUEST, 'Bad request', 'Invalid template data'); 180 return $response; 181 } 182 183 //recupera os atributos definidos no conceito 'user' 184 $map = Config::get('dynamicContact', 'PostgreSQL.mapping'); 185 186 $params = array(); 187 foreach ($post as $key => $value) { 188 189 if (!isset($map[$key]) || $key == 'id' || $key == 'timestamp' || $key == 'number_of_messages') { 190 continue; 191 } 192 $params[$key] = $value; 193 } 194 195 if (count($params) == 0) { 196 $this->createException($request, $response, Response::BADREQUEST, 'Bad request', 'Invalid template data'); 197 return $response; 198 } 199 200 //completar os atributos 201 $params['owner'] = Config::me("uidNumber"); 202 $params['timestamp'] = time(); 203 $params['id'] = $id; 204 205 $response->addHeader('Content-type', 'aplication/json'); 206 $response->code = Response::NOCONTENT; 207 208 try { 209 210 $dynamicContact = Controller::read( 211 array('concept' => 'dynamicContact'), false, array('filter' => array( 212 'AND', 213 array('=', 'owner', Config::me("uidNumber")), 214 array('=', 'id', $id))) 215 ); 216 217 218 //Se existe o recurso 219 if ($dynamicContact) { 220 //Normaliza o recurso 221 if(is_array($dynamicContact)) 222 $dynamicContact = $dynamicContact[0]; 239 223 240 //Se existe o recurso 241 if($dynamicContact){ 242 $params['number_of_messages'] = $dynamicContact[0]['number_of_messages'] + 1; 243 $dynamicContact = Controller::update( 244 array('concept' => 'dynamicContact', 245 'id'=>$id), 246 $params 247 ); 248 249 if(!$dynamicContact){ 250 throw new Exception(Controller::service('PostgreSQL')->error); 251 } 252 253 } 254 else{ 255 $params['number_of_messages'] = '1'; 256 $idDynamicContact = Controller::create( 257 array('concept' => 'dynamicContact'), 258 $params 259 ); 260 261 if(!$idDynamicContact){ 262 throw new Exception(Controller::service('PostgreSQL')->error); 263 } 264 265 } 266 267 }catch (Exception $ex){ 268 $response->code = Response::INTERNALSERVERERROR; 269 return $response; 270 } 271 272 return $response; 273 274 } 224 $params['number_of_messages'] = $dynamicContact['number_of_messages'] + 1; 225 226 $dynamicContact = Controller::update(array('concept' => 'dynamicContact', 'id' => $id), $params); 227 228 if (!$dynamicContact) { 229 $this->createException($request, $response, Response::INTERNALSERVERERROR, 'Internal Server Error', Controller::service('PostgreSQL')->error); 230 return $response; 231 } 232 } else { 233 /* 234 $idDynamicContact = Controller::create( array('concept' => 'dynamicContact'), $params); 235 */ 236 //if (!$idDynamicContact) { 237 $this->createException($request, $response, Response::NOTFOUND, 'Bad request', 'Invalid data'); 238 return $response; 239 //} 240 } 241 } catch (Exception $ex) { 242 $this->createException($request, $response, Response::INTERNALSERVERERROR, 'Internal Server Error', 'Internal Server Error'); 243 return $response; 244 } 245 $response->body = json_encode(null); 246 return $response; 247 } 275 248 276 249 /** … … 283 256 * @access public 284 257 * */ 285 function delete($request, $id){ 258 function delete($request, $id) { 259 260 $this->secured(); 286 261 287 262 $response = new Response($request); 288 //$response->addHeader('Content-type', 'aplication/json');263 $response->addHeader('Content-type', 'aplication/json'); 289 264 $response->code = Response::NOCONTENT; 290 265 291 try{ 292 //Verifica se o recurso existe 293 $responseGET = $this->get($request, $id); 294 $code = $responseGET->code; 295 296 //Se existe o recurso 297 if($code == Response::OK){ 298 299 // $this->secured(); 300 301 $delete = Controller::delete(array('concept' => 'dynamicContact'), false, array('filter' => array('=', 'id', $id))); 302 303 if(!$delete){ 304 throw new Exception(Controller::service('PostgreSQL')->error); 305 } 266 try { 267 //Verifica se o recurso existe 268 $dinamicContact = Controller::read(array('concept' => 'dynamicContact', 'id' => $id)); 269 270 //Se existe o recurso 271 if ($dinamicContact) { 272 273 $delete = Controller::delete(array('concept' => 'dynamicContact', 'id' => $id)); 274 275 if (!$delete) { 276 $this->createException($request, $response, Response::INTERNALSERVERERROR, 'Internal Server Error', Controller::service('PostgreSQL')->error); 277 return $response; 306 278 } 307 else{ 308 $response->code = Response::NOTFOUND; 309 } 310 311 }catch (Exception $ex){ 312 $response->code = Response::INTERNALSERVERERROR; 313 return $response; 314 } 315 316 $response->body = json_encode(array('ABC'=>'123')); 317 318 return $response; 319 } 279 } else { 280 $this->createException($request, $response, Response::NOTFOUND, 'Bad request', 'Invalid data'); 281 return $response; 282 } 283 } catch (Exception $ex) { 284 $this->createException($request, $response, Response::INTERNALSERVERERROR, 'Internal Server Error', 'Internal Server Error'); 285 return $response; 286 } 287 288 $response->body = json_encode(null); 289 return $response; 290 } 291 292 private function createException($request, &$response, $code, $title, $description) { 293 $response->code = $code; 294 295 $h = new Hypermedia(); 296 $c = new Collection($request->resources, 'DynamicContactResource'); 297 $e = new Error(); 298 299 $e->setCode($code); 300 $e->setTitle($title); 301 $e->setDescription($description); 302 303 $c->setError($e); 304 $h->setCollection($c); 305 306 $response->body = $h->getHypermedia($request->accept[10][0]); 307 } 320 308 321 309 } 310 322 311 ?> -
sandbox/2.4.1-3/prototype/rest/catalog/DynamicContactsResource.php
r6512 r6523 1 1 <?php 2 2 3 if ( !defined( 'ROOTPATH' ))4 define( 'ROOTPATH', dirname(__FILE__).'/..');5 6 require_once(ROOTPATH .'/rest/hypermedia/hypermedia.php');3 if (!defined('ROOTPATH')) 4 define('ROOTPATH', dirname(__FILE__) . '/..'); 5 6 require_once(ROOTPATH . '/rest/hypermedia/hypermedia.php'); 7 7 8 8 use prototype\api\Config as Config; … … 22 22 function get($request) { 23 23 24 $this->secured(); 25 24 26 $response = new Response($request); 25 27 $response->addHeader('Content-type', 'aplication/json'); … … 30 32 31 33 try { 32 // $this->secured(); 33 34 $dynamicContacts = Controller::find( 35 array( 'concept' => 'dynamicContact' ), 36 false, 37 array( 'filter' => array( '=', 'owner', Config::me("uidNumber") ), 38 'order' => array('number_of_messages','name','mail'), 39 'orderDesc' => array(true, false, false) ) 34 35 $dynamicContacts = Controller::find( 36 array('concept' => 'dynamicContact'), false, array('filter' => array('=', 'owner', Config::me("uidNumber")), 37 'order' => array('number_of_messages', 'name', 'mail'), 38 'orderDesc' => array(true, false, false)) 40 39 ); 41 40 42 41 //Se nao foi encontrado contatos na consulta 43 if($dynamicContacts===false){ 44 $error = new Error(); 45 $error->setCode(Response::NOTFOUND); 46 $error->setTitle('Dynamic Contacts not found'); 47 $error->setDescription('Dynamic Contacts not found.'); 48 49 $c->setError($error); 50 $h->setCollection($c); 51 52 $response->code = Response::NOTFOUND; 53 $response->body = $h->getHypermedia($request->accept[10][0]); 42 if (!$dynamicContacts) { 43 $this->createException($request, $response, Response::NOTFOUND, 'Bad request', 'Dynamic Contact not found.'); 54 44 return $response; 55 45 } 56 46 57 foreach($dynamicContacts as $value){58 $d = new Data(); 59 47 foreach ($dynamicContacts as $value) { 48 $d = new Data(); 49 $i = new Item($request->resources, 'DynamicContactsResource', $value['id']); 60 50 61 51 $d->setName('name'); 62 $d->setValue($value['name']); 63 $d->setPrompt('Nome do Contato Recente'); 64 $d->setDataType('string'); 65 $d->setMaxLength('100'); 66 $d->setMinLength(null); 67 $d->setRequired(true); 68 69 $i->addData($d); 70 71 $d = new Data(); 72 $d->setName('mail'); 73 $d->setValue($value['mail']); 74 $d->setPrompt('Email do Contato Recente'); 75 $d->setDataType('string'); 76 $d->setMaxLength('100'); 77 $d->setMinLength(null); 78 $d->setRequired(true); 79 80 $i->addData($d); 81 82 $d = new Data(); 83 $d->setName('number_of_messages'); 84 $d->setValue($value['number_of_messages']); 85 $d->setPrompt('Quantidade de mensagens enviadas'); 86 $d->setDataType('integer'); 87 $d->setMaxLength('100'); 88 $d->setMinLength(null); 89 $d->setRequired(false); 90 91 $i->addData($d); 92 93 $d = new Data(); 94 $d->setName('id'); 95 $d->setValue($value['id']); 96 $d->setPrompt('Id do contato dinamico'); 97 $d->setDataType('integer'); 98 $d->setMaxLength('100'); 99 $d->setMinLength(null); 100 $d->setRequired(false); 101 102 $i->addData($d); 103 104 $l = new Link(); 105 106 $l->setHref(''); 107 $l->setRel('delete'); 108 $l->setAlt('Remover'); 109 $l->setPrompt('Remover'); 110 $l->setRender('link'); 111 112 $i->addLink($l); 113 114 $l = new Link(); 115 $l->setHref(''); 116 $l->setRel('put'); 117 $l->setAlt('Atualizar'); 118 $l->setPrompt('Atualizar'); 119 $l->setRender('link'); 120 121 $i->addLink($l); 122 123 $l = new Link(); 124 $l->setHref('/dynamiccontact/'.$value['id']); 125 $l->setRel('get'); 126 $l->setAlt('Buscar'); 127 $l->setPrompt('Buscar'); 128 $l->setRender('link'); 129 130 $i->addLink($l); 131 $c->addItem($i); 132 } 133 134 $t = new Template(); 135 $d = new Data(); 136 137 $d->setName('name'); 138 $d->setValue(null); 139 $d->setPrompt('Nome do Contato Recente'); 140 $d->setDataType('string'); 141 $d->setMaxLength(100); 142 $d->setMinLength(null); 143 $d->setRequired(true); 144 145 $t->addData($d); 146 147 $d = new Data(); 148 $d->setName('mail'); 149 $d->setValue(null); 150 $d->setPrompt('Email do Contato Recente'); 151 $d->setDataType('string'); 152 $d->setMaxLength(100); 153 $d->setMinLength(null); 154 $d->setRequired(true); 155 156 $t->addData($d); 157 158 $d = new Data(); 159 $d->setName('number_of_messages'); 160 $d->setValue(null); 161 $d->setPrompt('Quantidade de mensagens enviadas'); 162 $d->setDataType('integer'); 163 $d->setMaxLength(100); 164 $d->setMinLength(null); 165 $d->setRequired(false); 166 167 $t->addData($d); 168 169 $c->setTemplate($t); 170 171 $h->setCollection($c); 172 173 }catch (Exception $ex){ 174 $error = new Error(); 175 $error->setCode(Response::INTERNALSERVERERROR); 176 $error->setTitle('Internal Server Error'); 177 $error->setDescription($ex); 178 179 $c->setError($error); 180 $h->setCollection($c); 181 182 $response->code = Response::INTERNALSERVERERROR; 183 $response->body = $h->getHypermedia($request->accept[10][0]); 184 return $response; 52 $d->setValue($value['name']); 53 $d->setPrompt('Nome do Contato Recente'); 54 $d->setDataType('string'); 55 $d->setMaxLength('100'); 56 $d->setMinLength(null); 57 $d->setRequired(true); 58 59 $i->addData($d); 60 61 $d = new Data(); 62 $d->setName('mail'); 63 $d->setValue($value['mail']); 64 $d->setPrompt('Email do Contato Recente'); 65 $d->setDataType('string'); 66 $d->setMaxLength('100'); 67 $d->setMinLength(null); 68 $d->setRequired(true); 69 70 $i->addData($d); 71 72 $d = new Data(); 73 $d->setName('number_of_messages'); 74 $d->setValue($value['number_of_messages']); 75 $d->setPrompt('Quantidade de mensagens enviadas'); 76 $d->setDataType('integer'); 77 $d->setMaxLength('100'); 78 $d->setMinLength(null); 79 $d->setRequired(false); 80 81 $i->addData($d); 82 83 $d = new Data(); 84 $d->setName('id'); 85 $d->setValue($value['id']); 86 $d->setPrompt('Id do contato dinamico'); 87 $d->setDataType('integer'); 88 $d->setMaxLength('100'); 89 $d->setMinLength(null); 90 $d->setRequired(false); 91 92 $i->addData($d); 93 94 $l = new Link(); 95 96 $l->setHref(''); 97 $l->setRel('delete'); 98 $l->setAlt('Remover'); 99 $l->setPrompt('Remover'); 100 $l->setRender('link'); 101 102 $i->addLink($l); 103 104 $l = new Link(); 105 $l->setHref(''); 106 $l->setRel('put'); 107 $l->setAlt('Atualizar'); 108 $l->setPrompt('Atualizar'); 109 $l->setRender('link'); 110 111 $i->addLink($l); 112 113 $l = new Link(); 114 $l->setHref('/dynamiccontact/' . $value['id']); 115 $l->setRel('get'); 116 $l->setAlt('Buscar'); 117 $l->setPrompt('Buscar'); 118 $l->setRender('link'); 119 120 $i->addLink($l); 121 $c->addItem($i); 122 } 123 124 $t = new Template(); 125 $d = new Data(); 126 127 $d->setName('name'); 128 $d->setValue(null); 129 $d->setPrompt('Nome do Contato Recente'); 130 $d->setDataType('string'); 131 $d->setMaxLength(100); 132 $d->setMinLength(null); 133 $d->setRequired(false); 134 135 $t->addData($d); 136 137 $d = new Data(); 138 $d->setName('mail'); 139 $d->setValue(null); 140 $d->setPrompt('Email do Contato Recente'); 141 $d->setDataType('string'); 142 $d->setMaxLength(100); 143 $d->setMinLength(null); 144 $d->setRequired(true); 145 146 $t->addData($d); 147 148 $d = new Data(); 149 $d->setName('number_of_messages'); 150 $d->setValue(null); 151 $d->setPrompt('Quantidade de mensagens enviadas'); 152 $d->setDataType('integer'); 153 $d->setMaxLength(100); 154 $d->setMinLength(null); 155 $d->setRequired(false); 156 157 $t->addData($d); 158 159 $c->setTemplate($t); 160 161 $h->setCollection($c); 162 } catch (Exception $ex) { 163 $this->createException($request, $response, Response::INTERNALSERVERERROR, 'Internal Server Error', $ex); 164 return $response; 185 165 } 186 166 … … 199 179 * @access public 200 180 * */ 201 function post($request){ 202 203 if(count($_POST) == 0){ 204 $response = new Response($request); 205 $response->code = Response::INTERNALSERVERERROR; 206 return $response; 181 function post($request) { 182 183 $this->secured(); 184 185 if (count($_POST) == 0) { 186 $response = new Response($request); 187 $response->code = Response::INTERNALSERVERERROR; 188 return $response; 207 189 } 208 190 … … 211 193 212 194 $params = array(); 213 foreach ($_POST as $key => $value){214 215 if( !isset( $map[ $key ] ) || $key == 'id' || $key == 'timestamp' || $key == 'number_of_messages' ){216 217 218 219 } 220 221 if (count($params) == 0){222 223 224 225 } 226 227 228 229 //$response->addHeader('Content-type', 'aplication/json');230 231 232 195 foreach ($_POST as $key => $value) { 196 197 if (!isset($map[$key]) || $key == 'id' || $key == 'timestamp' || $key == 'number_of_messages') { 198 continue; 199 } 200 $params[$key] = $value; 201 } 202 203 if (count($params) == 0) { 204 $response = new Response($request); 205 $response->code = Response::INTERNALSERVERERROR; 206 return $response; 207 } 208 209 210 $response = new Response($request); 211 $response->addHeader('Content-type', 'aplication/json'); 212 $response->code = Response::CREATED; 213 214 233 215 //completar os atributos 234 $params['owner'] = Config::me("uidNumber"); 235 $params['number_of_messages'] = '1'; 236 $params['timestamp'] = time(); 237 238 239 try{ 240 241 // $this->secured(); 242 243 $idDynamicContact = Controller::create( 244 array('concept' => 'dynamicContact'), 245 $params 246 ); 247 248 if(!$idDynamicContact){ 249 throw new Exception(Controller::service('PostgreSQL')->error); 250 } 251 252 }catch (Exception $ex){ 253 $response->code = Response::INTERNALSERVERERROR; 254 return $response; 255 } 256 257 $response->body = json_encode(array('abc'=>'123')); 258 259 return $response; 260 } 261 216 $params['owner'] = Config::me("uidNumber"); 217 $params['number_of_messages'] = '1'; 218 $params['timestamp'] = time(); 219 220 221 try { 222 $idDynamicContact = Controller::create( 223 array('concept' => 'dynamicContact'), $params 224 ); 225 226 if (!$idDynamicContact) { 227 throw new Exception(Controller::service('PostgreSQL')->error); 228 } 229 } catch (Exception $ex) { 230 $response->code = Response::INTERNALSERVERERROR; 231 return $response; 232 } 233 234 $response->body = json_encode(null); 235 236 return $response; 237 } 238 239 private function createException($request, &$response, $code, $title, $description) { 240 $response->code = $code; 241 242 $h = new Hypermedia(); 243 $c = new Collection($request->resources, 'DynamicContactResource'); 244 $e = new Error(); 245 246 $e->setCode($code); 247 $e->setTitle($title); 248 $e->setDescription($description); 249 250 $c->setError($e); 251 $h->setCollection($c); 252 253 $response->body = $h->getHypermedia($request->accept[10][0]); 254 } 262 255 263 256 } 257 264 258 ?> -
sandbox/2.4.1-3/prototype/rest/hypermedia/collection.php
r6437 r6523 29 29 public $type; 30 30 public $data; 31 31 public $links; 32 32 33 function __construct($config, $className ) {33 function __construct($config, $className, $id = null) { 34 34 foreach ($config as $key => $value) { 35 35 if ($value['class'] == $className) { 36 $uri = $key;36 $uri = ($id ? (preg_replace('/\/[:][a-zA-Z-0-9]+/', '', $key).'/'.$id ) : $key); 37 37 break; 38 38 } -
sandbox/2.4.1-3/prototype/rest/hypermedia/hypermedia.php
r6395 r6523 30 30 } 31 31 } 32 33 // functions adopted from http://www.sean-barton.co.uk/2009/03/turning-an-array-or-object-into-xml-using-php/34 32 35 33 function generateValidXmlFromObj(stdClass $obj, $node_block = 'nodes', $node_name = 'node') {
Note: See TracChangeset
for help on using the changeset viewer.