// Path: leitoor/src/main/java/br/com/delogic/leitoor/exception/LeitoorException.java
// @SuppressWarnings("serial")
// public class LeitoorException extends Exception {
// 
//     public LeitoorException(String message, Throwable cause) {
//         super(message, cause);
//     }
// 
//     public LeitoorException(String message) {
//         super(message);
//     }
// 
//     public static LeitoorException conviteInvalidoException(String convite) {
//         return new LeitoorException("Este convite não possui validade em nosso sistema:" + convite);
//     }
// 
//     public static LeitoorException contaInvalidaException(String mensagem) {
//         return new LeitoorException(mensagem);
//     }
// 
//     public static LeitoorException autenticacaoException(String mensagem) {
//         return new LeitoorException(mensagem);
//     }
// 
// }
// 
// Path: leitoor/src/main/java/br/com/delogic/leitoor/exception/RegraNegocioException.java
// @SuppressWarnings("serial")
// public class RegraNegocioException extends ViolacaoException {
// 
//     public RegraNegocioException(String message) {
//         super(message);
//     }
// 
//     public RegraNegocioException() {
//         super(null);
//     }
// 
//     public static RegraNegocioException of(String message) {
//         return new RegraNegocioException(message);
//     }
// 
//     public RegraNegocioException withMessage(String message, Object... params) {
//         return new RegraNegocioException(String.format(message, params)) {
//             @Override
//             public boolean equals(Object obj) {
//                 return RegraNegocioException.this == obj;
//             }
//         };
//     }
// 
//     public RegraNegocioException thrownIf(boolean condition) throws RegraNegocioException {
//         if (condition) {
//             throw this;
//         }
//         return this;
//     }
// 
// }


import java.io.IOException;
import br.com.delogic.leitoor.exception.LeitoorException;
import br.com.delogic.leitoor.exception.RegraNegocioException;
import com.google.api.services.oauth2.model.Userinfoplus;
package br.com.delogic.leitoor.service;




public interface GoogleService {

    /**
     * Obtém a url de conexão com o Google
     *
     * @param convite
     * @return uma url
     */
    String getUrlAutenticacao(String convite);

    /**
     * Obtém um usuario GooglePlus
     *
     * @param code
     * @return usuario google
     * @throws IOException
     * @throws LeitoorException
     */
// Path: leitoor/src/main/java/br/com/delogic/leitoor/exception/LeitoorException.java
// @SuppressWarnings("serial")
// public class LeitoorException extends Exception {
// 
//     public LeitoorException(String message, Throwable cause) {
//         super(message, cause);
//     }
// 
//     public LeitoorException(String message) {
//         super(message);
//     }
// 
//     public static LeitoorException conviteInvalidoException(String convite) {
//         return new LeitoorException("Este convite não possui validade em nosso sistema:" + convite);
//     }
// 
//     public static LeitoorException contaInvalidaException(String mensagem) {
//         return new LeitoorException(mensagem);
//     }
// 
//     public static LeitoorException autenticacaoException(String mensagem) {
//         return new LeitoorException(mensagem);
//     }
// 
// }
// 
// Path: leitoor/src/main/java/br/com/delogic/leitoor/exception/RegraNegocioException.java
// @SuppressWarnings("serial")
// public class RegraNegocioException extends ViolacaoException {
// 
//     public RegraNegocioException(String message) {
//         super(message);
//     }
// 
//     public RegraNegocioException() {
//         super(null);
//     }
// 
//     public static RegraNegocioException of(String message) {
//         return new RegraNegocioException(message);
//     }
// 
//     public RegraNegocioException withMessage(String message, Object... params) {
//         return new RegraNegocioException(String.format(message, params)) {
//             @Override
//             public boolean equals(Object obj) {
//                 return RegraNegocioException.this == obj;
//             }
//         };
//     }
// 
//     public RegraNegocioException thrownIf(boolean condition) throws RegraNegocioException {
//         if (condition) {
//             throw this;
//         }
//         return this;
//     }
// 
// }


// Path: leitoor/src/main/java/br/com/delogic/leitoor/service/GoogleService.java
import java.io.IOException;
import br.com.delogic.leitoor.exception.LeitoorException;
import br.com.delogic.leitoor.exception.RegraNegocioException;
import com.google.api.services.oauth2.model.Userinfoplus;

package br.com.delogic.leitoor.service;




public interface GoogleService {

    /**
     * Obtém a url de conexão com o Google
     *
     * @param convite
     * @return uma url
     */
    String getUrlAutenticacao(String convite);

    /**
     * Obtém um usuario GooglePlus
     *
     * @param code
     * @return usuario google
     * @throws IOException
     * @throws LeitoorException
     */
    Userinfoplus getUsuarioGoogle(String code) throws LeitoorException;