// Path: api/src/main/java/hirez/api/object/CreateSession.java
// @Data
// public class CreateSession implements ReturnedMessage {
//     @JsonProperty("ret_msg")
//     private String returnedMessage;
//     private String sessionId;
//     @DateTimeFormat
//     private Date timestamp;
// 
// }
// 
// Path: api/src/main/java/hirez/api/sessions/CachedSessionStorage.java
// public class CachedSessionStorage implements SessionStorage {
//     private String session;
// 
//     public static SessionStorage create() {
//         return new CachedSessionStorage();
//     }
// 
//     @Override
//     public String get() throws NullPointerException {
//         if (isPresent())
//             return session;
//         else
//             throw new NullPointerException("Please register session first!");
//     }
// 
//     @Override
//     public void get(Consumer<String> session) {
//         try {
//             session.accept(get());
//         } catch (Throwable ignore) {
//         }
//     }
// 
//     @Override
//     public void set(CreateSession session) {
//         if (session.getReturnedMessage().equals("Approved")) {
//             this.session = session.getSessionId();
//         } else throw new IllegalStateException(session.getReturnedMessage());
//     }
// 
//     @Override
//     public boolean isPresent() {
//         return session != null;
//     }
// }


import hirez.api.object.CreateSession;
import hirez.api.sessions.CachedSessionStorage;
import java.util.function.Consumer;
package hirez.api;



public interface SessionStorage {
    SessionStorage DEFAULT = CachedSessionStorage.create();

    String get() throws NullPointerException;

    void get(Consumer<String> session);

// Path: api/src/main/java/hirez/api/object/CreateSession.java
// @Data
// public class CreateSession implements ReturnedMessage {
//     @JsonProperty("ret_msg")
//     private String returnedMessage;
//     private String sessionId;
//     @DateTimeFormat
//     private Date timestamp;
// 
// }
// 
// Path: api/src/main/java/hirez/api/sessions/CachedSessionStorage.java
// public class CachedSessionStorage implements SessionStorage {
//     private String session;
// 
//     public static SessionStorage create() {
//         return new CachedSessionStorage();
//     }
// 
//     @Override
//     public String get() throws NullPointerException {
//         if (isPresent())
//             return session;
//         else
//             throw new NullPointerException("Please register session first!");
//     }
// 
//     @Override
//     public void get(Consumer<String> session) {
//         try {
//             session.accept(get());
//         } catch (Throwable ignore) {
//         }
//     }
// 
//     @Override
//     public void set(CreateSession session) {
//         if (session.getReturnedMessage().equals("Approved")) {
//             this.session = session.getSessionId();
//         } else throw new IllegalStateException(session.getReturnedMessage());
//     }
// 
//     @Override
//     public boolean isPresent() {
//         return session != null;
//     }
// }


// Path: api/src/main/java/hirez/api/SessionStorage.java
import hirez.api.object.CreateSession;
import hirez.api.sessions.CachedSessionStorage;
import java.util.function.Consumer;

package hirez.api;



public interface SessionStorage {
    SessionStorage DEFAULT = CachedSessionStorage.create();

    String get() throws NullPointerException;

    void get(Consumer<String> session);

    void set(CreateSession session);