annotate sites/all/modules/restws/restws.api.php @ 9:830c812b520f

added smtp module
author root <root@paio.local>
date Mon, 28 Oct 2013 15:34:27 +0000
parents ce11bbd8f642
children
rev   line source
danielebarchiesi@4 1 <?php
danielebarchiesi@4 2
danielebarchiesi@4 3 /**
danielebarchiesi@4 4 * @file
danielebarchiesi@4 5 * This file contains no working PHP code; it exists to provide additional
danielebarchiesi@4 6 * documentation for doxygen as well as to document hooks in the standard
danielebarchiesi@4 7 * Drupal manner.
danielebarchiesi@4 8 */
danielebarchiesi@4 9
danielebarchiesi@4 10
danielebarchiesi@4 11 /**
danielebarchiesi@4 12 * @defgroup restws RestWS module integrations.
danielebarchiesi@4 13 *
danielebarchiesi@4 14 * Module integrations with the restws module.
danielebarchiesi@4 15 */
danielebarchiesi@4 16
danielebarchiesi@4 17 /**
danielebarchiesi@4 18 * @defgroup restws_hooks RestWS' hooks
danielebarchiesi@4 19 * @{
danielebarchiesi@4 20 * Hooks that can be implemented by other modules in order to extend restws.
danielebarchiesi@4 21 */
danielebarchiesi@4 22
danielebarchiesi@4 23 /**
danielebarchiesi@4 24 * Define restws compatible resources.
danielebarchiesi@4 25 *
danielebarchiesi@4 26 * This hook is required in order to add new restws resources.
danielebarchiesi@4 27 *
danielebarchiesi@4 28 * @return array
danielebarchiesi@4 29 * An array of information about the module's provided resources.
danielebarchiesi@4 30 * The array contains a sub-array for each resource, with the resource name as
danielebarchiesi@4 31 * the key. Resource names may only contain lowercase alpha-numeric characters
danielebarchiesi@4 32 * and underscores and should be prefixed with the providing module name.
danielebarchiesi@4 33 * Possible attributes for each sub-array are:
danielebarchiesi@4 34 * - label: The label of the resource. Start capitalized.
danielebarchiesi@4 35 * - class: The name of the controller class for the resource. The class has
danielebarchiesi@4 36 * to implement the RestWSResourceControllerInterface. Required.
danielebarchiesi@4 37 * - menu_path: A relative path were the resource callback should lie. By
danielebarchiesi@4 38 * default the resource name will be used as menu path. Optional.
danielebarchiesi@4 39 *
danielebarchiesi@4 40 * @see MyModuleBookResourceController
danielebarchiesi@4 41 */
danielebarchiesi@4 42 function hook_restws_resource_info() {
danielebarchiesi@4 43 return array(
danielebarchiesi@4 44 'mymodule_book' => array(
danielebarchiesi@4 45 'label' => t('Book'),
danielebarchiesi@4 46 'class' => 'MyModuleBookResourceController',
danielebarchiesi@4 47 'menu_path' => 'api/mybook',
danielebarchiesi@4 48 ),
danielebarchiesi@4 49 'mymodule_status' => array(
danielebarchiesi@4 50 'label' => t('Status'),
danielebarchiesi@4 51 'class' => 'MyModuleStatusResourceController',
danielebarchiesi@4 52 ),
danielebarchiesi@4 53 );
danielebarchiesi@4 54 }
danielebarchiesi@4 55
danielebarchiesi@4 56 /**
danielebarchiesi@4 57 * Alter available resource information.
danielebarchiesi@4 58 *
danielebarchiesi@4 59 * @param array $resource_info
danielebarchiesi@4 60 * Resource information as defined in hook_restws_resource_info(). You can
danielebarchiesi@4 61 * move the path of a resouce by setting menu_info. In this example you'll
danielebarchiesi@4 62 * have to retrieve nodes from /mypath.json or /mypath/1.json.
danielebarchiesi@4 63 *
danielebarchiesi@4 64 * @see hook_restws_resource_info()
danielebarchiesi@4 65 */
danielebarchiesi@4 66 function hook_restws_resource_info_alter(&$resource_info) {
danielebarchiesi@4 67 $resource_info['node']['class'] = 'MySpecialNodeResourceController';
danielebarchiesi@4 68 $resource_info['node']['menu_path'] = 'mypath';
danielebarchiesi@4 69 }
danielebarchiesi@4 70
danielebarchiesi@4 71 /**
danielebarchiesi@4 72 * Define restws compatible formats.
danielebarchiesi@4 73 *
danielebarchiesi@4 74 * This hook is required in order to add new restws formats.
danielebarchiesi@4 75 *
danielebarchiesi@4 76 * @return array
danielebarchiesi@4 77 * An array of information about the module's provided formats.
danielebarchiesi@4 78 * The array contains a sub-array for each format, with the format name as
danielebarchiesi@4 79 * the key. Format names may only contain lowercase alpha-numeric characters
danielebarchiesi@4 80 * and underscores.
danielebarchiesi@4 81 * Possible attributes for each sub-array are:
danielebarchiesi@4 82 * - label: The label of the format. Start capitalized.
danielebarchiesi@4 83 * - class: The name of the class for the format. The class has to implement
danielebarchiesi@4 84 * the RestWSFormatInterface. Required.
danielebarchiesi@4 85 * - mime type: The official internet media type (MIME type) of the format.
danielebarchiesi@4 86 * Required.
danielebarchiesi@4 87 */
danielebarchiesi@4 88 function hook_restws_format_info() {
danielebarchiesi@4 89 return array(
danielebarchiesi@4 90 'json' => array(
danielebarchiesi@4 91 'label' => t('JSON'),
danielebarchiesi@4 92 'class' => 'RestWSFormatJSON',
danielebarchiesi@4 93 'mime type' => 'application/json',
danielebarchiesi@4 94 ),
danielebarchiesi@4 95 'xml' => array(
danielebarchiesi@4 96 'label' => t('XML'),
danielebarchiesi@4 97 'class' => 'RestWSFormatXML',
danielebarchiesi@4 98 'mime type' => 'application/xml',
danielebarchiesi@4 99 ),
danielebarchiesi@4 100 );
danielebarchiesi@4 101 }
danielebarchiesi@4 102
danielebarchiesi@4 103 /**
danielebarchiesi@4 104 * Alter available format information.
danielebarchiesi@4 105 *
danielebarchiesi@4 106 * @param array $format_info
danielebarchiesi@4 107 * Format information as defined in hook_restws_format_info()
danielebarchiesi@4 108 *
danielebarchiesi@4 109 * @see hook_restws_format_info()
danielebarchiesi@4 110 */
danielebarchiesi@4 111 function hook_restws_format_info_alter(&$format_info) {
danielebarchiesi@4 112 $format_info['json']['class'] = 'MyJsonFormatHandler';
danielebarchiesi@4 113 }
danielebarchiesi@4 114
danielebarchiesi@4 115 /**
danielebarchiesi@4 116 * Alter the incoming request array.
danielebarchiesi@4 117 *
danielebarchiesi@4 118 * @param array $request
danielebarchiesi@4 119 * A request array that contains the following items:
danielebarchiesi@4 120 * - op: operation string, one of create, read, update or delete.
danielebarchiesi@4 121 * - format: object implementing RestWSFormatInterface.
danielebarchiesi@4 122 * - resource: object implementing RestWSResourceControllerInterface.
danielebarchiesi@4 123 * - id: resource identifier or NULL for the create operation.
danielebarchiesi@4 124 * - payload: array containing data attached to this request, if any.
danielebarchiesi@4 125 */
danielebarchiesi@4 126 function hook_restws_request_alter(array &$request) {
danielebarchiesi@4 127 if ($request['resource']->resource() == 'node') {
danielebarchiesi@4 128 $request['format'] = restws_format('json');
danielebarchiesi@4 129 }
danielebarchiesi@4 130 }
danielebarchiesi@4 131
danielebarchiesi@4 132 /**
danielebarchiesi@4 133 * Alter the outgoing response.
danielebarchiesi@4 134 *
danielebarchiesi@4 135 * @param mixed $response
danielebarchiesi@4 136 * The response data being returned by the REST service (not yet serialized).
danielebarchiesi@4 137 *
danielebarchiesi@4 138 * @param string $function
danielebarchiesi@4 139 * The function being called on the REST service.
danielebarchiesi@4 140 *
danielebarchiesi@4 141 * @param string $format
danielebarchiesi@4 142 * The name of the format serializing the response.
danielebarchiesi@4 143 */
danielebarchiesi@4 144 function hook_restws_response_alter(&$response, $function, $formatName) {
danielebarchiesi@4 145 if ($function == 'viewResource' && $formatName == 'json') {
danielebarchiesi@4 146 $response['site_name'] = variable_get('site_name', '');
danielebarchiesi@4 147 }
danielebarchiesi@4 148 }
danielebarchiesi@4 149
danielebarchiesi@4 150 /**
danielebarchiesi@4 151 * @}
danielebarchiesi@4 152 */
danielebarchiesi@4 153
danielebarchiesi@4 154 /**
danielebarchiesi@4 155 * Example controller class for the mymodule_book resource.
danielebarchiesi@4 156 */
danielebarchiesi@4 157 class MyModuleBookResourceController implements RestWSResourceControllerInterface {
danielebarchiesi@4 158
danielebarchiesi@4 159 /**
danielebarchiesi@4 160 * @see hook_entity_property_info()
danielebarchiesi@4 161 * @see RestWSResourceControllerInterface::propertyInfo()
danielebarchiesi@4 162 */
danielebarchiesi@4 163 public function propertyInfo() {
danielebarchiesi@4 164 return array(
danielebarchiesi@4 165 'properties' => array(
danielebarchiesi@4 166 'title' => array(
danielebarchiesi@4 167 'type' => 'text',
danielebarchiesi@4 168 'label' => t('Book title'),
danielebarchiesi@4 169 'setter callback' => 'entity_property_verbatim_set',
danielebarchiesi@4 170 ),
danielebarchiesi@4 171 'author' => array(
danielebarchiesi@4 172 'type' => 'text',
danielebarchiesi@4 173 'label' => t('Author'),
danielebarchiesi@4 174 'setter callback' => 'entity_property_verbatim_set',
danielebarchiesi@4 175 ),
danielebarchiesi@4 176 'pages' => array(
danielebarchiesi@4 177 'type' => 'integer',
danielebarchiesi@4 178 'label' => t('Number of pages'),
danielebarchiesi@4 179 'setter callback' => 'entity_property_verbatim_set',
danielebarchiesi@4 180 ),
danielebarchiesi@4 181 'price' => array(
danielebarchiesi@4 182 'type' => 'decimal',
danielebarchiesi@4 183 'label' => t('Price'),
danielebarchiesi@4 184 'setter callback' => 'entity_property_verbatim_set',
danielebarchiesi@4 185 ),
danielebarchiesi@4 186 ),
danielebarchiesi@4 187 );
danielebarchiesi@4 188 }
danielebarchiesi@4 189
danielebarchiesi@4 190 /**
danielebarchiesi@4 191 * @see RestWSResourceControllerInterface::wrapper()
danielebarchiesi@4 192 */
danielebarchiesi@4 193 public function wrapper($id) {
danielebarchiesi@4 194 $book = mymodule_book_load($id);
danielebarchiesi@4 195 $info = $this->propertyInfo();
danielebarchiesi@4 196 return entity_metadata_wrapper('mymodule_book', $book, array('property info' => $info['properties']));
danielebarchiesi@4 197 }
danielebarchiesi@4 198
danielebarchiesi@4 199 /**
danielebarchiesi@4 200 * @see RestWSResourceControllerInterface::create()
danielebarchiesi@4 201 */
danielebarchiesi@4 202 public function create(array $values) {
danielebarchiesi@4 203 try {
danielebarchiesi@4 204 $book = mymodule_book_save($values);
danielebarchiesi@4 205 return $book->id;
danielebarchiesi@4 206 }
danielebarchiesi@4 207 catch (Exception $e) {
danielebarchiesi@4 208 throw new RestWSException('Creation error', 406);
danielebarchiesi@4 209 }
danielebarchiesi@4 210 }
danielebarchiesi@4 211
danielebarchiesi@4 212 /**
danielebarchiesi@4 213 * @see RestWSResourceControllerInterface::read()
danielebarchiesi@4 214 */
danielebarchiesi@4 215 public function read($id) {
danielebarchiesi@4 216 return mymodule_book_load($id);
danielebarchiesi@4 217 }
danielebarchiesi@4 218
danielebarchiesi@4 219 /**
danielebarchiesi@4 220 * @see RestWSResourceControllerInterface::update()
danielebarchiesi@4 221 */
danielebarchiesi@4 222 public function update($id, array $values) {
danielebarchiesi@4 223 throw new RestWSException('Not implemented', 501);
danielebarchiesi@4 224 }
danielebarchiesi@4 225
danielebarchiesi@4 226 /**
danielebarchiesi@4 227 * @see RestWSResourceControllerInterface::delete()
danielebarchiesi@4 228 */
danielebarchiesi@4 229 public function delete($id) {
danielebarchiesi@4 230 try {
danielebarchiesi@4 231 mymodule_book_delete($id);
danielebarchiesi@4 232 }
danielebarchiesi@4 233 catch (Exception $e) {
danielebarchiesi@4 234 throw new RestWSException('Book not found', 404);
danielebarchiesi@4 235 }
danielebarchiesi@4 236 }
danielebarchiesi@4 237
danielebarchiesi@4 238 /**
danielebarchiesi@4 239 * @see RestWSResourceControllerInterface::access()
danielebarchiesi@4 240 */
danielebarchiesi@4 241 public function access($op, $id) {
danielebarchiesi@4 242 return mymodule_book_access($op, $id);
danielebarchiesi@4 243 }
danielebarchiesi@4 244
danielebarchiesi@4 245 /**
danielebarchiesi@4 246 * @see RestWSResourceControllerInterface::resource()
danielebarchiesi@4 247 */
danielebarchiesi@4 248 public function resource() {
danielebarchiesi@4 249 return 'mymodule_book';
danielebarchiesi@4 250 }
danielebarchiesi@4 251 }