rips/connector
rips/connector is a lightweight Laravel/PHP package that provides a simple integration layer for connecting your application to Rips services. It offers straightforward configuration and a clean, framework-friendly API to reduce boilerplate.
rips/connector is a thin PHP client for the RIPS security-scanner HTTP API. It is a small, low-traffic package (4 stars, 0 dependents), so treat it as a reference wrapper rather than a maintained SDK — plan to read its source before relying on it.
composer require rips/connector
vendor/rips/connector/ and locate the primary client class (conventionally something like Connector, Client, or RipsClient under src/). The README is the fastest way to the exact class name and constructor signature; if it is sparse, the public methods on that class are your real API surface.If step 3 fails (no live endpoint), stop here: there is nothing to integrate against, and wrapping a dead API adds no value.
Because the package is a low-level HTTP wrapper, most day-to-day leverage comes from wrapping it, not calling it directly.
Bind it as a singleton in the container. Register the client in a service provider and inject the base URL / token from config or env vars:
$this->app->singleton(RipsConnector::class, fn ($app) => new RipsConnector(
config('services.rips.endpoint'),
config('services.rips.token'),
));
Isolate the scan lifecycle behind your own service. RIPS-style scanners are typically submit → poll → fetch. Wrap that in a small service class (ScanService) so controllers, jobs, and CLI commands share one flow and one retry policy:
class ScanService
{
public function __construct(private RipsConnector $client) {}
public function scan(string $path): ScanResult
{
$id = $this->client->submit($path);
return $this->pollUntilComplete($id);
}
}
Run scans as queued jobs. Scans are slow and network-bound. Dispatch a RunRipsScan job, store the returned scan ID on an Eloquent model, and poll in a follow-up job or scheduled command. Never block a web request on a scan.
Integrate in CI/CLI before deployments. The highest-value use is a console command that submits the build artifact and fails the pipeline on high-severity findings. Map the API's severity field to an exit code for your CI step.
Normalize the response before storing it. Persist findings into your own tables (scan id, severity, file, line, description) rather than keeping opaque API payloads — this keeps your dashboards and reports independent of the API's evolving response format.
Pair with a generic Guzzle/HTTP client you control. If the packaged client's methods are too narrow, keep its config/auth handling but issue raw requests through Guzzle to the documented endpoints; you get retries, middleware, logging, and timeouts for free.
curl before investing in integration.composer.json, and be prepared to fork or inline the client class (it is small enough).composer.json for conflicts with your app and prefer updating to your own Guzzle major.debug option or a logging middleware to see the exact request/response. Auth errors and payload-shape errors frequently present identically as generic exceptions.config/services.php.429/503. Do not rely on the package for retry logic unless you've read and verified it.vendor/.How can I help you explore Laravel packages today?