Skip to content

Commit 6e1ab40

Browse files
author
agrandiere
committed
Merge branch 'dev'
2 parents 9c81f35 + 1e0d4ef commit 6e1ab40

File tree

4 files changed

+41
-22
lines changed

4 files changed

+41
-22
lines changed

README.md

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,28 @@ Several moderation engines are available for you to choose from (nudity detectio
3434
```php
3535
# Detect nudity in an image
3636

37-
$output = $client->check(['nudity'])->image('http://img09.deviantart.net/2bd0/i/2009/276/c/9/magic_forrest_wallpaper_by_goergen.jpg')
37+
$output = $client->check(['nudity'])->set_url('http://img09.deviantart.net/2bd0/i/2009/276/c/9/magic_forrest_wallpaper_by_goergen.jpg')
3838

3939
# Detect nudity, weapons, alcohol, drugs, likely fruadulant users, celebrities and faces in an image, along with image properties and type
40-
$output = $client->check(['nudity', 'type', 'properties', 'wad', 'face', 'scam', 'celebrity'])->image('http://img09.deviantart.net/2bd0/i/2009/276/c/9/magic_forrest_wallpaper_by_goergen.jpg')
40+
$output = $client->check(['nudity', 'type', 'properties', 'wad', 'face', 'scam', 'celebrity'])->set_url('http://img09.deviantart.net/2bd0/i/2009/276/c/9/magic_forrest_wallpaper_by_goergen.jpg')
4141
```
4242

4343
## Moderate a local image:
4444
```php
4545
# Detect nudity in an image
46-
$output = $client->check(['nudity'])->image('/full/path/to/image.jpg')
46+
$output = $client->check(['nudity'])->set_file('/full/path/to/image.jpg')
4747

4848
# Detect nudity, weapons, alcohol, drugs and faces in an image, along with image properties and type
49-
$output = $client->check(['nudity', 'type', 'properties', 'wad', 'face'])->image('/full/path/to/image.jpg')
49+
$output = $client->check(['nudity', 'type', 'properties', 'wad', 'face'])->set_file('/full/path/to/image.jpg')
50+
```
51+
52+
## Moderate a binary image:
53+
```php
54+
# Detect nudity in an image
55+
$output = $client->check(['nudity'])->set_bytes($binary_image)
56+
57+
# Detect nudity, weapons, alcohol, drugs and faces in an image, along with image properties and type
58+
$output = $client->check(['nudity', 'type', 'properties', 'wad', 'face'])->set_bytes($binary_image)
5059
```
5160

5261
# Video and Stream Moderation

src/Check.php

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ class Check {
77
private $endpoint = 'https://api.sightengine.com/';
88
private $http;
99
private $models;
10+
private $url = '1.0/check.json';
1011

1112
function __construct($api_user, $api_secret, $models) {
1213
$this->api_user = $api_user;
@@ -15,22 +16,23 @@ function __construct($api_user, $api_secret, $models) {
1516
$this->models = implode(",", $models);
1617
}
1718

18-
public function image($image) {
19-
$url = '1.0/check.json';
19+
public function set_file($image) {
20+
$file = fopen($image, 'r');
21+
$r = $this->http->request('POST', $this->url, ['query' => ['api_user' => $this->api_user, 'api_secret' => $this->api_secret, 'models' => $this->models],'multipart' => [['name' => 'media','contents' => $file]]]);
2022

21-
if (filter_var($image, FILTER_VALIDATE_URL)) {
22-
$r = $this->http->request('GET', $url, ['query' => ['api_user' => $this->api_user,
23-
'api_secret' => $this->api_secret,
24-
'models' => $this->models,
25-
'url' => $image]]);
23+
return json_decode($r->getBody());
24+
}
25+
26+
public function set_url($imageUrl) {
27+
$r = $this->http->request('GET', $this->url, ['query' => ['api_user' => $this->api_user, 'api_secret' => $this->api_secret, 'models' => $this->models,'url' => $imageUrl]]);
28+
29+
return json_decode($r->getBody());
30+
}
2631

27-
return json_decode($r->getBody());
28-
} else {
29-
$file = fopen($image, 'r');
30-
$r = $this->http->request('POST', $url, ['query' => ['api_user' => $this->api_user, 'api_secret' => $this->api_secret, 'models' => $this->models],'multipart' => [['name' => 'media','contents' => $file]]]);
32+
public function set_bytes($image) {
33+
$r = $this->http->request('POST', $this->url, ['query' => ['api_user' => $this->api_user, 'api_secret' => $this->api_secret, 'models' => $this->models],'multipart' => [['name' => 'media','contents' => $image]]]);
3134

32-
return json_decode($r->getBody());
33-
}
35+
return json_decode($r->getBody());
3436
}
3537

3638
public function video($videoUrl, $callbackUrl) {

src/SightengineClient.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public function feedback($model, $modelClass, $image) {
2323
}
2424
else {
2525
$file = fopen($image, 'r');
26-
$r = $this->http->request('POST', $url, ['query' => ['api_user' => $this->api_user, 'api_secret' => $this->api_secret, 'model' => $model,'class' => $modelClass],'multipart' => [['name' => 'media','contents' => $file]]]);
26+
$r = $this->http->request('POST', $url, ['query' => ['api_user' => $this->api_user, 'api_secret' => $this->api_secret, 'model' => $model,'class' => $modelClass],'multipart' => [['name' => 'media','contents' => $file]]]);
2727

2828
return json_decode($r->getBody());
2929
}

tests/StackTest.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,31 @@ class StackTest extends TestCase
99
public function test_nudityModel()
1010
{
1111
$client = new SightengineClient('1234', 'test');
12+
$binaryFile = fopen(__DIR__ . '/assets/image.jpg', 'r'); // stream handles are returned by fopen()
1213

13-
$output = $client->check(['nudity'])->image('https://sightengine.com/assets/img/examples/example5.jpg');
14+
$output = $client->check(['nudity'])->set_url('https://sightengine.com/assets/img/examples/example5.jpg');
1415
$this->assertEquals('success', $output->status);
1516

16-
$output2 = $client->check(['nudity'])->image(__DIR__ . '/assets/image.jpg');
17+
$output2 = $client->check(['nudity'])->set_file(__DIR__ . '/assets/image.jpg');
1718
$this->assertEquals('success', $output2->status);
19+
20+
$output3 = $client->check(['nudity','wad','properties','type','face', 'celebrities'])->set_bytes($binaryFile);
21+
$this->assertEquals('success', $output3->status);
1822
}
1923

2024
public function test_allModel()
2125
{
2226
$client = new SightengineClient('1234', 'test');
27+
$binaryFile = fopen(__DIR__ . '/assets/image.jpg', 'r');
2328

24-
$output = $client->check(['nudity','wad','properties','type','face', 'celebrities'])->image('https://sightengine.com/assets/img/examples/example5.jpg');
29+
$output = $client->check(['nudity','wad','properties','type','face', 'celebrities'])->set_url('https://sightengine.com/assets/img/examples/example5.jpg');
2530
$this->assertEquals('success', $output->status);
2631

27-
$output2 = $client->check(['nudity','wad','properties','type','face', 'celebrities'])->image(__DIR__ . '/assets/image.jpg');
32+
$output2 = $client->check(['nudity','wad','properties','type','face', 'celebrities'])->set_file(__DIR__ . '/assets/image.jpg');
2833
$this->assertEquals('success', $output2->status);
34+
35+
$output3 = $client->check(['nudity','wad','properties','type','face', 'celebrities'])->set_bytes($binaryFile);
36+
$this->assertEquals('success', $output3->status);
2937
}
3038

3139
public function test_feedback()

0 commit comments

Comments
 (0)