Weave Code
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
Guzzle Markus Client

Guzzle Markus Client Laravel Package

devmachine/guzzle-markus-client

Guzzle-powered PHP client for Markus Cinema System (MCS) XML APIs used by Forum Cinemas/Finnkino and others. Normalizes inconsistent XML, renames/regroups fields, and returns cleaner structured data for areas, events (movies) and shows.

View on GitHub
Deep Wiki
Context7

Guzzle client for Markus API e.g. http://forumcinemas.lv/XML

Frequently asked questions about Guzzle Markus Client
What Laravel versions does this package support?
This package is compatible with Laravel 5.x and 6.x due to its dependency on Guzzle 5.x. For Laravel 7+, you may encounter deprecation warnings or compatibility issues. Test thoroughly if using Laravel 6+.
How do I install and configure the Markus client in Laravel?
Run `composer require devmachine/guzzle-markus-client` and register the client in `AppServiceProvider`. Use `MarkusClient::factory('http://your-api-url/XML')` to initialize. Configure API endpoints in `config/services.php` for flexibility.
Does this package handle API authentication or rate limiting?
No, this package does not include authentication handling. Markus APIs may require API keys or IP whitelisting—check with your provider. Rate limiting is also unsupported; implement retries or caching (e.g., Laravel Cache) if needed.
How does the package normalize inconsistent XML responses?
The client parses raw XML from Markus APIs and restructures it into standardized JSON fields (e.g., `areas`, `events`, `shows`). It renames fields for consistency (e.g., mapping `event` to movies, `show` to showtimes) and filters optional parameters like `coming_soon`.
Can I use this package in a microservices architecture?
Yes, but be mindful of terminology mismatches. The package uses `area`, `event`, and `show`—map these to your domain models (e.g., `CinemaLocation`, `Movie`, `Showtime`). Consider wrapping the client in a service layer to abstract domain-specific logic.
What if the Markus API changes or breaks?
The package is unmaintained (last commit ~2016), so API changes may break functionality. Monitor the Markus API for updates and fork the package to add error handling (e.g., custom exceptions) or fallback logic. Test with mock responses if possible.
How do I handle errors like malformed XML or failed requests?
The package lacks built-in error handling. Extend it to throw custom exceptions (e.g., `MarkusXmlException`) or log failures. Use Guzzle’s middleware to catch HTTP errors (e.g., 404, 500) and implement retries or circuit breakers if needed.
Is this package suitable for high-traffic Laravel apps?
No, due to synchronous Guzzle calls, this package may bottleneck under high load. For real-time showtime updates, offload requests to Laravel Queues or implement caching (e.g., Redis) for static data like `areas()`. Consider async alternatives if scaling is critical.
Are there alternatives if this package is abandoned?
Yes. For a lightweight solution, use Guzzle 7+ directly with `simplexml_load_string()` to parse XML. For a more robust approach, build a custom client with Laravel’s HTTP client or explore GraphQL wrappers if the API supports it.
How do I test this package in Laravel?
Mock the `MarkusClient` using Laravel’s HTTP tests or Mockery. Override `MarkusClient::factory()` to return a mock instance with predefined responses. Test edge cases like malformed XML or failed requests by simulating Guzzle exceptions.
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.
sentix/ai-chatbot
terminal42/code-quality-tools
codifyo/ts-generator-bundle
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky