From 6337d564243c5884e962337aaedfc23bb8eedc57 Mon Sep 17 00:00:00 2001 From: Alexander Yakovlev Date: Sat, 17 Jun 2017 02:03:07 +0700 Subject: [PATCH] Mastodon support --- bot.php | 24 ++--- composer.json | 3 +- composer.lock | 264 +++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 274 insertions(+), 17 deletions(-) diff --git a/bot.php b/bot.php index 1c6584c..2a82176 100644 --- a/bot.php +++ b/bot.php @@ -4,7 +4,7 @@ use Symfony\Component\Yaml\Yaml; use Mremi\UrlShortener\Model\Link; use Mremi\UrlShortener\Provider\Bitly\BitlyProvider; use Mremi\UrlShortener\Provider\Bitly\GenericAccessTokenAuthenticator; -use Baguette\Mastodon; +use Revolution\Mastodon\MastodonClient; $config = Yaml::parse(file_get_contents('config.yml')); $lastrun = 0; @@ -55,14 +55,8 @@ $telegram = new Longman\TelegramBot\Telegram( $config['TELEGRAM_API_KEY'], $config['TELEGRAM_BOT_NAME'] ); -$mastodon = Mastodon\session( - $config['MASTODON_SERVER'], - $config['MASTODON_CLIENT_ID'], - $config['MASTODON_SECRET'], - [ - 'scope' => 'read write', - ] -); +$mastodon = new MastodonClient(); + foreach ($articles as $article) { if (strtotime($article['pubDate']) <= $lastrun) { continue; @@ -99,16 +93,18 @@ foreach ($articles as $article) { } } if ($config['MASTODON'] === true) { + $mastodon->domain($config['MASTODON_SERVER'])->token($config['MASTODON_ACCESS_TOKEN']); $mdescription = "$title\n\n".ellipse($description, 400); $mdescription .= ": $link"; + /* if ($image) { - $attachment = Mastodon\request($mastodon, 'POST', '/api/v1/media', [ + $attachment = $mastodon->post('/media', [ 'file' => $image - ], Mastodon\Entity\Account::class); + ]); + var_dump($attachment); $mdescription .= $attachment->url; - } - echo $mdescription; - //$mastodon->postStatus(Mastodon\toot($mdescription)); + }*/ + $mastodon->status_post($mdescription); } } else { echo $description."\n"; diff --git a/composer.json b/composer.json index a62a29f..e2d6d9c 100644 --- a/composer.json +++ b/composer.json @@ -4,6 +4,7 @@ "sabre/xml": "^2.0", "ryakad/pandoc-php": "^1.0", "symfony/yaml": "^3.2", - "mremi/url-shortener": "^2.1" + "mremi/url-shortener": "^2.1", + "revolution/laravel-mastodon-api": "^1.1" } } diff --git a/composer.lock b/composer.lock index 2d2637e..858fc7e 100644 --- a/composer.lock +++ b/composer.lock @@ -4,9 +4,76 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "71302a13e71405a5c30d66ccb32c62da", - "content-hash": "a474f6360fb73f8cd1cfc26729f5c03a", + "hash": "1202ffc808820614be6612d0a402a758", + "content-hash": "725c9d0611923400d53ba805e2785e86", "packages": [ + { + "name": "doctrine/inflector", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", + "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "4.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Inflector\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Common String Manipulations with regard to casing and singular/plural rules.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "inflection", + "pluralize", + "singularize", + "string" + ], + "time": "2015-11-06 14:35:42" + }, { "name": "guzzlehttp/guzzle", "version": "6.2.3", @@ -185,6 +252,105 @@ ], "time": "2017-03-20 17:10:46" }, + { + "name": "illuminate/contracts", + "version": "v5.4.27", + "source": { + "type": "git", + "url": "https://github.com/illuminate/contracts.git", + "reference": "31f0193eb14aa3ee07841dc254081425616e79f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/contracts/zipball/31f0193eb14aa3ee07841dc254081425616e79f0", + "reference": "31f0193eb14aa3ee07841dc254081425616e79f0", + "shasum": "" + }, + "require": { + "php": ">=5.6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.4-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Contracts\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Contracts package.", + "homepage": "https://laravel.com", + "time": "2017-04-19 20:17:43" + }, + { + "name": "illuminate/support", + "version": "v5.4.27", + "source": { + "type": "git", + "url": "https://github.com/illuminate/support.git", + "reference": "a42393b56d0ec75f55e760f2a47bcf85a17a278d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/support/zipball/a42393b56d0ec75f55e760f2a47bcf85a17a278d", + "reference": "a42393b56d0ec75f55e760f2a47bcf85a17a278d", + "shasum": "" + }, + "require": { + "doctrine/inflector": "~1.0", + "ext-mbstring": "*", + "illuminate/contracts": "5.4.*", + "paragonie/random_compat": "~1.4|~2.0", + "php": ">=5.6.4" + }, + "replace": { + "tightenco/collect": "self.version" + }, + "suggest": { + "illuminate/filesystem": "Required to use the composer class (5.2.*).", + "symfony/process": "Required to use the composer class (~3.2).", + "symfony/var-dumper": "Required to use the dd function (~3.2)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.4-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Support\\": "" + }, + "files": [ + "helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Support package.", + "homepage": "https://laravel.com", + "time": "2017-06-15 12:35:32" + }, { "name": "longman/telegram-bot", "version": "0.44.1", @@ -365,6 +531,54 @@ ], "time": "2017-03-29 18:03:19" }, + { + "name": "paragonie/random_compat", + "version": "v2.0.10", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "634bae8e911eefa89c1abfbf1b66da679ac8f54d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/634bae8e911eefa89c1abfbf1b66da679ac8f54d", + "reference": "634bae8e911eefa89c1abfbf1b66da679ac8f54d", + "shasum": "" + }, + "require": { + "php": ">=5.2.0" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "autoload": { + "files": [ + "lib/random.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "pseudorandom", + "random" + ], + "time": "2017-03-13 16:27:32" + }, { "name": "psr/http-message", "version": "1.0.1", @@ -527,6 +741,52 @@ ], "time": "2017-03-14 09:44:11" }, + { + "name": "revolution/laravel-mastodon-api", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/kawax/laravel-mastodon-api.git", + "reference": "386bc7fbf5dc16b08582c9739c770be078314bbc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kawax/laravel-mastodon-api/zipball/386bc7fbf5dc16b08582c9739c770be078314bbc", + "reference": "386bc7fbf5dc16b08582c9739c770be078314bbc", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "^6.2", + "illuminate/support": "5.*", + "php": ">=7.0.0" + }, + "require-dev": { + "mockery/mockery": "0.9.*", + "phpunit/phpunit": "6.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "Revolution\\Mastodon\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "kawax", + "email": "kawaxbiz@gmail.com" + } + ], + "description": "Mastodon API for Laravel", + "keywords": [ + "laravel", + "mastodon" + ], + "time": "2017-05-30 03:20:20" + }, { "name": "ryakad/pandoc-php", "version": "v1.0.0",