laravel-flickr maintained by jooservices
Description
Laravel integration on top of jooservices/flickr: account-bound clients and sync page-level fetch helpers. No queues, no crawl engine, no UI.
Author
Last update
2026/07/21 13:41
(dev-main)
License
Downloads
0
JOOservices Laravel Flickr
Laravel integration on top of jooservices/flickr: account-bound SDK clients and sync, page-level fetch helpers (contacts, people photos, photosets, galleries, favorites, token health).
Package name: jooservices/laravel-flickr
Charter
| In scope | Out of scope |
|---|---|
| Client factory (authenticated / anonymous) | Queues / Horizon / jobs |
| Page-level fetch helpers | Crawl run / target state machine |
| Force-auth for connection clients | Spider / frontier |
| Config credentials resolver | Catalog DB models / migrations |
Typed DTOs (PagedResult, tokens) |
UI / Inertia / Blade |
Host apps own multi-page walks, persistence, retries, and product workflows.
Principles
- SOLID, DRY, KISS, YAGNI
- Patterns only when justified (Factory, Decorator, Strategy via fetchers)
- Layering for hosts:
Controller → FormRequest → Service → (this package) → Repository - No god managers, no queue side effects
Install
composer require jooservices/laravel-flickr
Until Packagist is live, use VCS:
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/jooservices/laravel-flickr"
}
],
"require": {
"jooservices/laravel-flickr": "^1.0"
}
}
Publish config (optional):
php artisan vendor:publish --tag=laravel-flickr-config
FLICKR_API_KEY=
FLICKR_API_SECRET=
FLICKR_DEFAULT_PER_PAGE=100
Usage
use Jooservices\LaravelFlickr\Client\FlickrClientFactory;
use Jooservices\LaravelFlickr\Dto\AppCredentials;
use Jooservices\LaravelFlickr\Dto\OAuthToken;
use Jooservices\LaravelFlickr\Fetch\ContactsFetcher;
$credentials = new AppCredentials($apiKey, $apiSecret);
$token = OAuthToken::fromArray([
'oauth_token' => $oauthToken,
'oauth_token_secret' => $oauthSecret,
'user_nsid' => $nsid,
]);
$client = app(FlickrClientFactory::class)->authenticated($credentials, $token);
// or: ->authenticatedFromConfig($token);
$page = app(ContactsFetcher::class)->listPage($client, page: 1, perPage: 100);
if ($page->ok) {
foreach ($page->items as $contact) {
// host persists / enqueues next work
}
if ($page->hasMorePages()) {
// host schedules page + 1 — never inside this package
}
}
Fetch helpers
| Class | Methods |
|---|---|
ContactsFetcher |
listPage, publicListPage |
PeoplePhotosFetcher |
listPage, publicListPage |
PhotosetsFetcher |
listPage, photosPage |
GalleriesFetcher |
listPage, photosPage |
FavoritesFetcher |
listPage |
TokenHealthProbe |
probe |
All helpers return PagedResult (or TokenHealthResult) and perform one HTTP request.
Anonymous probes
$anon = app(FlickrClientFactory::class)->anonymousFromConfig();
app(PeoplePhotosFetcher::class)->publicListPage($anon, $nsid, 1, 5);
Stack
Host app (queues, spider, catalog)
↓
jooservices/laravel-flickr ← this package (sync I/O helpers)
↓
jooservices/flickr ← SDK
Quality
composer test
composer lint
composer lint:all
composer check
composer ci
Docs
License
MIT — see LICENSE.