https://github.com/elgigi/harparser
Library to parse and generate HAR file format.
https://github.com/elgigi/harparser
har http http-logs log php
Last synced: 7 months ago
JSON representation
Library to parse and generate HAR file format.
- Host: GitHub
- URL: https://github.com/elgigi/harparser
- Owner: ElGigi
- License: mit
- Created: 2021-07-20T21:54:45.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-03-22T11:54:49.000Z (almost 2 years ago)
- Last Synced: 2024-10-29T00:57:34.783Z (over 1 year ago)
- Topics: har, http, http-logs, log, php
- Language: PHP
- Homepage:
- Size: 581 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# HAR Parser
[](https://github.com/ElGigi/HarParser/releases)
[](https://github.com/ElGigi/HarParser/blob/main/LICENSE)
[](https://github.com/ElGigi/HarParser/actions/workflows/tests.yml?query=branch%3Amain)
[](https://app.codacy.com/gh/ElGigi/HarParser)
[](https://packagist.org/packages/elgigi/har-parser)
Library to parse and generate [HAR file format](https://en.wikipedia.org/wiki/HAR_(file_format)).
## Usage
Load you HAR file with an `Parser` object or with `Log` entity.
With `Parser` class:
```php
use ElGigi\HarParser\Parser;
$harFile = new Parser();
$log = $harFile->parse('/path/of/my/file.har', contentIsFile: true);
$log = $harFile->parse(['my' => 'har decoded']);
```
With `Log` entity class:
```php
use ElGigi\HarParser\Entities\Log;
$log = Log::load(json_decode(file_get_contents('/path/of/my/file.har'), true));
```
## Entities
The HAR file is distributed in several entities:
- Log
- Creator
- Browser
- Page[]
- PageTimings
- Entry[]
- Request
- Cookie[]
- Header[]
- PostData
- Response
- Cookie[]
- Header[]
- Content
- Timings
## Builder
Two builders are available to construct an HAR file from entities:
- `Builder`: build a `Log` entity from others entities
- `BuilderStream`: build directly the JSON file in stream to prevent memory usage
Both implements `BuilderInterface`:
- `BuilderInterface::reset(): void`: reset builder data
- `BuilderInterface::setVersion(string $version): void`: define version of HAR file (default: 1.2)
- `BuilderInterface::setCreator(string $creator): void`: set creator entity
- `BuilderInterface::setBrowser(string $browser): void`: set browser entity
- `BuilderInterface::addPage(Page ...$page): void`: add a page entity (or multiple pages)
- `BuilderInterface::addEntry(Entry ...$entry): void`: add an entry entity (or multiple entries)
- `BuilderInterface::setComment(?string $comment): void`: define comment of HAR file
For stream builder, the constructor attempt a valid resource (writeable and seekable).
For standard builder, the constructor accept an HAR file, for example, complete an existent HAR.
## Anonymize HAR
In some cases, like unit tests, you need to anonymize your HAR file.
The `Anonymizer` class it's do for that!
```php
class Anonymizer
{
/**
* Add header to redact.
*
* @param string ...$regex
*
* @return void
*/
public function addHeaderToRedact(string ...$regex): void;
/**
* Add query string to redact.
*
* @param string ...$regex
*
* @return void
*/
public function addQueryStringToRedact(string ...$regex): void;
/**
* Add post data to redact.
*
* @param string ...$regex
*
* @return void
*/
public function addPostDataToRedact(string ...$regex): void;
/**
* Add accepted mime.
*
* @param string ...$mime
*
* @return void
*/
public function addAcceptedMime(string ...$mime): void;
/**
* Add content to redact.
*
* @param array $regexes
*
* @return void
*/
public function addContentToRedact(array $regexes): void;
/**
* Add callback.
*
* @param callable ...$callback
*
* @return void
*/
public function addCallback(callable ...$callback): void;
/**
* Anonymize HAR file.
*
* @param Log $log
*
* @return Log
* @throws InvalidArgumentException
*/
public function anonymize(Log $log): Log;
}
```