PHPackages                             oneofftech/k-link-streaming-upload-client - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. oneofftech/k-link-streaming-upload-client

ActiveLibrary[File &amp; Storage](/categories/file-storage)

oneofftech/k-link-streaming-upload-client
=========================================

Upload videos to a K-Link Streaming Service

05.5k[1 issues](https://github.com/OneOffTech/k-link-streaming-upload-client/issues)PHPCI failing

Since Jun 4Pushed 4y ago1 watchersCompare

[ Source](https://github.com/OneOffTech/k-link-streaming-upload-client)[ Packagist](https://packagist.org/packages/oneofftech/k-link-streaming-upload-client)[ RSS](/packages/oneofftech-k-link-streaming-upload-client/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

K-Link Streaming Service client
===============================

[](#k-link-streaming-service-client)

Contact a [K-Link Video Streaming](https://github.com/k-box/k-link-video-streaming) service via API.

> **Not usable on Alpine linux as requires an executable not compiled for alpine**

Getting started
---------------

[](#getting-started)

### Installation

[](#installation)

Require the package with

```
composer require php-http/guzzle6-adapter guzzlehttp/psr7 oneofftech/k-link-streaming-upload-client
```

**Why requiring so many packages?**

K-Link Streaming Upload client has a dependency on the virtual package [php-http/client-implementation](https://packagist.org/providers/php-http/client-implementation) which requires to you install **an** adapter, but we do not care which one. That is an implementation detail in your application. We also need **a** PSR-7 implementation and **a** message factory.

You do not have to use the `php-http/guzzle6-adapter` if you do not want to. You may use the `php-http/curl-client`. Read more about the virtual packages, why this is a good idea and about the flexibility it brings at the [HTTPlug docs](http://docs.php-http.org/en/latest/httplug/users.html).

**Post install/update/require**

The Streaming Service client depends on the [Tus Cli](https://github.com/avvertix/tus-client-cli), which is not included in this repository to keep the size within a reasonable limit. Composer, for [various reasons](https://github.com/composer/composer/issues/1193), don't execute `post-install` scripts of required packages therefore it needs to be run manually.

You could do it via bash/shell

```
composer run-script post-install-cmd -d ./vendor/oneofftech/k-link-streaming-upload-client
```

Or invoke that script from the `post-install-cmd`/`post-update-cmd` scripts defined in the `composer.json`

```
"scripts": {
    "post-install-cmd": "@composer run-script post-install-cmd -d ./vendor/oneofftech/k-link-streaming-upload-client",
    "post-update-cmd": "@composer run-script post-install-cmd -d ./vendor/oneofftech/k-link-streaming-upload-client"
}
```

### Usage

[](#usage)

The client requires a registered application on the [K-Registry](https://github.com/k-box/k-link-registry), as the streaming service will verify that the application has the rights to upload videos.

```
use Oneofftech\KlinkStreaming\Client;

$streaming_service_url = 'https://streaming.test.klink.asia/';
$application_token = 'Application Token';
$application_url = 'https://myapp.local/';

$client = new Client($streaming_service_url, $application_token, $application_url);

$client->upload($file);
```

Documentation
-------------

[](#documentation)

There is no full documentation yet, for usage examples you might want to have a look at the [Integration tests](./tests/Integration/ClientUsageTest.php)

Testing
-------

[](#testing)

The code testing is automated using [PHPUnit](https://phpunit.de/).

There are 3 testing suites:

- `Unit`: test classes in isolation
- `Feature`: test the features of the Client class using mocked responses
- `Integration`: test the features using a real K-Link Video Streaming service

The tests can be executed using

```
vendor/bin/phpunit
```

**Executing integration tests**

Integration tests requires to set the `VIDEO_STREAMING_SERVICE_URL` environment variable to the URL of a running K-Link Video Streaming service.

Leaving the `VIDEO_STREAMING_SERVICE_URL` variable empty will cause the integration tests to be skipped. The available `phpunit.xml.dist` already have that variable, you only need to copy `phpunit.xml.dist` to `phpunit.xml` and execute it.

Contributing
------------

[](#contributing)

Thank you for considering contributing to the K-Link Streaming Service PHP Client! The contribution guide is not available yet, but in the meantime you can still submit Pull Requests.

License
-------

[](#license)

This project is licensed under the [MIT license](./LICENSE).

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity21

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity29

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/c44ae8dd5f85f742b93e5c3d48106749d3e3989fc50a0fa23d9fcaad35bff968?d=identicon)[OneOffAdmins](/maintainers/OneOffAdmins)

---

Top Contributors

[![avvertix](https://avatars.githubusercontent.com/u/5672748?v=4)](https://github.com/avvertix "avvertix (23 commits)")

### Embed Badge

![Health badge](/badges/oneofftech-k-link-streaming-upload-client/health.svg)

```
[![Health](https://phpackages.com/badges/oneofftech-k-link-streaming-upload-client/health.svg)](https://phpackages.com/packages/oneofftech-k-link-streaming-upload-client)
```

###  Alternatives

[knplabs/gaufrette

PHP library that provides a filesystem abstraction layer

2.5k39.8M123](/packages/knplabs-gaufrette)[google/cloud-storage

Cloud Storage Client for PHP

34390.8M124](/packages/google-cloud-storage)[illuminate/filesystem

The Illuminate Filesystem package.

15261.6M2.6k](/packages/illuminate-filesystem)[superbalist/flysystem-google-storage

Flysystem adapter for Google Cloud Storage

26320.6M30](/packages/superbalist-flysystem-google-storage)[creocoder/yii2-flysystem

The flysystem extension for the Yii framework

2931.7M62](/packages/creocoder-yii2-flysystem)[flowjs/flow-php-server

PHP library for handling chunk uploads. Works with flow.js html5 file uploads.

2451.6M15](/packages/flowjs-flow-php-server)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
