|                                                                                                                     |  | <?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']    )));  }});
 |