Ignore:
Timestamp:
02/24/12 10:03:02 (13 years ago)
Author:
jkraaijeveld
Message:

Merge from rest-dojo-ui 272-282

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Dev/branches/jos-branch/server/api.php

    r263 r285  
    4646
    4747        $user = null;
    48         $data = null;
    4948        if (!empty($request->data)) {
    50             $data = json_decode($request->data, true);
    51         }
    52         if (!empty($data)) {
    53             $user = Auth::login($data['username'], sha1($data['password']));
     49            $user = Auth::login($request->data['email'], $request->data['password']);
    5450            if (!$user) {
    55                 throw new ResponseException("Incorrect username and password", Response::UNAUTHORIZED);
     51                throw new ResponseException("Incorrect email and password", Response::UNAUTHORIZED);
    5652            }
    5753            set_session_cookie($response, $user);
     
    5955            $user = restore_session($response);
    6056        }
    61         $response->body = json_encode($user);
     57        $response->body = $user;
     58        return $response;
     59    }
     60
     61}
     62
     63/**
     64 *  @uri /register
     65 */
     66class RegisterResource extends Resource {
     67
     68    function post($request) {
     69        $response = new Response($request);
     70
     71        $user = null;
     72        if (!empty($request->data)) {
     73            $user = Auth::register($request->data['email'], $request->data['password']);
     74            set_session_cookie($response, $user);
     75        } else {
     76            throw new ResponseException("No email and password provided.",Response::BADREQUEST);
     77        }
     78        $response->body = $user;
    6279        return $response;
    6380    }
     
    83100        $type = $this->getType($request);
    84101        $objects = $type::get(array());
    85         //$objects = array_map(function($val) { return array('uid' => $val->uid); }, $objects);
    86 
    87         $response->body = json_encode($objects);
     102
     103        $response->body = $objects;
    88104        return $response;
    89105    }
     
    94110
    95111        $type = $this->getType($request);
    96         $data = json_decode($request->data);
    97112        $onlyAdd = $request->ifNoneMatch('*');
    98113        $onlyUpdate = $request->ifMatch('*');
    99114
    100115        $object = FALSE;
    101         if (isset($data->uid)) {
    102             $objects = $type::get(array('uid' => $data->uid));
     116        if (isset($request->data->uid)) {
     117            $objects = $type::get(array('uid' => $request->data->uid));
    103118            if (!empty($objects)) {
    104119                $object = $objects[0];
     
    116131            $response->code = Response::OK;
    117132        }
    118         foreach ($data as $key => $val) {
     133        foreach ($request->data as $key => $val) {
    119134            $object->$key = $val;
    120135        }
    121         $object->save();
    122 
    123         $response->body = json_encode($object);
    124         return $response;
    125     }
    126 
     136        if (!$object->save()) {
     137            throw new ResponseException("Save failed", Response::INTERNALSERVERERROR);
     138        }
     139
     140        $response->body = $object;
     141        return $response;
     142    }
     143
     144    function put($request) {
     145        return $this->post($request);
     146    }
     147   
    127148}
    128149
     
    150171        }
    151172
    152         $response->body = json_encode($objects[0]);
    153         return $response;
    154     }
    155 
    156     function put($request) {
     173        $response->body = $objects[0];
     174        return $response;
     175    }
     176
     177    function post($request) {
    157178        $response = new Response($request);
    158179        restore_session($response);
    159180
    160181        $info = $this->getTypeAndUid($request);
    161         $data = json_decode($request->data);
    162182        $onlyAdd = $request->ifNoneMatch('*');
    163183        $onlyUpdate = $request->ifMatch('*');
     
    179199            $response->code = Response::OK;
    180200        }
    181         foreach ($data as $key => $val) {
     201        foreach ($request->data as $key => $val) {
    182202            $object->$key = $val;
    183203        }
    184         $object->save();
    185 
    186         $response->body = json_encode($object);
    187         return $response;
     204        if (!$object->save()) {
     205            throw new ResponseException("Save failed", Response::INTERNALSERVERERROR);
     206        }
     207
     208        $response->body = $object;
     209        return $response;
     210    }
     211
     212    function put($request) {
     213        return $this->post($request);
    188214    }
    189215
    190216    function delete($request) {
    191         restore_session();
     217        restore_session(new Response($request));
    192218        throw new ReponseException("Delete not implemented", Response::METHODNOTALLOWED);
    193219    }
     
    202228    $request->baseUri = $baseUri;
    203229}
    204 
     230$request->data = Marshaller::unmarshall(json_decode($request->data));
    205231try {
    206232    $resource = $request->loadResource();
     
    208234} catch (ResponseException $e) {
    209235    $response = $e->response($request);
    210     $response->body = json_encode(array('errorMsg' => $response->body));
     236    $response->body = array('errorMsg' => $response->body);
    211237} catch (Exception $e) {
    212238    $response = new Response($request);
    213239    $response->code = Response::INTERNALSERVERERROR;
    214     $response->body = json_encode(array('errorMsg' => "Unhandled exception: " . $e));
     240    $response->body = array('errorMsg' => "Unhandled exception: " . $e);
    215241}
    216242add_default_headers($response);
     243$response->body = json_encode(Marshaller::marshall($response->body));
    217244$response->output();
     245
    218246?>
Note: See TracChangeset for help on using the changeset viewer.