diff options
Diffstat (limited to 'controllers')
-rw-r--r-- | controllers/controllers.php | 116 | ||||
-rw-r--r-- | controllers/micropub.php | 117 |
2 files changed, 117 insertions, 116 deletions
diff --git a/controllers/controllers.php b/controllers/controllers.php index d4f0233..6eb258d 100644 --- a/controllers/controllers.php +++ b/controllers/controllers.php @@ -472,119 +472,3 @@ $app->get('/reply/preview', function() use($app) { ])); } }); - -$app->get('/micropub/syndications', function() use($app) { - if($user=require_login($app)) { - $data = get_micropub_config($user, ['q'=>'syndicate-to']); - $app->response()['Content-type'] = 'application/json'; - $app->response()->body(json_encode(array( - 'targets' => $data['targets'], - 'response' => $data['response'] - ))); - } -}); - -$app->post('/micropub/post', function() use($app) { - if($user=require_login($app)) { - $params = $app->request()->params(); - - // Remove any blank params - $params = array_filter($params, function($v){ - return $v !== ''; - }); - - $r = micropub_post_for_user($user, $params); - - $app->response()['Content-type'] = 'application/json'; - $app->response()->body(json_encode(array( - 'request' => htmlspecialchars($r['request']), - 'response' => htmlspecialchars($r['response']), - 'location' => $r['location'], - 'error' => $r['error'], - 'curlinfo' => $r['curlinfo'] - ))); - } -}); - -$app->post('/micropub/multipart', function() use($app) { - if($user=require_login($app)) { - // var_dump($app->request()->post()); - // - // Since $app->request()->post() with multipart is always - // empty (bug in Slim?) We're using the raw $_POST here. - // PHP empties everything in $_POST if the file upload size exceeds - // that is why we have to test if the variables exist first. - - $file = isset($_FILES['photo']) ? $_FILES['photo'] : null; - - if($file) { - $error = validate_photo($file); - - unset($_POST['null']); - - if(!$error) { - $file_path = $file['tmp_name']; - correct_photo_rotation($file_path); - $r = micropub_post_for_user($user, $_POST, $file_path); - } else { - $r = array('error' => $error); - } - } else { - unset($_POST['null']); - $r = micropub_post_for_user($user, $_POST); - } - - // Populate the error if there was no location header. - if(empty($r['location']) && empty($r['error'])) { - $r['error'] = "No 'Location' header in response."; - } - - $app->response()['Content-type'] = 'application/json'; - $app->response()->body(json_encode(array( - 'response' => (isset($r['response']) ? htmlspecialchars($r['response']) : null), - 'location' => (isset($r['location']) ? $r['location'] : null), - 'error' => (isset($r['error']) ? $r['error'] : null), - ))); - } -}); - -$app->post('/micropub/media', function() use($app) { - if($user=require_login($app)) { - $file = isset($_FILES['photo']) ? $_FILES['photo'] : null; - $error = validate_photo($file); - unset($_POST['null']); - - if(!$error) { - $file_path = $file['tmp_name']; - correct_photo_rotation($file_path); - $r = micropub_media_post_for_user($user, $file_path); - } else { - $r = array('error' => $error); - } - - if(empty($r['location']) && empty($r['error'])) { - $r['error'] = "No 'Location' header in response."; - } - - $app->response()['Content-type'] = 'application/json'; - $app->response()->body(json_encode(array( - 'location' => (isset($r['location']) ? $r['location'] : null), - 'error' => (isset($r['error']) ? $r['error'] : null), - ))); - } -}); - -$app->post('/micropub/postjson', function() use($app) { - if($user=require_login($app)) { - $params = $app->request()->params(); - - $r = micropub_post_for_user($user, json_decode($params['data'], true), null, true); - - $app->response()['Content-type'] = 'application/json'; - $app->response()->body(json_encode(array( - 'location' => $r['location'], - 'error' => $r['error'], - 'response' => $r['response'] - ))); - } -}); diff --git a/controllers/micropub.php b/controllers/micropub.php new file mode 100644 index 0000000..5bf8a5f --- /dev/null +++ b/controllers/micropub.php @@ -0,0 +1,117 @@ +<?php + +$app->get('/micropub/syndications', function() use($app) { + if($user=require_login($app)) { + $data = get_micropub_config($user, ['q'=>'syndicate-to']); + $app->response()['Content-type'] = 'application/json'; + $app->response()->body(json_encode(array( + 'targets' => $data['targets'], + 'response' => $data['response'] + ))); + } +}); + +$app->post('/micropub/post', function() use($app) { + if($user=require_login($app)) { + $params = $app->request()->params(); + + // Remove any blank params + $params = array_filter($params, function($v){ + return $v !== ''; + }); + + $r = micropub_post_for_user($user, $params); + + $app->response()['Content-type'] = 'application/json'; + $app->response()->body(json_encode(array( + 'request' => htmlspecialchars($r['request']), + 'response' => htmlspecialchars($r['response']), + 'location' => $r['location'], + 'error' => $r['error'], + 'curlinfo' => $r['curlinfo'] + ))); + } +}); + +$app->post('/micropub/multipart', function() use($app) { + if($user=require_login($app)) { + // var_dump($app->request()->post()); + // + // Since $app->request()->post() with multipart is always + // empty (bug in Slim?) We're using the raw $_POST here. + // PHP empties everything in $_POST if the file upload size exceeds + // that is why we have to test if the variables exist first. + + $file = isset($_FILES['photo']) ? $_FILES['photo'] : null; + + if($file) { + $error = validate_photo($file); + + unset($_POST['null']); + + if(!$error) { + $file_path = $file['tmp_name']; + correct_photo_rotation($file_path); + $r = micropub_post_for_user($user, $_POST, $file_path); + } else { + $r = array('error' => $error); + } + } else { + unset($_POST['null']); + $r = micropub_post_for_user($user, $_POST); + } + + // Populate the error if there was no location header. + if(empty($r['location']) && empty($r['error'])) { + $r['error'] = "No 'Location' header in response."; + } + + $app->response()['Content-type'] = 'application/json'; + $app->response()->body(json_encode(array( + 'response' => (isset($r['response']) ? htmlspecialchars($r['response']) : null), + 'location' => (isset($r['location']) ? $r['location'] : null), + 'error' => (isset($r['error']) ? $r['error'] : null), + ))); + } +}); + +$app->post('/micropub/media', function() use($app) { + if($user=require_login($app)) { + $file = isset($_FILES['photo']) ? $_FILES['photo'] : null; + $error = validate_photo($file); + unset($_POST['null']); + + if(!$error) { + $file_path = $file['tmp_name']; + correct_photo_rotation($file_path); + $r = micropub_media_post_for_user($user, $file_path); + } else { + $r = array('error' => $error); + } + + if(empty($r['location']) && empty($r['error'])) { + $r['error'] = "No 'Location' header in response."; + } + + $app->response()['Content-type'] = 'application/json'; + $app->response()->body(json_encode(array( + 'location' => (isset($r['location']) ? $r['location'] : null), + 'error' => (isset($r['error']) ? $r['error'] : null), + ))); + } +}); + +$app->post('/micropub/postjson', function() use($app) { + if($user=require_login($app)) { + $params = $app->request()->params(); + + $r = micropub_post_for_user($user, json_decode($params['data'], true), null, true); + + $app->response()['Content-type'] = 'application/json'; + $app->response()->body(json_encode(array( + 'location' => $r['location'], + 'error' => $r['error'], + 'response' => $r['response'] + ))); + } +}); |