All Projects → liip → LiipMultiplexBundle

liip / LiipMultiplexBundle

Licence: other
[DEPRECATED] Symfony2 controller that allows calling multiple URL's in one request as well as JSON-ifying any controller

Programming Languages

PHP
23972 projects - #3 most used programming language
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to LiipMultiplexBundle

lexik-jose-bridge
An Encoder for the LexikJWTAuthenticationBundle that uses web-token/jwt-framework
Stars: ✭ 27 (+125%)
Mutual labels:  bundle, symfony-bundle
LexikMailerBundle
This Symfony2 bundle allow you to manage some HTML email templates stored in your database. Templates are written with Twig and use I18N. You can also create some layouts to decorate your email.
Stars: ✭ 81 (+575%)
Mutual labels:  bundle, symfony-bundle
AtoumBundle
This bundle provides a simple integration of atoum into Symfony 2.
Stars: ✭ 44 (+266.67%)
Mutual labels:  bundle, symfony-bundle
SonataAdminSearchBundle
[Abandoned] Implement Search Engine (ElasticSearch) inside Sonata Admin
Stars: ✭ 19 (+58.33%)
Mutual labels:  bundle, symfony-bundle
GuzzleBundleOAuth2Plugin
OAuth2 Plugin for GuzzleBundle
Stars: ✭ 13 (+8.33%)
Mutual labels:  bundle, symfony-bundle
DynamicParametersBundle
[UNMAINTAINED] Runtime retrieval of parameters from environment variables for Symfony
Stars: ✭ 42 (+250%)
Mutual labels:  bundle, symfony-bundle
guzzle6-bundle
Integrates Guzzle 6 into your Symfony application
Stars: ✭ 11 (-8.33%)
Mutual labels:  bundle, symfony-bundle
OpcacheBundle
Displays the PHP OPcache status in the Symfony profiler toolbar.
Stars: ✭ 21 (+75%)
Mutual labels:  bundle, symfony-bundle
KtwDatabaseMenuBundle
Symfony bundle for extending KnpMenu to store menu items in a database.
Stars: ✭ 12 (+0%)
Mutual labels:  bundle, symfony-bundle
supervisor-bundle
Easily update your @Supervisor configuration by using annotations in Symfony commands.
Stars: ✭ 35 (+191.67%)
Mutual labels:  bundle, symfony-bundle
SonataFormatterBundle
Symfony SonataFormatterBundle
Stars: ✭ 78 (+550%)
Mutual labels:  bundle, symfony-bundle
ParamConverterBundle
This bundle provides additional param converters for Symfony.
Stars: ✭ 16 (+33.33%)
Mutual labels:  bundle, symfony-bundle
FkrCssURLRewriteBundle
A small assetic filter for symfony to fix all url paths at css documents to correct urls
Stars: ✭ 33 (+175%)
Mutual labels:  bundle, symfony-bundle
FCMBundle
A Bundle for Symfony projects to send notifications in mobile devices through Firebase Cloud Messaging API
Stars: ✭ 43 (+258.33%)
Mutual labels:  bundle, symfony-bundle
wordpress-bundle
Use Wordpress and Symfony together using a Symfony bundle
Stars: ✭ 30 (+150%)
Mutual labels:  bundle, symfony-bundle
SinchBundle
📦 Provides integration with Sinch.com SMS API.
Stars: ✭ 12 (+0%)
Mutual labels:  bundle, symfony-bundle
BeelabTagBundle
🏷 A simple implementation of tags for Symfony and Doctrine ORM
Stars: ✭ 45 (+275%)
Mutual labels:  bundle, symfony-bundle
socketio
No description or website provided.
Stars: ✭ 23 (+91.67%)
Mutual labels:  bundle, symfony-bundle
vite-bundle
Integration with your Symfony app & Vite
Stars: ✭ 56 (+366.67%)
Mutual labels:  bundle, symfony-bundle
VreshTwilioBundle
A Symfony2 wrapper for the official SDK provided by Twilio.
Stars: ✭ 45 (+275%)
Mutual labels:  bundle, symfony-bundle

UNMAINTAINED

This bundle is no longer maintained. Feel free to fork it if needed.

Overview Build Status

This Bundles enables "multiplexing" multiple requests into a single Request/Response:

for example this request:

http://foo.com/multiplex.json?requests[login][uri]=/session/new&requests[notification][uri]=/notifications&requests[notification][method]=get&requests[notification][parameters][]=broadcasts&requests[notification][parameters][]=personal

will internally call:

/session/new and /notifications

and return one Response:

{
    "/session/new"   : {"request" : "/session/new", "status": 200, "response": "the Response Content of /session/new"},
    "/notifications" : {"request" : "/notifications", "status": 403, "response": "Forbidden"}
}

Attention: Installing this Bundle basically lets anyone side step the security firewall. Therefore its important to either secure the multiplex route or to implement security checks inside all relevant controllers

Installation

  1. Add this bundle to your project with Composer:
```
$ php composer.phar require liip/multiplex-bundle
```
  1. Add this bundle to your application's kernel:
``` php
  // app/AppKernel.php
  public function registerBundles()
  {
      return array(
          // ...
          new Liip\MultiplexBundle\LiipMultiplexBundle(),
          // ...
      );
  }
```

Configuration

The following Configuration Options exists:

  • allow_externals : if enabled also external urls can be multiplexed (default: true)
  • display_errors : if enabled and an error occured, the error message will be returned, otherwise (if available) the http status code message (default: true)
  • route_option : only used in combination with restrict_routes, defines the route option which should be looked up if restrict_routes is on (default: multiplex_expose)
  • restrict_routes : if enabled only routes with the route_option are multiplexable (default: false)

Application Configuration

here the default config

liip_multiplex:
    allow_externals: true
    display_errors: true
    route_option: 'multiplex_expose'
    restrict_routes: false

Routing Configuration

if you want to restrict multiplexing to specific routes, define the option in each route you want to expose

<route id="_my_route" pattern="/foo/bar">
    <default key="_controller">MyBundle:Controller:index</default>
    <option key="multiplex_expose">true</option>
</route>

and don't forget to set restrict_routes to true!

Usage

This Bundles provides a decent Javascript Library to use the Multiplexer Endpoint.

Integration of the Javascript

  {% javascripts
  "@LiipMultiplexBundle/Resources/public/js/ajax_multiplexer.js"
    output='js/multiplexer.js'
  %}
    <script src="{{ asset_url }}"></script>
  {% endjavascripts %}

Using the Javascript Multiplexer

//configuring the Multiplexer
Multiplexer.setEndpoint('/path/to/multiplexer/endpoint'); //as in your routing defaults to /multiplex.json
Multiplexer.setFormat('json'); //only useful exchange format

//adding Requests to the Multiplexer
Multiplexer.add(
    {'uri' : '/foo/bar', 'method' : 'GET', 'parameters' : {'foo':'bar'}}, //the Request Object
    function(content) { /* ... */}, // the Success Callback
    function(content) { /* ... */}  // the Error Callback
);

Multiplexer.add(
    {'uri' : 'http://google.com', 'method' : 'GET', 'parameters' : {'q':'Symfony2'}},
    function(content) { /* this callback is called on success for this request*/},
    function(content) { /* this callback is called on error for this request*/}
);

//pushing all Requests to the Server
Multiplexer.call(
    function(r){ /* ... */ }, //the global success callback (optional)
    function(r){ /* ... */ } //the global error callback (optional)
);

//pushing only a set of Requests to the Server
Multiplexer.call(['/foo/bar']);

Tests

  1. To run the unit tests, require all dependencies
```
$ php composer.phar update --dev
```
  1. Run PHPUnit
```
$ phpunit
```
  1. See Travis for automated Tests
https://travis-ci.org/liip/LiipMultiplexBundle

TODO

  • more output formats (usable html/xml formats)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].