mpstthree 0.1.17

A library implementing Multiparty Session Types for 2 or more participants
Documentation
global protocol oAuth(role Auth, role Client, role Server) {
    Authorization(Approval) from Client to Auth; // Request Authorization Approval
    choice at A
    {
        Access(Token) from Auth to Client;
        rec Loop {
            choice at Client { // Client makes a choice
                RequestPicture(Token) from Client to Server; // Client sends a request for a picture, giving its access token
                GetAuth(Token) from Server to Auth; // Server checks the Token with Auth
                SendAuth(Token) from Auth to Server; // Auth answers the check
                choice at S
                {
                    SendPicture(Answer) from Server to Client; // Server sends the picture file to the client
                    continue Loop; // A Recursive call
                } or {
                    SendRefusal(Answer) from Server to Client; // Server sends refusal to the client
                    continue Loop; // A Recursive call
                }
            } or {
                Close() from Client to Server; // Close the session between Client and Server
                Close() from Server to Auth; // Close the session between Server and Auth
            }
        }
    } or {
        Close() from Auth to Client; // Close the session between Client and Auth
        Close() from Client to Server; // Close the session between Client and Server
    }
}