diff --git a/pom.xml b/pom.xml index 3cdaead..f820618 100644 --- a/pom.xml +++ b/pom.xml @@ -29,10 +29,10 @@ org.springframework.boot spring-boot-starter-oauth2-client - - org.springframework.boot - spring-boot-starter-security - + + + + org.springframework.boot spring-boot-starter-web @@ -78,11 +78,11 @@ spring-restdocs-mockmvc test - - org.springframework.security - spring-security-test - test - + + + + + com.discord4j discord4j-core @@ -101,6 +101,36 @@ reactor-core 3.4.10 + + + com.google.api-client + google-api-client + 1.32.1 + + + + com.google.oauth-client + google-oauth-client + 1.32.1 + + + + com.google.apis + google-api-services-calendar + v3-rev411-1.25.0 + + + + com.google.oauth-client + google-oauth-client-jetty + 1.32.1 + + + + com.google.api-client + google-api-client-jackson2 + 1.20.0 + diff --git a/src/main/java/com/se21/Calendar/GoogleCalendar.java b/src/main/java/com/se21/Calendar/GoogleCalendar.java deleted file mode 100644 index 01191e4..0000000 --- a/src/main/java/com/se21/Calendar/GoogleCalendar.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.se21.Calendar; - -import org.json.simple.JSONObject; - -public class GoogleCalendar implements Calendar{ - - String accessToken; - String refreshToken; - String authToken; - - @Override - public JSONObject authenticate(JSONObject auth) { - - return null; - } - - @Override - public JSONObject retrieveEvents(JSONObject req) { - - return null; - } - - @Override - public Enums.calApiResponse updateEvents(JSONObject req) { - - return Enums.calApiResponse.Success; - } - - @Override - public Enums.calApiResponse addEvents() { - - return Enums.calApiResponse.Success; - } - - @Override - public Enums.calApiResponse deleteEvents() { - - return Enums.calApiResponse.Success; - } - - @Override - public Enums.calApiResponse createNewUnscheduledCalendar() { - - return Enums.calApiResponse.Success; - } -} diff --git a/src/main/java/com/se21/Calendar/Calendar.java b/src/main/java/com/se21/Calendar/mainCalendar.java similarity index 71% rename from src/main/java/com/se21/Calendar/Calendar.java rename to src/main/java/com/se21/Calendar/mainCalendar.java index 30db26d..ca6a6c8 100644 --- a/src/main/java/com/se21/Calendar/Calendar.java +++ b/src/main/java/com/se21/Calendar/mainCalendar.java @@ -2,9 +2,11 @@ import org.json.simple.JSONObject; -public interface Calendar { +import java.security.GeneralSecurityException; - JSONObject authenticate(JSONObject auth); +public interface mainCalendar { + + void authenticate() throws Exception; JSONObject retrieveEvents(JSONObject req); Enums.calApiResponse updateEvents(JSONObject req); Enums.calApiResponse addEvents(); diff --git a/src/main/java/com/se21/calbot/CalBotApplication.java b/src/main/java/com/se21/calbot/CalBotApplication.java index ddecaa8..d733a7a 100644 --- a/src/main/java/com/se21/calbot/CalBotApplication.java +++ b/src/main/java/com/se21/calbot/CalBotApplication.java @@ -1,12 +1,28 @@ package com.se21.calbot; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; +import org.springframework.context.annotation.ComponentScan; -@SpringBootApplication -public class CalBotApplication { +@SpringBootApplication(exclude = {SecurityAutoConfiguration.class}) +@EntityScan +@EnableAutoConfiguration +public class CalBotApplication implements ApplicationRunner { + + @Autowired + GoogleCalendar calendar; public static void main(String[] args) { SpringApplication.run(CalBotApplication.class, args); } + @Override + public void run(ApplicationArguments args) throws Exception { + calendar.authenticate(); + } } diff --git a/src/main/java/com/se21/calbot/GoogleCalendar.java b/src/main/java/com/se21/calbot/GoogleCalendar.java new file mode 100644 index 0000000..4171996 --- /dev/null +++ b/src/main/java/com/se21/calbot/GoogleCalendar.java @@ -0,0 +1,62 @@ +package com.se21.calbot; + +import com.google.api.client.auth.oauth2.Credential; +import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp; +import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver; +import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow; +import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeRequestUrl; +import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets; +import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; +import com.google.api.client.http.javanet.NetHttpTransport; +import com.google.api.client.json.JsonFactory; +import com.google.api.client.json.jackson2.JacksonFactory; +import com.google.api.client.util.store.FileDataStoreFactory; +import com.google.api.services.calendar.CalendarScopes; + +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.Collections; +import java.util.List; + + +import org.springframework.stereotype.Component; + +@Component +public class GoogleCalendar { + + String accessToken; + String refreshToken; + String authToken; + private static final String CREDENTIALS_FILE_PATH = "/credentials.json"; + private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); + private static final String TOKENS_DIRECTORY_PATH = "tokens"; + private static final List SCOPES = Collections.singletonList(CalendarScopes.CALENDAR); + + public void authenticate() throws Exception { + // Load client secrets. + + InputStream in = GoogleCalendar.class.getResourceAsStream(CREDENTIALS_FILE_PATH); + if (in == null) { + throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH); + } + final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport(); + GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in)); + // Build flow and trigger user authorization request. + GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder( + HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES) + .setDataStoreFactory(new FileDataStoreFactory(new java.io.File(TOKENS_DIRECTORY_PATH))) + .setAccessType("offline") + .build(); + String url = flow.newAuthorizationUrl().setRedirectUri("http://localhost:8080/test").build(); + LocalServerReceiver receiver = new LocalServerReceiver(); +// Credential auth = new AuthorizationCodeInstalledApp(flow, receiver).authorize("user"); +// System.out.println(auth.getAccessToken()); +// auth.` + +// GoogleAuthorizationCodeRequestUrl url = flow.newAuthorizationUrl(); + System.out.println(url); +// return new AuthorizationCodeInstalledApp(flow, receiver).authorize("user"); +// return null; + } +} diff --git a/src/main/java/com/se21/calbot/controllers/TestController.java b/src/main/java/com/se21/calbot/controllers/TestController.java new file mode 100644 index 0000000..7ead31c --- /dev/null +++ b/src/main/java/com/se21/calbot/controllers/TestController.java @@ -0,0 +1,16 @@ +package com.se21.calbot.controllers; + +import com.se21.calbot.GoogleCalendar; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +@RestController +@CrossOrigin(origins = "*") +public class TestController { + + @RequestMapping(value = "/ping", method = RequestMethod.GET) + public String AuthenticateTest() throws Exception { + return "ping pong"; + } +}