com.evrythng.java.wrapper.service.AuthService.java Source code

Java tutorial

Introduction

Here is the source code for com.evrythng.java.wrapper.service.AuthService.java

Source

/*
 * (c) Copyright Reserved EVRYTHNG Limited 2016. All rights reserved.
 * Use of this material is subject to license.
 * Copying and unauthorised use of this material strictly prohibited.
 */
package com.evrythng.java.wrapper.service;

import com.evrythng.java.wrapper.ApiManager;
import com.evrythng.java.wrapper.core.EvrythngApiBuilder.Builder;
import com.evrythng.java.wrapper.core.EvrythngServiceBase;
import com.evrythng.java.wrapper.exception.EvrythngClientException;
import com.evrythng.thng.resource.model.access.Credentials;
import com.evrythng.thng.resource.model.access.ThngCredentials;
import com.evrythng.thng.resource.model.store.User;
import com.fasterxml.jackson.core.type.TypeReference;

import java.util.Map;

/**
 * Methods for the authentication API.
 * End point /auth. Implemented by thng-access module.
 */
public class AuthService extends EvrythngServiceBase {

    // ==== configuration ================================================== //

    public static final String PATH_AUTH = "/auth";
    public static final String PATH_AUTH_EVRYTHNG = PATH_AUTH + "/evrythng";
    public static final String PATH_AUTH_EVRYTHNG_USERS = PATH_AUTH_EVRYTHNG + "/users";
    public static final String PATH_AUTH_EVRYTHNG_USER_VALIDATE = PATH_AUTH_EVRYTHNG_USERS + "/%s/validate";

    public static final String PATH_AUTH_ALL = PATH_AUTH + "/all";
    public static final String PATH_AUTH_ALL_LOGOUT = PATH_AUTH_ALL + "/logout";

    public static final String PATH_AUTH_EVRYTHNG_THNGS = PATH_AUTH_EVRYTHNG + "/thngs";
    public static final String PATH_AUTH_EVRYTHNG_THNG = PATH_AUTH_EVRYTHNG_THNGS + "/%s";

    // ==== structor ======================================================= //

    public AuthService(final ApiManager apiManager) {
        super(apiManager);
    }

    // === requests ======================================================== //

    /**
     * Register a new {@link User} in the system.
     * <p>
     * POST {@value #PATH_AUTH_EVRYTHNG_USERS}
     *
     * @param user {@link User} instance
     * @return a preconfigured {@link Builder}
     */
    public Builder<Credentials> evrythngUserCreator(final User user) throws EvrythngClientException {

        return post(PATH_AUTH_EVRYTHNG_USERS, user, new TypeReference<Credentials>() {

        });
    }

    /**
     * Activate a user.
     * The activation code must match the one received during the registration
     * process.
     * <p>
     * POST {@value #PATH_AUTH_EVRYTHNG_USER_VALIDATE}
     *
     * @param userId         user id
     * @param activationCode activation code
     * @return a preconfigured {@link Builder}
     */
    public Builder<Credentials> evrythngUserValidator(final String userId, final String activationCode)
            throws EvrythngClientException {

        Credentials validator = new Credentials();
        validator.setActivationCode(activationCode);
        return post(String.format(PATH_AUTH_EVRYTHNG_USER_VALIDATE, userId), validator,
                new TypeReference<Credentials>() {

                });
    }

    /**
     * Authenticate a user.
     * Based on the email + password pair.
     * Engine provides the ApiKey of a successfully authenticated user.
     * <p>
     * POST {@value #PATH_AUTH_EVRYTHNG}
     *
     * @param credentials {@link Credentials} instance
     * @return a preconfigured {@link Builder}
     */
    public Builder<Credentials> evrythngUserAuthenticator(final Credentials credentials)
            throws EvrythngClientException {

        return post(PATH_AUTH_EVRYTHNG, credentials, new TypeReference<Credentials>() {

        });
    }

    /**
     * Logout. Invalidate user's key.
     * <p>
     * POST {@value #PATH_AUTH_ALL_LOGOUT}
     *
     * @return a preconfigured {@link Builder}
     */
    public Builder<Map<String, String>> authLogouter() throws EvrythngClientException {

        return post(PATH_AUTH_ALL_LOGOUT, null, new TypeReference<Map<String, String>>() {

        });
    }

    /**
     * Create credentials for a thng. Engine provides the ApiKey of an registered thng.
     * <p>
     * POST {@value #PATH_AUTH_EVRYTHNG_THNGS}
     *
     * @param thngId thng id to provide credentials to
     * @return a preconfigured {@link Builder}
     */
    public Builder<ThngCredentials> thngRegistrator(final String thngId) throws EvrythngClientException {

        ThngCredentials thngCredentials = new ThngCredentials();
        thngCredentials.setThngId(thngId);
        return post(PATH_AUTH_EVRYTHNG_THNGS, thngCredentials, new TypeReference<ThngCredentials>() {

        });
    }

    /**
     * Deletes credentials of a thng. Engine revokes access of an registered thng.
     * <p>
     * DELETE {@value #PATH_AUTH_EVRYTHNG_THNG}
     *
     * @param thngId thng id to revoke credentials
     * @return a preconfigured {@link Builder}
     */
    public Builder<Boolean> thngRegistrationDeleter(final String thngId) throws EvrythngClientException {

        return delete(String.format(PATH_AUTH_EVRYTHNG_THNG, thngId));
    }

    /**
     * Retrieves credentials of a thng.
     * <p>
     * GET {@value #PATH_AUTH_EVRYTHNG_THNG}
     *
     * @param thngId the id of the thng whose credentials will be retrieved
     * @return a preconfigured {@link Builder}
     */
    public Builder<ThngCredentials> thngRegistrationReader(final String thngId) throws EvrythngClientException {

        return get(String.format(PATH_AUTH_EVRYTHNG_THNG, thngId), new TypeReference<ThngCredentials>() {

        });
    }
}