aboutsummaryrefslogtreecommitdiffhomepage
path: root/index.php
diff options
context:
space:
mode:
authorArthur <arthur@hoa.ro>2016-12-20 11:30:05 +0100
committerGitHub <noreply@github.com>2016-12-20 11:30:05 +0100
commit80677a23e2e10d78bc527e9754286787b453ce61 (patch)
tree18feefc47f389171f3886b191fb14f2ace6d0175 /index.php
parente350aa750f9e9e742bb60a1e04ebd9e21f763c78 (diff)
parent18e6796726d73d7dc90ecdd16c181493941f5487 (diff)
downloadShaarli-80677a23e2e10d78bc527e9754286787b453ce61.tar.gz
Shaarli-80677a23e2e10d78bc527e9754286787b453ce61.tar.zst
Shaarli-80677a23e2e10d78bc527e9754286787b453ce61.zip
Merge pull request #666 from ArthurHoaro/slim-api
REST API structure using Slim framework
Diffstat (limited to 'index.php')
-rw-r--r--index.php56
1 files changed, 44 insertions, 12 deletions
diff --git a/index.php b/index.php
index a0a3a8c7..eb73941d 100644
--- a/index.php
+++ b/index.php
@@ -175,7 +175,6 @@ define('STAY_SIGNED_IN_TOKEN', sha1($conf->get('credentials.hash') . $_SERVER['R
175if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { 175if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
176 autoLocale($_SERVER['HTTP_ACCEPT_LANGUAGE']); 176 autoLocale($_SERVER['HTTP_ACCEPT_LANGUAGE']);
177} 177}
178header('Content-Type: text/html; charset=utf-8'); // We use UTF-8 for proper international characters handling.
179 178
180/** 179/**
181 * Checking session state (i.e. is the user still logged in) 180 * Checking session state (i.e. is the user still logged in)
@@ -731,17 +730,10 @@ function showLinkList($PAGE, $LINKSDB, $conf, $pluginManager) {
731 * 730 *
732 * @param ConfigManager $conf Configuration Manager instance. 731 * @param ConfigManager $conf Configuration Manager instance.
733 * @param PluginManager $pluginManager Plugin Manager instance, 732 * @param PluginManager $pluginManager Plugin Manager instance,
733 * @param LinkDB $LINKSDB
734 */ 734 */
735function renderPage($conf, $pluginManager) 735function renderPage($conf, $pluginManager, $LINKSDB)
736{ 736{
737 $LINKSDB = new LinkDB(
738 $conf->get('resource.datastore'),
739 isLoggedIn(),
740 $conf->get('privacy.hide_public_links'),
741 $conf->get('redirector.url'),
742 $conf->get('redirector.encode_url')
743 );
744
745 $updater = new Updater( 737 $updater = new Updater(
746 read_updates_file($conf->get('resource.updates')), 738 read_updates_file($conf->get('resource.updates')),
747 $LINKSDB, 739 $LINKSDB,
@@ -938,7 +930,7 @@ function renderPage($conf, $pluginManager)
938 exit; 930 exit;
939 } 931 }
940 932
941 // Display openseach plugin (XML) 933 // Display opensearch plugin (XML)
942 if ($targetPage == Router::$PAGE_OPENSEARCH) { 934 if ($targetPage == Router::$PAGE_OPENSEARCH) {
943 header('Content-Type: application/xml; charset=utf-8'); 935 header('Content-Type: application/xml; charset=utf-8');
944 $PAGE->assign('serverurl', index_url($_SERVER)); 936 $PAGE->assign('serverurl', index_url($_SERVER));
@@ -1142,6 +1134,8 @@ function renderPage($conf, $pluginManager)
1142 $conf->set('feed.rss_permalinks', !empty($_POST['enableRssPermalinks'])); 1134 $conf->set('feed.rss_permalinks', !empty($_POST['enableRssPermalinks']));
1143 $conf->set('updates.check_updates', !empty($_POST['updateCheck'])); 1135 $conf->set('updates.check_updates', !empty($_POST['updateCheck']));
1144 $conf->set('privacy.hide_public_links', !empty($_POST['hidePublicLinks'])); 1136 $conf->set('privacy.hide_public_links', !empty($_POST['hidePublicLinks']));
1137 $conf->set('api.enabled', !empty($_POST['apiEnabled']));
1138 $conf->set('api.secret', escape($_POST['apiSecret']));
1145 try { 1139 try {
1146 $conf->write(isLoggedIn()); 1140 $conf->write(isLoggedIn());
1147 } 1141 }
@@ -1170,6 +1164,8 @@ function renderPage($conf, $pluginManager)
1170 $PAGE->assign('enable_rss_permalinks', $conf->get('feed.rss_permalinks', false)); 1164 $PAGE->assign('enable_rss_permalinks', $conf->get('feed.rss_permalinks', false));
1171 $PAGE->assign('enable_update_check', $conf->get('updates.check_updates', true)); 1165 $PAGE->assign('enable_update_check', $conf->get('updates.check_updates', true));
1172 $PAGE->assign('hide_public_links', $conf->get('privacy.hide_public_links', false)); 1166 $PAGE->assign('hide_public_links', $conf->get('privacy.hide_public_links', false));
1167 $PAGE->assign('api_enabled', $conf->get('api.enabled', true));
1168 $PAGE->assign('api_secret', $conf->get('api.secret'));
1173 $PAGE->renderPage('configure'); 1169 $PAGE->renderPage('configure');
1174 exit; 1170 exit;
1175 } 1171 }
@@ -1954,6 +1950,14 @@ function install($conf)
1954 $conf->set('general.title', 'Shared links on '.escape(index_url($_SERVER))); 1950 $conf->set('general.title', 'Shared links on '.escape(index_url($_SERVER)));
1955 } 1951 }
1956 $conf->set('updates.check_updates', !empty($_POST['updateCheck'])); 1952 $conf->set('updates.check_updates', !empty($_POST['updateCheck']));
1953 $conf->set('api.enabled', !empty($_POST['enableApi']));
1954 $conf->set(
1955 'api.secret',
1956 generate_api_secret(
1957 $this->conf->get('credentials.login'),
1958 $this->conf->get('credentials.salt')
1959 )
1960 );
1957 try { 1961 try {
1958 // Everything is ok, let's create config file. 1962 // Everything is ok, let's create config file.
1959 $conf->write(isLoggedIn()); 1963 $conf->write(isLoggedIn());
@@ -2216,4 +2220,32 @@ if (isset($_SERVER['QUERY_STRING']) && startsWith($_SERVER['QUERY_STRING'], 'do=
2216if (!isset($_SESSION['LINKS_PER_PAGE'])) { 2220if (!isset($_SESSION['LINKS_PER_PAGE'])) {
2217 $_SESSION['LINKS_PER_PAGE'] = $conf->get('general.links_per_page', 20); 2221 $_SESSION['LINKS_PER_PAGE'] = $conf->get('general.links_per_page', 20);
2218} 2222}
2219renderPage($conf, $pluginManager); 2223
2224$linkDb = new LinkDB(
2225 $conf->get('resource.datastore'),
2226 isLoggedIn(),
2227 $conf->get('privacy.hide_public_links'),
2228 $conf->get('redirector.url'),
2229 $conf->get('redirector.encode_url')
2230);
2231
2232$container = new \Slim\Container();
2233$container['conf'] = $conf;
2234$container['plugins'] = $pluginManager;
2235$app = new \Slim\App($container);
2236
2237// REST API routes
2238$app->group('/api/v1', function() {
2239 $this->get('/info', '\Api\Controllers\Info:getInfo');
2240})->add('\Api\ApiMiddleware');
2241
2242$response = $app->run(true);
2243// Hack to make Slim and Shaarli router work together:
2244// If a Slim route isn't found, we call renderPage().
2245if ($response->getStatusCode() == 404) {
2246 // We use UTF-8 for proper international characters handling.
2247 header('Content-Type: text/html; charset=utf-8');
2248 renderPage($conf, $pluginManager, $linkDb);
2249} else {
2250 $app->respond($response);
2251}