initial commit

This commit is contained in:
aymm 2021-03-11 16:51:25 +00:00
commit b9521ad7ed
10 changed files with 342 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
config.php
logs/*
vendor/

4
.nova/Configuration.json Normal file
View File

@ -0,0 +1,4 @@
{
"com.thorlaksson.phpcs.runOnChange" : "onSave",
"com.thorlaksson.phpcs.standard" : "\/Volumes\/Alyx\/Users\/max\/Dev\/Pnut\/Dragonpolls\/phpcs.xml"
}

28
auth_callback.php Normal file
View File

@ -0,0 +1,28 @@
<?php
/*require __DIR__ .'/vendor/autoload.php';
use APnutI\APnutI;
session_start();
$api = new APnutI(
'DKXEf-a9t6_1wWNnQK-bHijxLCIRXFBk',
'mmZhbsH4KIoFkqnbIOVMktTSKypZ_QQk',
'basic,polls,public_messages,stream,update_profile,write_post',
'Playground',
'http://localhost/auth_callback.php',
'./log.log'
);*/
require_once __DIR__ .'/bootstrap.php';
if (isset($_GET['code'])) {
$success = $api->authenticate($_GET['code']);
if ($success) {
die('Welcome! <a href="index.php">Back to home</a>');
} else {
die('Echo error authenticating');
}
} else {
die('error authenticating: ' . $_GET['error_message']);
}

16
bootstrap.php Normal file
View File

@ -0,0 +1,16 @@
<?php
require __DIR__ .'/vendor/autoload.php';
use APnutI\APnutI;
session_start();
$config = include(__DIR__.'/config.php');
$api = new APnutI(
$config['client_id'],
$config['client_secret'],
$config['permission_scopes'],
$config['app_name'],
$config['callback_url'],
__DIR__.'/'.$config['log_file']
);

11
composer.json Normal file
View File

@ -0,0 +1,11 @@
{
"require": {
"hutattedonmyarm/apnuti": "@dev"
},
"repositories": [
{
"type": "path",
"url": "../APnutI"
}
]
}

202
composer.lock generated Normal file
View File

@ -0,0 +1,202 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "c023d89db0d1884f6caab2753f9f04f6",
"packages": [
{
"name": "hutattedonmyarm/apnuti",
"version": "dev-main",
"dist": {
"type": "path",
"url": "../APnutI",
"reference": "171b4a0ec6bacc9e53eb3d0f3fdebef8f54533b5"
},
"require": {
"ext-curl": "*",
"ext-json": "*",
"ext-mbstring": "*",
"ext-pdo": "*",
"monolog/monolog": "^2.0",
"php": "^7.4|^8.0",
"psr/log": "^1.1"
},
"type": "library",
"autoload": {
"psr-4": {
"APnutI\\": "src"
}
},
"license": [
"MIT"
],
"description": "PHP Pnut library",
"keywords": [
"api",
"pnut"
],
"transport-options": {
"relative": true
}
},
{
"name": "monolog/monolog",
"version": "2.2.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "1cb1cde8e8dd0f70cc0fe51354a59acad9302084"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/1cb1cde8e8dd0f70cc0fe51354a59acad9302084",
"reference": "1cb1cde8e8dd0f70cc0fe51354a59acad9302084",
"shasum": ""
},
"require": {
"php": ">=7.2",
"psr/log": "^1.0.1"
},
"provide": {
"psr/log-implementation": "1.0.0"
},
"require-dev": {
"aws/aws-sdk-php": "^2.4.9 || ^3.0",
"doctrine/couchdb": "~1.0@dev",
"elasticsearch/elasticsearch": "^7",
"graylog2/gelf-php": "^1.4.2",
"mongodb/mongodb": "^1.8",
"php-amqplib/php-amqplib": "~2.4",
"php-console/php-console": "^3.1.3",
"phpspec/prophecy": "^1.6.1",
"phpstan/phpstan": "^0.12.59",
"phpunit/phpunit": "^8.5",
"predis/predis": "^1.1",
"rollbar/rollbar": "^1.3",
"ruflin/elastica": ">=0.90 <7.0.1",
"swiftmailer/swiftmailer": "^5.3|^6.0"
},
"suggest": {
"aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
"doctrine/couchdb": "Allow sending log messages to a CouchDB server",
"elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
"ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
"ext-mbstring": "Allow to work properly with unicode symbols",
"ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
"graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
"mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
"php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
"php-console/php-console": "Allow sending log messages to Google Chrome",
"rollbar/rollbar": "Allow sending log messages to Rollbar",
"ruflin/elastica": "Allow sending log messages to an Elastic Search server"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "2.x-dev"
}
},
"autoload": {
"psr-4": {
"Monolog\\": "src/Monolog"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
"homepage": "https://seld.be"
}
],
"description": "Sends your logs to files, sockets, inboxes, databases and various web services",
"homepage": "https://github.com/Seldaek/monolog",
"keywords": [
"log",
"logging",
"psr-3"
],
"support": {
"issues": "https://github.com/Seldaek/monolog/issues",
"source": "https://github.com/Seldaek/monolog/tree/2.2.0"
},
"funding": [
{
"url": "https://github.com/Seldaek",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
"type": "tidelift"
}
],
"time": "2020-12-14T13:15:25+00:00"
},
{
"name": "psr/log",
"version": "1.1.3",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Log\\": "Psr/Log/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for logging libraries",
"homepage": "https://github.com/php-fig/log",
"keywords": [
"log",
"psr",
"psr-3"
],
"support": {
"source": "https://github.com/php-fig/log/tree/1.1.3"
},
"time": "2020-03-23T09:12:05+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {
"hutattedonmyarm/apnuti": 20
},
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": [],
"plugin-api-version": "2.0.0"
}

10
config.php.default Normal file
View File

@ -0,0 +1,10 @@
<?php
return [
'client_id' => '',
'client_secret' => '',
'log_file' => '../../logs/Dragonpolls.log', // Relative to index.php
'app_name' => 'Playground',
'callback_url' => 'http://localhost/auth_callback.php',
'permission_scopes' => 'basic' //comma seperated string
];

10
index.php Normal file
View File

@ -0,0 +1,10 @@
<?php
require_once __DIR__ .'/bootstrap.php';
$is_authenticated = $api->isAuthenticated();
if (!$is_authenticated) {
echo '<a href="' . $api->getAuthURL() . '">Login with pnut</a>';
} else {
echo 'Welcome';
}

28
phpcs.xml Normal file
View File

@ -0,0 +1,28 @@
<?xml version="1.0"?>
<ruleset name="Slim PSR2">
<!--
Include all sniffs in the PEAR standard. Note that the
path to the standard does not have to be specified as the
PEAR standard exists inside the PHP_CodeSniffer install
directory.
-->
<rule ref="PSR2"/>
<!--
Another useful example of changing sniff settings is
to specify the end of line character that your standard
should check for.
-->
<rule ref="Generic.Files.LineEndings">
<properties>
<property name="eolChar" value="\n"/>
</properties>
</rule>
<arg name="tab-width" value="2"/>
<rule ref="Generic.WhiteSpace.ScopeIndent">
<properties>
<property name="indent" value="2"/>
</properties>
</rule>
</ruleset>

30
view_poll.php Normal file
View File

@ -0,0 +1,30 @@
<?php
require_once __DIR__ .'/bootstrap.php';
use APnutI\Exceptions\NotFoundException;
use APnutI\Exceptions\HttpPnutForbiddenException;
use APnutI\Exceptions\NotSupportedPollException;
use APnutI\Entities\Poll;
if (empty($_GET['id']) || !is_numeric($_GET['id']) || $_GET['id'] <= 0) {
die('Invalid poll ID');
}
$poll_id = (int)$_GET['id'];
$poll = null;
try {
$poll = $api->getPoll($poll_id);
} catch (NotFoundException $nfe) {
die('Poll not found');
} catch (HttpPnutForbiddenException $fe) {
die('Poll token required!');
} catch (NotSupportedPollException $nspe) {
die('Sorry, this poll has a not yet supported type: ' . $nspe->getMessage());
}
#echo json_encode($poll);
#$user_avatar_url = $api->getAvatarUrl($poll->user->id, 50);
$user_avatar_url = $poll->user->getAvatarUrl(50);
$prompt = '@' . $poll->user->username . ' asks: ' . $poll->prompt;
echo '<img src="'.$user_avatar_url.'"/>';
echo $prompt;