Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
116 commits
Select commit Hold shift + click to select a range
197585b
init
Apr 16, 2020
c3c7804
Add php 7.3 to defaults
Apr 16, 2020
558dff9
Add gitattributes file
May 14, 2020
3d20d3a
Group gitattributes
May 14, 2020
6754b25
Add ts file to gitattributes
May 14, 2020
a763ddb
Merge pull request #3 from 123inkt/gitattributes
frankdekker May 14, 2020
4946fd5
Add phpcs, phpstan, phpmd
May 14, 2020
2af5db6
Remove PHP7.0 build/requirement
May 14, 2020
87e3af4
Update scripts to start with "check" or "fix"
May 14, 2020
2e710f5
Add auto-assign action
May 14, 2020
a2ecbf6
Only auto-assign on PRs to master
May 14, 2020
3d07166
Only add two reviewers instead of all
May 14, 2020
0c33528
Move auto-assign config to separate file
May 14, 2020
8c99b4a
Fix auto assign workflow path
May 14, 2020
54d610f
Fix capitalization of github username because auto-assign doesn't acc…
May 14, 2020
fb26fb5
Change auto-assign amount to 1 as that is the current limit for priva…
May 14, 2020
47ea1ef
Merge pull request #4 from 123inkt/add-code-tools
PrinsFrank May 14, 2020
1c5bb23
Merge pull request #5 from 123inkt/auto-assign
PrinsFrank May 14, 2020
6f07419
Remove beStrictAboutCoversAnnotation from phpunit.xml. The regular @c…
frankdekker May 18, 2020
1c2e5a0
Merge pull request #6 from 123inkt/update-phpunit-configuration
frankdekker May 18, 2020
1d92df5
Revert "Remove beStrictAboutCoversAnnotation from phpunit.xml."
PrinsFrank May 18, 2020
994397e
Merge pull request #7 from 123inkt/revert-6-update-phpunit-configuration
PrinsFrank May 18, 2020
c170f19
Remove beStrictAboutCoversAnnotation from phpunit.xml.
frankdekker May 18, 2020
1d301c3
Add requirements matrix for tests
May 18, 2020
1170621
Remove trailing slash phpunit.xml.dist
May 18, 2020
e82e5c4
Add composer stability flags to matrix and split up quality checks to…
May 18, 2020
a874bcd
Merge pull request #10 from 123inkt/remove-trailing-slash-phpunit
PrinsFrank May 19, 2020
e153227
Merge pull request #8 from 123inkt/update-phpunit-config
PrinsFrank May 19, 2020
e1cf4b5
Merge pull request #9 from 123inkt/add-requirements-matrix
PrinsFrank May 20, 2020
71aaa7c
Update php codesniffer for several PSR12 fixes
Jun 3, 2020
90e4eae
Merge pull request #11 from 123inkt/update-codesniffer-for-several-ps…
PrinsFrank Jun 3, 2020
dd1a850
Fix yml indenting for test workflow job
Jun 4, 2020
2f74ad5
Merge pull request #12 from 123inkt/fix-yml-indenting-for-test-workfl…
PrinsFrank Jun 4, 2020
1d47745
Don't auto assign when already assigned
Jun 4, 2020
395b757
Don't auto assign when already assigned
Jun 4, 2020
07b50d8
Don't auto assign when already assigned
Jun 4, 2020
557797b
Don't auto assign when already assigned
Jun 4, 2020
3475417
Don't auto assign when already assigned
Jun 4, 2020
ab26cb2
Don't auto assign when already assigned
Jun 4, 2020
96c52f9
Merge pull request #15 from 123inkt/dont-auto-assign-when-already-ass…
PrinsFrank Jul 12, 2020
2ebb2fe
Change composer check command to array shorthand notation. fixes #16
Aug 4, 2020
a643af4
Remove PHPStan symfony from composer
Aug 4, 2020
b93ffbb
Disable coverage on test runs
Aug 4, 2020
a332fd3
Merge pull request #17 from 123inkt/change-composer-check-to-shorthan…
PrinsFrank Aug 4, 2020
fc15ee4
Merge pull request #18 from 123inkt/remove-phpstan-symfony-from-composer
PrinsFrank Aug 4, 2020
f73a0cf
Merge pull request #19 from 123inkt/disable-coverage-on-test-runs
PrinsFrank Aug 4, 2020
568f3ad
Remove issue templates as those are moved to the .github repo
PrinsFrank Aug 19, 2020
8980f6a
Add CODEOWNERS file to auto assign the Reviewer team to all new PRs
PrinsFrank Aug 19, 2020
cdea4ba
Merge pull request #20 from 123inkt/remove-issue-templates-that-are-m…
PrinsFrank Aug 19, 2020
d84fe0d
Merge pull request #21 from 123inkt/add-code-owners
PrinsFrank Aug 19, 2020
6121c27
Fix round robin assign
PrinsFrank Aug 19, 2020
29ce3ba
Merge pull request #22 from 123inkt/fix-round-robin-assign
PrinsFrank Aug 19, 2020
eacb5b2
bump minimum php version to 7.2
frankdekker Sep 1, 2020
e47bf50
update github work flow and readme.md
frankdekker Sep 1, 2020
0171389
Merge pull request #23 from 123inkt/php-version-and-gitignore-updates
frankdekker Sep 2, 2020
55df693
Remove duplicate auto assign from the template repository as it is no…
Oct 22, 2020
42723fb
Merge pull request #24 from 123inkt/remove-duplicate-auto-assign
PrinsFrank Oct 23, 2020
d2d2b09
Php update (#25)
bram123 Nov 17, 2020
37eabca
US75628_TT_upgrade-to-php-7.4 (#26)
davekok Jul 27, 2021
b4bb027
Update composer.json (#27)
bram123 Sep 17, 2021
9a6274f
Update the working at 123inkt url (#28)
frankdekker Dec 8, 2021
d5a074c
Add 8.1 to skeleton test.yml (#29)
bram123 Dec 8, 2021
e0864f1
Update phpunit.xml.dist
bram123 Dec 8, 2021
c5bbf45
Merge pull request #30 from 123inkt/bram123-patch-1
frankdekker Dec 8, 2021
24e79eb
Update phpstan version
frankdekker Feb 22, 2022
81fa8d0
Remove 7.4 from minimum version
frankdekker Feb 22, 2022
62d6e65
Update composer config
frankdekker Feb 22, 2022
2405edd
Update composer config
frankdekker Feb 23, 2022
427cabe
Merge pull request #31 from 123inkt/Update-phpstan-version
frankdekker Feb 24, 2022
b6e9fff
Update developers and recruitment url
frankdekker Feb 24, 2022
38d45a3
Merge pull request #32 from 123inkt/Update-company-it-info
frankdekker Feb 25, 2022
dc178de
Update phpmd and phpcs rules
frankdekker Feb 27, 2022
54bb452
Merge pull request #33 from 123inkt/Update-phpmd-and-phpcs-rules
frankdekker Mar 6, 2022
d8bf50e
Improve phpmd ruleset
frankdekker Jun 22, 2022
6e57238
Add phpunit file coverage inspection
frankdekker Jun 22, 2022
c1cd31f
Only run phpfci when coverage.xml exists
frankdekker Jun 25, 2022
5856e3e
Only run phpfci when coverage.xml exists
frankdekker Jun 25, 2022
3e2b41c
Only run phpfci when coverage.xml exists
frankdekker Jun 25, 2022
61c4bc6
Merge pull request #34 from 123inkt/Update-phpmd-ruleset
frankdekker Jun 25, 2022
4ede640
Merge pull request #35 from 123inkt/Add-phpunit-file-coverage-inspection
frankdekker Jun 25, 2022
9d5f52e
Update test.yml (#36)
bram123 Nov 6, 2022
a3f34aa
Add PHP 8.2 to skeleton
bram123 Feb 4, 2023
948bf8d
Create renovate.json
bram123 Feb 6, 2023
1018bc4
Update actions/checkout action to v3 (#43)
renovate[bot] Feb 6, 2023
68b2c53
Update dependency digitalrevolution/phpunit-file-coverage-inspection …
renovate[bot] Mar 28, 2023
a062c3a
Update skeleton php and package version
frankdekker Nov 27, 2023
f687fa6
Update skeleton php and package version
frankdekker Nov 27, 2023
1e72b98
Include PHP8.3 in test matrix
frankdekker Nov 28, 2023
b30e175
Merge pull request #48 from 123inkt/Update-skeleton-package-versions
frankdekker Nov 28, 2023
ec73639
Update test.yml (#49)
bram123 Dec 8, 2023
d2d2f87
Update phpstan (#52)
bram123 Dec 30, 2024
a19d02b
Update dependency phpunit/phpunit to v12 (#53)
renovate[bot] Feb 7, 2025
e67eec2
Setup the initial repo for publication
RubenKluft May 21, 2025
db75374
Remove pmd-gitlab-renderer to fix github pipeline
RubenKluft May 21, 2025
023e154
Update pipeline to php version >=8.3
RubenKluft May 21, 2025
0aa5205
Update pipeline to run only unit:test as coverage is separate
RubenKluft May 21, 2025
e045267
Fix no coverage engine warning by adding pcov as coverage option
RubenKluft May 21, 2025
c16f5f9
Update php version in test pipeline
RubenKluft May 21, 2025
a9421a8
Fix incorrect paths
RubenKluft May 21, 2025
1c4ac0a
Fix incorrect paths
RubenKluft May 21, 2025
72531f6
update editor config, gitattributes and phpcs to match company standa…
RubenKluft May 21, 2025
7d4aeac
Merge remote-tracking branch 'skeleton/master' into init-repo
RubenKluft May 21, 2025
3d7f3ce
update phpunit.dist.xml to be more verbose by default (#56)
RubenKluft May 21, 2025
354baf3
Merge remote-tracking branch 'skeleton/master' into init-repo
RubenKluft May 21, 2025
8915a60
Merge remote-tracking branch 'origin/master' into init-repo
RubenKluft May 21, 2025
a63674d
Merge remote-tracking branch 'origin/master' into init-repo
RubenKluft May 21, 2025
9e20d2c
Lower SlevomatCodingStandard.Complexity.Cognitive to 6 for library
RubenKluft May 21, 2025
2a92985
Remove .gitkeep
RubenKluft May 21, 2025
b096509
Apply editor config (#57)
RubenKluft May 21, 2025
60edcb2
Merge remote-tracking branch 'skeleton/master' into init-repo
RubenKluft May 21, 2025
f2bb41e
Merge remote-tracking branch 'origin/master' into init-repo
RubenKluft May 21, 2025
53c7497
Fix incorrect method name in readme
RubenKluft May 21, 2025
3e554fd
Fix incorrect method name in readme
RubenKluft May 21, 2025
e9e9f61
Fix path in phpstan.neon
RubenKluft May 21, 2025
8c28371
Allow phpunit 12
RubenKluft May 21, 2025
002996d
Revert "Allow phpunit 12"
RubenKluft May 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: [ '8.1', '8.2', '8.3', '8.4' ]
php-versions: [ '8.3', '8.4' ]
composer-flags: [ '', '--prefer-lowest' ]
steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -46,17 +46,17 @@ jobs:
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.2
php-version: 8.3
coverage: pcov

- name: Install dependencies
run: composer update --prefer-dist --no-progress --no-suggest --prefer-stable

- name: Run test suite
run: php -dpcov.enabled=1 -dpcov.exclude="~vendor~" vendor/bin/phpunit --testsuite unit --coverage-clover ./.coverage/coverage.xml
run: php -dpcov.enabled=1 -dpcov.exclude="~vendor~" vendor/bin/phpunit --testsuite unit --coverage-clover ./coverage.xml

- name: Check coverage
run: test ! -f ./.coverage/coverage.xml || php vendor/bin/phpfci inspect ./.coverage/coverage.xml ./.coverage/phpfci.xml --exit-code-on-failure
run: test ! -f ./.coverage/coverage.xml || php vendor/bin/phpfci inspect ./coverage.xml ./phpfci.xml --exit-code-on-failure

quality:
name: Quality checks
Expand All @@ -67,7 +67,7 @@ jobs:
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.1
php-version: 8.3
coverage: none

- name: Install dependencies
Expand Down
5 changes: 3 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/.idea
/vendor
/composer.lock
/phpunit.xml
/.phpunit.result.cache
/.phpunit.cache
/composer.lock
/coverage.xml
89 changes: 88 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,91 @@
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%208.1-8892BF)](https://php.net/)
# Digitalrevolution IPP library

## Installation

```bash
composer require digitalrevolution/ipp
```

## Usage

### Initialize the library

```php
$server = new IppServer();
$server->setUri('https://cups.local');
$server->setUsername('admin'); // optional
$server->setPassword('admin'); // optional

$ipp = new Ipp($server, new Psr18Client());
```

### Print a file

```php
// define a printer
$printer = new IppPrinter();
$printer->setHostname('my.printer');

// print a file on the selected printer
$ippFile = new IppPrintFile(file_get_contents('/dir/file.ps'), FileTypeEnum::PS);
$ipp->print($printer, $ippFile);
```

### Fetch job attributes

```php
$printJob = $ipp->print($printer, $ippFile);
$updatedPrintJob = $ipp->getJobAttributes($printJob->getJobUri());
```

### Register a printer with cups

```php
$printer = new IppPrinter();
$printer->setHostname('my.printer');
$printer->setDeviceUri('my.uri');
$printer->setLocation('location');

$ipp->createPrinter($printer);
```

### Delete a printer

```php
$printer = new IppPrinter();
$printer->setHostname('my.printer');

$ipp->deletePrinter($printer);
```

### Contributing

See [contributing.md](./CONTRIBUTING.md)
Pull requests welcome for adding standard IPP Operations

### Creating a custom IPP operation

This project is created to be easily extensible, adding a new IPP operation is as simple as making sure it has an identifier in IppOperationEnum
Then adding any Job, Printer or Operation Attributes as required by your standard.
Finally sending the request and parsing the response using the standard parser.

```php
public function myOperation(): IppResponseInterface
$operation = new IppOperation(IppOperationEnum::OperationType);
$operation->addOperationAttribute(new IppAttribute(IppTypeEnum::Charset, 'attributes-charset', 'utf-8'));

$response = $this->client->sendRequest(
new Request(
'POST',
$this->server->getUri(),
['Content-Type' => 'application/ipp'],
(string)$operation
)
);

return $this->parser->getResponse($response->getBody()->getContents());
}
```

## About us

Expand Down
57 changes: 40 additions & 17 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,26 +1,35 @@
{
"name": "digitalrevolution/skeleton",
"description": "Digital Revolution skeleton package",
"name": "digitalrevolution/ipp",
"description": "Digital Revolution IPP library",
"type": "library",
"license": "MIT",
"minimum-stability": "stable",
"config": {
"sort-packages": true,
"process-timeout": 0,
"allow-plugins": {
"phpstan/extension-installer": true
}
"phpstan/extension-installer": true,
"dealerdirect/phpcodesniffer-composer-installer": true,
"digitalrevolution/php-codesniffer-baseline": true
},
"lock": false
},
"require": {
"php": ">=8.1"
"php": "^8.3",
"nyholm/psr7": "^1.8",
"psr/http-client": "^1.0",
"psr/log": "^3.0",
"digitalrevolution/utils": "^1.0"
},
"require-dev": {
"digitalrevolution/phpunit-file-coverage-inspection": "^v2.0.0",
"phpmd/phpmd": "^2.14",
"phpstan/extension-installer": "^1.3",
"phpstan/phpstan": "^2.0",
"phpstan/phpstan-phpunit": "^2.0",
"phpstan/phpstan-strict-rules": "^2.0",
"phpunit/phpunit": "^11.5 || ^12.0",
"digitalrevolution/accessorpair-constraint": "^v2.4.1",
"digitalrevolution/phpunit-file-coverage-inspection": "^3.0",
"digitalrevolution/php-codesniffer-baseline": "^1.1",
"phpmd/phpmd": "^2.12",
"phpstan/extension-installer": "^1.2",
"phpstan/phpstan": "^1.9.1",
"phpstan/phpstan-phpunit": "^1.2.2",
"phpunit/phpunit": "^11.5",
"roave/security-advisories": "dev-latest",
"squizlabs/php_codesniffer": "^3.7",
"slevomat/coding-standard": "^8.16"
Expand All @@ -31,19 +40,33 @@
"@baseline:phpmd"
],
"baseline:phpstan": "phpstan --generate-baseline",
"baseline:phpmd": "phpmd src,tests xml phpmd.xml.dist --generate-baseline",
"baseline:phpmd": "phpmd src,tests xml phpmd.xml --generate-baseline",
"check": [
"@check:phpstan",
"@check:phpmd",
"@check:phpcs"
],
"check:phpstan": "phpstan analyse",
"check:phpmd": "phpmd src,tests text phpmd.xml.dist --suffixes php",
"check:phpmd": "phpmd src,tests text phpmd.xml --suffixes php",
"check:phpcs": "phpcs src tests",
"fix": "@fix:phpcbf",
"fix:phpcbf": "phpcbf src tests",
"test": "phpunit",
"test:integration": "phpunit --testsuite integration",
"test:unit": "phpunit --testsuite unit"
"test": "phpunit --testsuite unit",
"test:coverage": [
"phpunit --testsuite unit --coverage-clover coverage.xml",
"phpfci inspect coverage.xml --exit-code-on-failure"
],
"test:phpfci": "phpfci inspect coverage.xml --exit-code-on-failure"
},
"autoload": {
"psr-4": {
"DR\\Ipp\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"DR\\Ipp\\Tests\\Unit\\": "tests/Unit/",
"DR\\Ipp\\Tests\\": "tests/"
}
}
}
4 changes: 2 additions & 2 deletions phpcs.xml.dist → phpcs.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
</rule>
<rule ref="SlevomatCodingStandard.Complexity.Cognitive">
<properties>
<property name="warningThreshold" value="16"/>
<property name="errorThreshold" value="16"/>
<property name="warningThreshold" value="6"/>
<property name="errorThreshold" value="6"/>
</properties>
</rule>
<rule ref="SlevomatCodingStandard.Arrays.DisallowImplicitArrayCreation"/>
Expand Down
1 change: 0 additions & 1 deletion phpfci.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpfci xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="vendor/digitalrevolution/phpunit-file-coverage-inspection/resources/phpfci.xsd"
min-coverage="100">
Expand Down
4 changes: 2 additions & 2 deletions phpmd.xml.dist → phpmd.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

<rule ref="rulesets/controversial.xml"/>
<rule ref="rulesets/design.xml">
<exclude name="CouplingBetweenObjects" />
<exclude name="CouplingBetweenObjects"/>
</rule>
<rule ref="rulesets/design.xml/CouplingBetweenObjects">
<properties>
Expand All @@ -27,7 +27,7 @@
</rule>
<rule ref="rulesets/naming.xml/ShortVariable">
<properties>
<property name="exceptions" value="id,e,i,x,y,z" />
<property name="exceptions" value="id,e,i,x,y,z"/>
</properties>
</rule>
<rule ref="rulesets/naming.xml/LongVariable">
Expand Down
2 changes: 1 addition & 1 deletion phpstan.neon
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ parameters:
treatPhpDocTypesAsCertain: false
paths:
- src
- test
- tests
File renamed without changes.
Empty file removed src/.gitkeep
Empty file.
90 changes: 90 additions & 0 deletions src/Entity/IppPrintFile.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
<?php

declare(strict_types=1);

namespace DR\Ipp\Entity;

use DR\Ipp\Enum\FileTypeEnum;
use DR\Ipp\Enum\IppAttributeTypeEnum;
use DR\Ipp\Protocol\IppAttribute;

class IppPrintFile
{
/** @var array<int, IppAttribute[]> $ippAttributes */
private array $ippAttributes = [
IppAttributeTypeEnum::OperationAttribute->value => [],
IppAttributeTypeEnum::JobAttribute->value => [],
IppAttributeTypeEnum::PrinterAttribute->value => [],
];

public function __construct(
private string $data,
private FileTypeEnum $fileType,
private ?string $fileName = null,
private int $numberOfCopies = 1
) {
}

public function getFileName(): ?string
{
return $this->fileName;
}

public function setFileName(?string $fileName): self
{
$this->fileName = $fileName;

return $this;
}

public function getData(): string
{
return $this->data;
}

public function setData(string $data): self
{
$this->data = $data;

return $this;
}

public function getFileType(): FileTypeEnum
{
return $this->fileType;
}

public function setFileType(FileTypeEnum $fileType): self
{
$this->fileType = $fileType;

return $this;
}

public function getNumberOfCopies(): int
{
return $this->numberOfCopies;
}

public function setNumberOfCopies(int $numberOfCopies): self
{
$this->numberOfCopies = $numberOfCopies;

return $this;
}

/**
* @return IppAttribute[]
*/
public function getIppAttributes(IppAttributeTypeEnum $type): array
{
return $this->ippAttributes[$type->value];
}

public function addAttribute(IppAttributeTypeEnum $type, IppAttribute $ippAttribute): self
{
$this->ippAttributes[$type->value][] = $ippAttribute;

return $this;
}
}
Loading