joebocock/launch-library-php-sdk

A flexible SDK for Launch Library 2 by The Space Devs.

v0.3.1 2023-11-11 11:51 UTC

This package is auto-updated.

Last update: 2024-05-12 10:26:15 UTC


README

rocket

Launch Library PHP API SDK

A simple PHP SDK to work with the Launch Library 2 API.

GitHub Workflow Status GitHub issues GitHub commit activity GitHub code size in bytes


Warning: This package is still in active development and in very early stages.

Table of Contents


Introduction

This PHP Composer package provides a simple SDK to interact with Launch Libraries API for all your space data needs!

This package can be used out-of-box with zero configuration. However, you may provide a configured HTTP client if you wish, given it follows PSR-18.


Usage

This package is not yet complete, but I am actively working on it. I'm slowly working my way through the various endpoints. To get started, install the package with Composer.


composer require joebocock/launch-library-php-sdk

General usage is simple and you can be up and running in no time.


use JoeBocock\LaunchLibrary\Client;

$client = new Client();

The client has multiple configuration options. Firstly, you can provide a JoeBocock\LaunchLibrary\Enum\Url. This enum will determine which endpoint is used when making requests. Secondly a JoeBocock\Enum\Version can be provided and is used to decide on which API version should be hit. Finally, under the hood Guzzle will be used to make the request - but if you have your own PSR-18 compliant HTTP client, you may provide it while constructing the Client class. This is great for when you need to configure the Client beforehand.


use GuzzleHttp\Client as GuzzleClient;
use JoeBocock\LaunchLibrary\Client;
use JoeBocock\LaunchLibrary\Enum\Url;
use JoeBocock\LaunchLibrary\Enum\Version;

$client = new Client(
    Url::Development,
    Version::Latest,
    new GuzzleClient(),
);

The main client is composed of sub-clients. Whenever you want to make a request against a specific resource, it can be achieved by doing the following...


use JoeBocock\LaunchLibrary\Client;

$client = new Client();

$client->agency->list();

While I'd hope nothing goes wrong during usage, sometimes Launch Library might return a 4XX or even 5XX. In this case, the Client class throws two different exceptions to help discern the problem.

A LaunchLibraryRequestException will occur whenever there was an issue produced by the HTTP Client. Finally, a LaunchLibraryResponseException will happen whenever a response was returned that cannot be properly hydrated into an entity.


Development

As this is just a package, it has no requirement for a web server locally. Development is powered by a very simple Docker container that is used to run all commands.

To get started, first clone the repository. A Makefile is provided for convenience of command handling...


# Build the container
make build

# Install Composer Dependencies
make install

# Run the test suite
make test

# Run static analysis
make stan

# Format the codebase
make format

# Lint the codebase
make lint

Contributing

As the package is still in development and hasn't reached v1 yet, I haven't written any contribution guidelines. But don't let that stop you! Please feel free to fork the codebase, get a feel for the style and submit a PR.