Neocities-php is a PHP wrapper of the Neocities.org API. Now with Jigsaw integration
composer require reed-jones/neocities
// First we include the library
use ReedJones\Neocities\Neocities;
// Then we log in using either username/password or api key
$neocities = new Neocities([
'username' => 'YOUR_USERNAME',
'password' => 'YOUR_PASSWORD'
]);
// or
$neocities = new Neocities([
'apiKey' => 'YOUR_API_KEY'
]);
To upload files pass an array with the key being the desired upload name on the server, and the value being the path to the local file.
$result = $neocities->upload([
'hello.html' => './local.html',
'about.html' => './AboutMe.html'
]);
var_dump($result);
To delete files from the server, simply pass an array of the files you wish to delete.
$result = $neocities->delete([
'hello.html',
'about.html'
]);
var_dump($result);
$result = $neocities->list();
var_dump($result);
$result = $neocities->info();
var_dump($result);
If you are logging in using your username/password, you can use this to retrieve your API key.
$result = $neocities->key();
var_dump($result);
Neocities-PHP can be integrated with Tighten's Jigsaw. After installing this packing into your jigsaw project, Register the plugin in bootstrap.php
// bootstrap.php
Jigsaw::mixin(new \ReedJones\Neocities\NeocitiesDeployment($container));
With this in place, all that is left to do is add your neocities api key your your .env file (if id doesn't exist, create it)
# .env
NEO_CITIES_API_KEY="YOUR_API_KEY_HERE"
Now to build & deploy from the command line, run the new jigsaw deploy
command which accepts the same parameters as the build
command.
# Build & deploy your 'local' build
./vendor/bin/jigsaw deploy
# Build & deploy your 'production' build
./vendor/bin/jigsaw deploy production
After following the above instructions for setting up a neocities deployment with jigsaw, a deployToNeocities
method is available for programmatic use from bootstrap.php (or elsewhere). An Example:
// Programmatic API Usage
$events->afterBuild(function (Jigsaw $jigsaw) {
if ($jigsaw->getEnvironment() === 'production') {
// Automatic deployment after all production builds
$jigsaw->deployToNeocities();
}
});