by

Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    Matthijs Alles
    @malles
    Jij spreekt ook wel nederlands toch?
    Toon Verwerft
    @veewee
    inderdaad
    Matthijs Alles
    @malles
    of Vlaams op zijn minst :)
    Matthijs Alles
    @malles
    Ik heb nog wat aanpassingen/toevoegingen gepusht
    Matthijs Alles
    @malles
    docs voor traitassembler en useassembler commit ik later, nadat het andere PR gemerged is, anders komen er merge conflicts
    Toon Verwerft
    @veewee
    great work man!
    Matthijs Alles
    @malles
    mijn eerste tests die ik ooit echt maak :)
    wel goed om eens te doen
    Toon Verwerft
    @veewee
    Zeker in open-source wordt er niets gemerged zonder tests. Het risico op fouten is gewoon te groot :)
    Matthijs Alles
    @malles
    ja, helemaal gelijk. Mooi systeem dat Travis
    Toon Verwerft
    @veewee
    ik zou zeggen: probeer er ook in je privé projecten gebruik van te maken. Je gaat er geen spijt van hebben :)
    Matthijs Alles
    @malles
    helemaal gelijk...
    maar tijd...
    maar ik ga het zeker een keer opzetten om te die flow proberen
    Toon Verwerft
    @veewee
    op zich is tijd geen goed argument: als je er één keer met weg bent, dan kost dat niet zo heel veel tijd meer. In grote projecten bespaar je zelfs tijd omdat je niet steeds heel de applicatie moet testen. De geautomatiseerde testen doen dit voor u en geven een seintje als je iets kapot hebt gemaakt.
    Matthijs Alles
    @malles
    helemaal waar. Voor mijn pagekit extensies zou het zeker goed zijn. Daar is ook wel kans op contributies van externen. Ik ga er zeker naar kijken.
    Toon Verwerft
    @veewee
    @malles: For the traits there are still some remarks left right?
    Matthijs Alles
    @malles
    yep
    Use for PropertyType en checking existing without alias
    is er een elegentere manier dan $context instanceof TypeContext || $context instanceof PropertyContext?
    instanceof TypeInterface missschien, maar dat komt neer op return true
    Toon Verwerft
    @veewee
    die or lijkt me de beste oplossing. Zo geef je een expliciete whitelist
    Toon Verwerft
    @veewee
    @malles: Kan je mij laten weten als die trait assembler volledig klaar zou zijn? Dan review ik heel de code nog eens. Thanks!
    Matthijs Alles
    @malles
    Ik zit nu alleen nog met de check voor bestaande traits zonder use en test daarvoor.
    Wat is de gewenste actie als die al bestaat? skip, throw, aanpassen?
    Toon Verwerft
    @veewee
    Misschien best een throw? Dat is een fout die manueel opgelost zal moeten worden.
    Matthijs Alles
    @malles
    Ja lijkt me idd :+1:
    Toon Verwerft
    @veewee
    @malles: Heb je nog extra informatie nodig voor het afronden van de TraitAssembler PR?
    Matthijs Alles
    @malles
    Nee, alleen wat tijd :)
    Ik zal kijken of ik hem vandaag af kan maken, alleen nog een check op bestaande use zonder alias en een throw
    Toon Verwerft
    @veewee
    ok, geen probleem :)
    Toon Verwerft
    @veewee
    ping @malles
    Matthijs Alles
    @malles
    :)
    I still have the files in my changelist, I will mop it up soon.
    Toon Verwerft
    @veewee
    Ok, thanks! Sorry for the spam, I got a bit carried away in my enthousiasm :)
    orette
    @orette
    hello
    Toon Verwerft
    @veewee
    Hello
    orette
    @orette
    i will have to tackle the WS-ReliableMessaging issue mentioned in my question #145 and was wondering if we could chat a little regarding the approach
    orette
    @orette
    when would be a good time to get back on here discuss this?
    Toon Verwerft
    @veewee
    I am here for a while this evening and otherwise tomorrow more or less during businesshours (UTC)
    Feel free to shoot your question even when I am not around :)
    orette
    @orette
    i'm not sure how familiar you are with WS-ReliableMessaging, but it's not just a simple modification of the payload, for 1 operation, it's multiple messages back and forth between the client and the server. For the modification thats needed for the payload, i think i can figure that out by looking at WS-Addressing middleware, but i was wondering where in the framework would be the best place to handle the back and forth between the client and the server and also hold the state?
    I'm thinking it has to be the client, but just wanted to be sure that there isn't a better place to do it
    Toon Verwerft
    @veewee

    I am not familiar with WS-ReliableMessaging at all.
    How I would implement it with no knowledge of the standard:

    • Create a new middleware
    • Intject the HTTPlug client you've passed to the clientbuilder as a constructor parameter to the middleware. (Inside the soap-client we wrap that client with a PluginClient which adds the middlewares. This means you can do calls inside the middleware which won't trigger all the other middlewares to be triggered)
    • Do whatever messaging you need to do (this could be done inside the middleware or in one or more service classes depending on the protocol. You could create a state object at some point and maybe save that state in redis if it should be reusable over multiple requests.
    • Next you can change the actual soap request payload you want to send with the state you've collected from the remote server by using the SoapXml class and send that request

    Not sure how fast this protocol is supposed to be, but you might want to tweek the phpro soap client a bit so that it works with async requests. (that's just an additional / optional step though)

    Toon Verwerft
    @veewee
    Sample code might look like this:

    /code class WsReliableMessaging extends Middleware
    {
    private $client;

    public function __construct(\Http\Client\HttpClient $client)
    {
        $this->client = $client;
    }
    
    public function beforeRequest(callable $next, RequestInterface $request): Promise
    {
    
        $wsReliableResponse = $this->client->sendRequest(new Request('/request-whatever-you-need'));
        $wsReliableState = $this->parseState($wsReliableResponse);
    
        $xml = \Phpro\SoapClient\Xml\SoapXml::fromStream($request->getBody());
        $header = $xml->createSoapHeader();
        // Inject the state here
    
    
        return $next($request->withBody($xml->toStream()));
    }
    
    public function afterResponse(ResponseInterface $response): ResponseInterface
    {
        // Maybe validate something here?
        return $response;
    }

    }

    orette
    @orette
    Ok thanks, i'll give it a shot. I thought you probably not want to be sending requests in the middleware, thats the reason i figured the client would have been best.
    I'll see how far this takes me and let you know.
    Toon Verwerft
    @veewee
    If you don't want to do additional requests inside the middleware, you can still move that logic to another class. But the middleware has to instantiate it.
    orette
    @orette
    Thats the actual plan