Skip to content

Instantly share code, notes, and snippets.

View GaetanoPiazzolla's full-sized avatar
🎯
Focusing

Gaetano Piazzolla GaetanoPiazzolla

🎯
Focusing
View GitHub Profile
@GaetanoPiazzolla
GaetanoPiazzolla / FORM_API_Main.java
Created March 21, 2022 19:09
Full implementation example usage of Google Form API
/*
implementation("com.google.apis:google-api-services-forms:v1-rev20220307-1.32.1")
implementation("com.google.apis:google-api-services-drive:v3-rev20220214-1.32.1")
implementation ("com.google.api-client:google-api-client-jackson2:1.28.1")
implementation("com.google.auth:google-auth-library-oauth2-http:1.5.3")
*/
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.forms.v1.model.ListFormResponsesResponse;
import java.io.IOException;
private static void readResponses(String formId, String token) throws IOException {
ListFormResponsesResponse response = formsService.forms().responses().list(formId).setOauthToken(token).execute();
System.out.println(response.toPrettyString());
}
import com.google.api.services.drive.model.Permission;
import com.google.api.services.drive.model.PermissionList;
import java.io.IOException;
import java.security.GeneralSecurityException;
public boolean publishForm(String formId, String token) throws GeneralSecurityException, IOException {
PermissionList list = driveService.permissions().list(formId).setOauthToken(token).execute();
private static void main_chapter3() {
//0- access token, from the previous chapter
String token = getAccessToken();
//1- create a new form
String formId = createNewForm(token);
//2- transform it into a quiz
transformInQuiz(formId,token);
@GaetanoPiazzolla
GaetanoPiazzolla / AccessToken.java
Created March 21, 2022 18:03
Create an Access token from the Service Account key
import com.google.api.services.forms.v1.FormsScopes;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.IOException;
import java.util.Objects;
public static String getAccessToken() throws IOException {
GoogleCredentials credential = GoogleCredentials.fromStream(Objects.requireNonNull(
Main.class.getResourceAsStream("cred.json"))).createScoped(FormsScopes.all());
return credential.getAccessToken() != null ?
@GaetanoPiazzolla
GaetanoPiazzolla / Boilerplate.java
Created March 21, 2022 18:01
Boilerplate code to start working with the Form and the Drive APIs from Google
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.drive.Drive;
import com.google.api.services.forms.v1.Forms;
import java.io.IOException;
import java.security.GeneralSecurityException;
public class Boilerplate {
@GaetanoPiazzolla
GaetanoPiazzolla / CacheConfig.java
Created January 30, 2022 20:07
RedisCacheConfiguration with TTL for the blacklist cache.
@Configuration
@AutoConfigureAfter(RedisAutoConfiguration.class)
public class CacheConfig {
public final static String BLACKLIST_CACHE_NAME = "jwt-black-list";
@Value("${jwt.duration:0}")
private int tokenDuration;
@Value("${spring.redis.host:localhost}")
private String redisHost;
@GaetanoPiazzolla
GaetanoPiazzolla / BlackListingService.java
Created January 30, 2022 19:52
A blacklisting service. Uses standard springboot annotations.
@Service
public class BlackListingService {
@CachePut(CacheConfig.BLACKLIST_CACHE_NAME)
public String blackListJwt(String jwt) {
return jwt;
}
@Cacheable(value = CacheConfig.BLACKLIST_CACHE_NAME, unless = "#result == null")
public String getJwtBlackList(String jwt) {
@GaetanoPiazzolla
GaetanoPiazzolla / LogoutController.java
Created January 30, 2022 19:51
LogoutController which writes on RedisCache
@RestController
@RequestMapping("/logout")
public class LogoutController {
@Autowired
private BlackListingService blackListingService;
@Autowired
private UserRequestScopedBean userRequestScopedBean;
@GaetanoPiazzolla
GaetanoPiazzolla / JWTInterceptor.java
Created January 30, 2022 19:49
JWT Interceptor used to authorize requests.
public class JWTInterceptor implements HandlerInterceptor {
@Value("${jwt.key}")
private String jwtKey;
@Autowired
private BlackListingService blackListingService;
@Autowired
private UserRequestScopedBean userRequestScopedBean;