Looking to hire Laravel developers? Try LaraJobs

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
Links
Downloads
0
Tags

Comments
comments powered by Disqus

JOOservices Laravel Flickr

PHP Version License: MIT

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.