Browse Source

move micropub routes to new file

pull/82/head
Aaron Parecki 4 years ago
parent
commit
d87042ab9d
No known key found for this signature in database GPG Key ID: 276C2817346D6056
2 changed files with 117 additions and 116 deletions
  1. +0
    -116
      controllers/controllers.php
  2. +117
    -0
      controllers/micropub.php

+ 0
- 116
controllers/controllers.php View File

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

+ 117
- 0
controllers/micropub.php View File

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

Loading…
Cancel
Save