Download the PHP package spinen/halo-php-client without Composer

On this page you can find all versions of the php package spinen/halo-php-client. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package halo-php-client

SPINEN's Halo PHP Client

Latest Stable Version Latest Unstable Version Total Downloads License

PHP package to interface with Halo Service Solutions. We strongly encourage you to review Halo's API docs to get a feel for what this package can do, as we are just wrapping their API.

We solely use Laravel for our applications, so this package is written with Laravel in mind. We have tried to make it work outside of Laravel. If there is a request from the community to split this package into 2 parts, then we will consider doing that work.

Build Status

Branch Status Coverage Code Quality
Develop Build Status Code Coverage Scrutinizer Code Quality
Master Build Status Code Coverage Scrutinizer Code Quality

Table of Contents

Installation

Install Halo PHP Package via Composer:

Laravel Setup

  1. You will need to make your User object implement includes the Spinen\Halo\Concerns\HasHalo trait which will allow it to access the Client as an attribute like this: $user->halo

  2. Add the appropriate values to your file

    Keys

  3. [Optional] Publish config & migration

    Config

    A configuration file named can be published to by running...

    Migration

    Migrations files can be published by running...

    You'll need the migration to set the Halo API token on your User model.

Generic PHP Setup

  1. You need to build up an array of configs to pass into the Halo object. You review the halo.php file in the configs directory. All of the properties are documented in the file.

  2. Depending on your needs, you can either work with the Halo client or the Builder

    To get a Spinen\Halo\Api\Client instance for Client Credentials...

    The $halo instance will work exactly like all of the examples below where halo is the property.

    To get a Spinen\Halo\Support\Builder instance...

    The $builder instance will work exactly like all of the examples below where halo() is a method.

Authentication

Halo has four ways to authenticate when making API calls. With this package we are focusing on the following two: 1) Authorization Code or 2) Client Credentials. The Authorization Code method is used to make API calls to the API as specific users. If you are using Laravel to interact with this package, then the authorization flow is built out for you. If you are not, then review Http\Middleware\Filter to see how we redirect the user to the Halo server to request a code and Http\Controllers\HaloController to see how we convert the code into a token. The flow is protected with PKCE. The Client Credentials method is used to make API calls as a specific user and is useful for background processes.

NOTE: You can use either method or both methods in the same project.

Authorization Code

There is a middleware named Halo that you can apply to any route that verifies that the user has a halo_token, and if the user does not, then it redirects the user to Halo's OAuth page with the client_id where the user selects the team(s) to link with your application. Upon selecting the team(s), the user is redirected to the named route halo.sso.redirect_uri where the system converts the code to a token & saves it to the user. Upon saving the halo_token, the user is redirected to the initial page that was protected by the middleware.

NOTE: You will need to have the auth middleware on the routes as the User is needed to see if there is a halo_token.

NOTE: At this time, there is not a way to remove a token that has been invalidated, so you will need to delete the halo_token on the user to restart the flow.

Client Credentials

When using Client Credentials, you can make API calls without needing any user interface or requiring any user interaction.

Usage

Supported Actions for Spinen\Halo\Api\Client

Using the Client

The Client is meant to emulate Laravel's models with Eloquent. When working with Halo resources, you can access properties and relationships just like you would in Laravel.

Getting the Client object

When using Authorization Code

By running the migration included in this package, your User class will have a halo_token column on it. When you set the user's token, it is encrypted in your database with Laravel's encryption methods. After setting the Halo API token, you can access the Client object through $user->halo.

Models

The API responses are cast into models with the properties cast into the types as defined in the Halo API documentation. You can review the models in the src/ folder. There is a property named casts on each model that instructs the Client on how to cast the properties from the API response. If the casts property is empty, then the properties are not defined in the API docs, so an array is returned.

NOTE: The documented properties on the models are likely to get stale as Halo is in active development

Relationships

Some of the responses have links to the related resources. If a property has a relationship, you can call it as a method and the additional calls are automatically made & returned. The value is stored in place of the original data, so once it is loaded it is cached.

You may also call these relationships as attributes, and the Client will return a Collection for you (just like Eloquent).

Collections

Results are wrapped in a Spinen\Halo\Support\Collection, which extends Illuminate\Support\Collection, so you can use any of the collection helper methods documented Laravel Collection methods.

Filtering using "where"

You can do filters by using where on the models. The first parameter is the property being filtered. The second is optional, and is the value to filter the property. If it is left null, then is it true, so it becomes where('<property', true). All of these values are passed in the query string.

There are a few "helper" methods that are aliases to the where filter, to make the calls more expressive.

NOTE: Halo's API need the string "true"/"false" for boolean values, which is automatically convert at time of building the query string.

Search

There is a simple search that you can preform on the endpoints using the search. There are some of the endpoints that allow searching specific fields, which you can access via search_some_field('<for>') or searchSomeField('<for>').

Limit records returned

You can call the take or limit methods (take is an alias to limit) on the builder to limit the records returned to the count parameter.

Order By

You can order the results of the API by using the orderBy and orderByDesc methods. Pass in the column you wish to order the results as the first parameter. orderByDesc('<column>') is an alias to orderBy('<column>', 'desc'). Additionally, you can use latest or oldest to apply orderBy or orderByDesc with the default of the column in the model that represents when the record was created. You can pass a different column to either of the methods to override the default column.

NOTE: The column to use for the latest is controlled by the CREATED_AT const on the models.

Pagination

Several of the endpoints support pagination. You can use simple pagination by chaining pagination or pageination with an optional size value to the builder. You can get a specific page with the page method that takes page number as a parameter. You can condense the call by passing pagination size as the second parameter to the page method.

More Examples

Open Items

Known Issues


All versions of halo-php-client with dependencies

PHP Build Version
Package Version
Requires php Version ^8.1
ext-json Version *
guzzlehttp/guzzle Version ^7.0
laravel/framework Version ^9.19|^10|^11
nesbot/carbon Version ^2.62.1|^3
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package spinen/halo-php-client contains the following files

Loading the files please wait ....