Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Linkedin Api Client Laravel Package

happyr/linkedin-api-client

A PHP client for the LinkedIn API that handles OAuth authentication and simplifies posting, profile access, and other v2 endpoints, giving Laravel and plain PHP apps a clean, framework-agnostic wrapper around LinkedIn's REST API.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Evidence base and confidence. The only artifact available for this assessment is the 1.0.0 release note: "Removed php-http/message from composer.json." No prior assessment, repository metadata, source diff, changelog, or test results were supplied. Everything below is therefore a structured hypothesis to be validated against the package's composer.json, CHANGELOG, and CI matrix before any adoption decision. Confidence in the specific claims is low-to-moderate; confidence in the questions that must be answered is high.

What the change most likely means. php-http/message is the php-http ecosystem's PSR-7 message/stream implementation and factory package, and it transitively pulls php-http/message-factory (long deprecated) and psr/http-message 1.x. Removing it from composer.json typically signals one of three things:

  1. Dependency hygiene / PSR-7 v2 alignment — the package no longer instantiates PSR-7 messages directly, or has moved to psr/http-factory (PSR-17) for factory injection instead of the concrete php-http factories. This is the modern, and most probable, trajectory for a Laravel HTTP-adjacent package.
  2. Dead dependency removal — the package never actually used it; this is pure weight reduction and low risk.
  3. Abstraction change — the package now accepts/returns PSR-7 objects supplied by the host application rather than constructing them. This is a genuine API surface change.

Cases 1 and 2 are low risk. Case 3 is a breaking change that would normally warrant a major-version bump — which the jump to 1.0.0 would conveniently absorb.

Architecture fit. For a Laravel application the relevant seam is Guzzle 7 / Illuminate\Http\Client, which is PSR-7 v2-compatible and no longer requires php-http/message. If this package is aligning to that baseline, it reduces the chance of psr/http-message version conflicts in the root project and removes the deprecated message-factory branch from the dependency graph. That is a net architectural improvement — fewer moving parts, one fewer deprecated package in the SBOM.

Integration feasibility. Composer-level integration is trivial: composer require and resolve. The feasibility question is not installation but runtime behavioural parity. Removing a dependency from composer.json cannot break the library's own tests unless they were silently relying on transitive autoloading — but it absolutely can break the consumer's build if the consumer's code or another dependency was leaning on php-http/message being present transitively. Transitive dependency reliance is common in Laravel codebases that use Http:: facades or Guzzle middleware and incidentally use Http\Message\... classes without declaring them.

Technical risk. Ranked:

  • High — transitive dependency removal (consumer-side). Any application or third-party package that imports Http\Message\MessageFactory, Http\Message\StreamFactory, or Http\Message\Authentication without a direct require will fail at autoload with a class-not-found error after upgrade. This is the dominant risk and it is invisible until runtime.
  • Medium — PSR-7 interface version shift. If removal accompanied a move to psr/http-message ^2.0, any code type-hinting Psr\Http\Message\MessageInterface and also pinned to a 1.x-only consumer (older Guzzle, some SDKs) will hit an unsatisfiable Composer constraint. composer why-not psr/http-message 1.0 is the diagnostic.
  • Medium — silent behavioural drift. If the package previously built messages via php-http factories and now builds them differently (or expects callers to supply them), header normalisation, stream handling, and multipart encoding can change subtly. Golden-file or contract tests are the only reliable detector.
  • Low — 1.0.0 semver signalling. A 1.0.0 tag is a stability commitment. Verify it is a deliberate declaration of API stability and not a cosmetic version bump, and check whether pre-1.0 consumers were given a migration note.
  • Low — abandonment / maintenance signal. Confirm the repository is actively maintained and that the removal is a considered cleanup rather than the first step in a hand-off.

Key questions for the maintainer (or for a spike to answer).

  1. Which of the three interpretations above is correct — was php-http/message genuinely unused, or has the abstraction changed?
  2. Did psr/http-message move to ^2.0? What is the resulting constraint set?
  3. Is the public API identical between the last 0.x/prior release and 1.0.0? Show the diff of public class signatures.
  4. What replaces the php-http factories — PSR-17 http-factory, a Laravel-native Illuminate\Http\Client path, or nothing?
  5. Is there a documented migration guide for 1.0.0, and does it mention this dependency?
  6. What is the CI matrix (PHP versions, Laravel versions, dependency-resolution strategy — lowest and highest)? A --prefer-lowest job is the tell for whether constraint combinations are actually tested.
  7. Are there security advisories or SBOM attestations, and does the project run composer audit in CI?

Integration Approach

Stack fit. This package is a plausible fit for a Laravel 10/11 codebase on PHP 8.1+ where the HTTP layer already runs through Guzzle 7.5+ or Illuminate\Http\Client. It is a poor fit if the application is on Laravel 8/9 with an older Guzzle pinned to PSR-7 1.x, or if other dependencies still depend on php-http/message-factory. Establish the target stack before evaluating anything else.

Migration path. Three-phase, cheap:

  1. Static analysis pass — grep the codebase and vendor/ for Http\Message\, Http\Discovery\, and php-http. Run composer why php-http/message against the current lock file to identify which packages pull it in and whether any of them are this package.
  2. Constraint dry-run — in a branch, add the package at 1.0.0 with --dry-run first, then resolve. Inspect the resulting diff of composer.lock focusing on psr/http-message, guzzlehttp/psr7, php-http/*, and symfony/*. A clean resolve with no unrelated downgrades is the strongest early signal.
  3. Behavioural verification — run the application's existing integration tests plus a targeted suite exercising request construction, multipart/stream uploads, and header handling. If coverage is thin there, add characterization tests before upgrading, not after.

Compatibility. Two axes to pin down and record explicitly: PHP version floor and Laravel version ceiling/floor. Also check whether the package declares illuminate/support with a broad constraint or a tight one — broad constraints (^9.0|^10.0|^11.0) age well; exact pins do not. Verify the package does not itself carry a hard pin on psr/http-message that constrains the wider graph.

Sequencing. This is a low-blast-radius change and does not need to be gated behind other work. Recommended order:

  • Complete step 1 (static analysis) as a 1–2 hour spike → decides go/no-go cheaply.
  • If clean, upgrade in an isolated branch and run the full CI suite.
  • Ship behind the normal release process; no feature flag warranted, since the risk is at build/autoload time, not per-request.
  • If step 1 surfaces consumer code importing Http\Message\* directly, either add php-http/message as an explicit direct dependency in the root composer.json (pinning it deliberately rather than inheriting it) or refactor those call sites to PSR-17/PSR-18. The former is a one-line unblock; the latter is the correct long-term fix and should be scheduled separately.

Operational Impact

Maintenance. Net positive. Removing php-http/message prunes a deprecated transitive branch (message-factory) that otherwise generates recurring Dependabot noise and security-advisory triage for code you do not call. Fewer transitive packages also means a smaller SBOM, which matters if the organisation has supply-chain attestation or SLSA-style requirements. Confirm the dependency is not re-introduced transitively via another path — composer show --tree php-http/message after upgrade is the check.

Support. Low support surface: this is a composer-level change with no runtime configuration, no new env vars, no migrations, no queue/worker implications. The support burden is concentrated entirely in the upgrade window — expect a small number of "Class 'Http\Message...' not found" tickets from teams with stale branches, and pre-empt them with a one-paragraph internal release note naming the removed package.

Scaling. Neutral. Removing a message-factory package does not affect throughput, memory, connection pooling, or worker concurrency. If the package sits on a request hot path, the PSR-7 message construction cost is unchanged in kind; only the concrete implementation may differ. There is no horizontal-scaling concern here.

Failure modes. Enumerate them for on-call:

  • Build-time (most likely): Composer cannot resolve constraints, typically a psr/http-message 1.x vs 2.x conflict. Symptom: composer update fails with a dependency-graph explanation. Fix: unpin the conflicting downstream dependency, or composer why-not.
  • Autoload-time: class-not-found from an undeclared transitive import. Symptom: fatal on first request to an affected route, passes CI if the route is untested. Fix: add the direct dependency or refactor.
  • Runtime behavioural: differing header casing, chunked vs content-length encoding, stream rewind semantics, or multipart boundary formatting. Symptom: downstream API rejections or subtly malformed payloads — the hardest to catch and the reason for the characterization tests.
  • Rollback: trivial — revert the composer.lock change. Keep the branch so rollback is a revert, not a re-derivation.

Ramp-up. Minimal engineering onboarding cost; there is no new concept to learn in the low-risk interpretations. Budget roughly half a day for a competent PHP engineer: 1–2 hours for the static-analysis spike, 1–2 hours for the branch upgrade and CI run, 1–2 hours for targeted behavioural tests if coverage is thin. Add one to two days contingency if the maintainer's answer to question 1 is that the abstraction changed (interpretation 3) — in that case this is a real API migration and should be re-estimated with the actual diff in hand. TPM action: treat this as a routine dependency-hygiene upgrade with a cheap verification gate, and only escalate if the static-analysis spike finds direct Http\Message\* usage in first-party code.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package