hamhamfonfon/astrobin-ws

Astrobin WebServices for PHP projects


README

Latest Stable Version Total Downloads License CI Status codecov.io

WebServices for Astrobin's API REST

Table of contents

Version 2.6.2

Requirements

  • PHP 8.2 min or superior (oldest versions are no longer supported)
  • API Key and API Secret from Astrobin

Introduction

Astrobin's WebServices is a PHP library for request Astrobin's API Rest and get amazing astrophotographies hosted on Astrobin. Please read API section in "Terms of service"

Installing

You can install this package in 2 different ways.

  • Basic installation; just install package from composer :

composer require hamhamfonfon/astrobin-ws

Update to the newest version :

composer update hamhamfonfon/astrobin-ws

If you're using old PHP versions:

  • PHP 8.1

composer require hamhamfonfon/astrobin-ws:2.5

  • PHP 7.4 | 8.0

composer require hamhamfonfon/astrobin-ws:2.4

  • PHP 7.3

composer require hamhamfonfon/astrobin-ws:2.3

Caution, these versions are not maintained anymore. Only 2.6.* will be maintained and will have new features.

  • If you just want to make some issues, make some simple tests etc, juste clone the repository

git clone git@github.com:HamHamFonFon/Astrobin-Webservices.git

Usage

First, set your keys in .env file :

ASTROBIN_API_KEY=PutHereYourOwnApiKey
ASTROBIN_API_SECRET=PutHereYourOwnApiSecret

Example without framework:

# Get variables
$astrobinApiKey = getenv('ASTROBIN_API_KEY');
$astrobinApiSecret = getenv('ASTROBIN_API_SECRET');

# Get data from Astrobin
$imageWs = new GetImage($astrobinApiKey, $astrobinApiSecret);
$astrobinImage = $imageWs->getById('astrobinImageId');

Example with Symfony:

parameters:
   astrobinApiKey: '%env(ASTROBIN_API_KEY)%'
   astrobinApiSecret: '%env(ASTROBIN_API_SECRET)%'
   
   # default configuration for services in *this* file
   _defaults:
      autowire: true      # Automatically injects dependencies in your services.
      autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
      bind:
         $astrobinApiKey: '%astrobinApiKey%'
         $astrobinApiSecret: '%astrobinApiSecret%'    
use AstrobinWs\Response\DTO\AstrobinResponse;use AstrobinWs\Services\GetImage;

final class MyImageService
{
    private GetImage $astrobinImage;

    /**
     * MyImageService constructor.
     * @param string|null $astrobinApiKey
     * @param string|null $astrobinApiSecret
    */
    public function __construct(?string $astrobinApiKey, ?string $astrobinApiSecret)
    {
        $this->astrobinImage = new GetImage($astrobinApiKey, $astrobinApiSecret);
    }
    
    public function getImageById(): ?AstrobinResponse
    {
        return $this->astrobinImage->getImageById('1234');
    }

    public function getOrionNebula(): ?AstrobinResponse
    {
        $orionNebula = $this->astrobinImage->getImagesBySubject('m42', 10);
        // ...
        return $orionNebula;
    }
    
    public function getImagesOfSiovene(): ?AstrobinResponse
    {
        $imagesBySiovene = $this->astrobinImage->getImagesByUser('siovene', 10);
        
        return $imagesBySiovene;
    }
    
    public function getImagesByManyFilters(): ?AstrobinResponse
    {
        $filters = [
            'user' => 'toto',
            'subjects' => 'm31',
            'description__icontains' => 'wind'
        ];

        $listImages = $this->astrobinImage->getImageBy($filters, 10);
        
        return $listImages;
    }
}

WebServices

The library expose 3 WebServices, each with these methods below.

GetImage :

List of filters that can be used in getImageBy() :

GetTodayImage :

GetCollection :

Parameter $limit is mandatory and must be an integer.

GetUser

Responses

Image

ListImage

Collection

ListCollection

Today

User

Contributes

I accept contributions, please fork the project and submit pull requests.

Bugs and issues

In case you find some bugs or have question about Astrobin-WebServices, open an issue and I will answer you as soon as possible.

Install package for debugging

Retrieve code-source

Clone repository from GitHub

git clone git@github.com:HamHamFonFon/Astrobin-WebServices.git

Run docker

Build, compile and up docker container

docker-compose build --no-cache
docker-compose up -d
docker exec -ti php_astrobin_ws bash

Installation

Install dependencies

composer install

Run Rector

# Init
./vendor/bin/rector init

# Run
./vendor/bin/rector process src --dry-run

Run PHP CodeSnifer

php ./vendor/bin/phpcs -p -n --standard=PSR12 src

Apply PHPCBF (fix and beautify PHPCS errors):

php ./vendor/bin/phpcbf src/path/to/file.php

Authors

Stéphane Méaudre - balistik.fonfon@gmail.com - 2023

Licence

This project is licensed under the MIT License - see the LICENSE.md file for details

Other versions