MoinMoin Logo
  • Comments
  • Immutable Page
  • Menu
    • Navigation
    • RecentChanges
    • FindPage
    • Local Site Map
    • Help
    • HelpContents
    • HelpOnMoinWikiSyntax
    • Display
    • Attachments
    • Info
    • Raw Text
    • Print View
    • Edit
    • Load
    • Save
  • Login

Navigation

  • Start
  • Sitemap

Upload page content

You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

File to load page content from
Page name
Comment

Revision 3 as of 2021-06-28 17:34:23
  • Java
  • Spring
  • SpringBoot
  • ChuckNorris

ChuckNorris

  • Test app that invokes a ChuckNorris random joke API

Structure

   1 .
   2 ├── pom.xml
   3 ├── src
   4 │   └── main
   5 │       └── java
   6 │           ├── chucknorris
   7 │           │   └── bitarus
   8 │           │       └── allowed
   9 │           │           └── org
  10 │           │               ├── Application.java
  11 │           │               ├── ChuckNorrisController.java
  12 │           │               ├── Joke.java
  13 │           │               └── JokeResponse.java

pom.xml

   1 <?xml version="1.0" encoding="UTF-8"?>
   2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   3     <modelVersion>4.0.0</modelVersion>
   4     <groupId>bitarus.allowed.org</groupId>
   5     <artifactId>chucknorris</artifactId>
   6     <version>0.1.0</version>
   7     <parent>
   8         <groupId>org.springframework.boot</groupId>
   9         <artifactId>spring-boot-starter-parent</artifactId>
  10         <version>2.1.6.RELEASE</version>
  11     </parent>
  12     <dependencies>
  13         <dependency>
  14             <groupId>org.springframework.boot</groupId>
  15             <artifactId>spring-boot-starter-thymeleaf</artifactId>
  16         </dependency>
  17         <dependency>
  18             <groupId>org.springframework.boot</groupId>
  19             <artifactId>spring-boot-starter-web</artifactId>
  20         </dependency>
  21         <dependency>
  22             <groupId>com.google.code.gson</groupId>
  23             <artifactId>gson</artifactId>
  24             <version>2.8.6</version>
  25             <scope>compile</scope>
  26         </dependency>
  27     </dependencies>
  28     <properties>
  29         <start-class>chucknorris.bitarus.allowed.org.Application</start-class>
  30     </properties>
  31     <build>
  32         <plugins>
  33             <plugin>
  34                 <groupId>org.springframework.boot</groupId>
  35                 <artifactId>spring-boot-maven-plugin</artifactId>
  36             </plugin>
  37         </plugins>
  38     </build>
  39     <repositories>
  40         <repository>
  41             <id>spring-milestone</id>
  42             <url>http://repo.spring.io/libs-release</url>
  43         </repository>
  44     </repositories>
  45     <pluginRepositories>
  46         <pluginRepository>
  47             <id>spring-milestone</id>
  48             <url>http://repo.spring.io/libs-release</url>
  49         </pluginRepository>
  50     </pluginRepositories>
  51 </project>

Application.java

   1 package chucknorris.bitarus.allowed.org;
   2 
   3 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
   4 import org.springframework.boot.SpringApplication;
   5 import org.springframework.context.annotation.ComponentScan;
   6 import org.slf4j.Logger;
   7 import org.slf4j.LoggerFactory;
   8 
   9 @ComponentScan //scans for @Component beans 
  10 @EnableAutoConfiguration
  11 public class Application {
  12     private static Logger logger;
  13 
  14     public static void main(String[] args) {
  15         logger = LoggerFactory.getLogger(Application.class);
  16         logger.info("Starting application");
  17         SpringApplication.run(Application.class, args);
  18     }
  19 }

ChuckNorrisController.java

   1 package chucknorris.bitarus.allowed.org;
   2 
   3 import org.springframework.stereotype.Controller;
   4 import org.springframework.web.bind.annotation.RequestMapping;
   5 import org.springframework.ui.Model;
   6 import org.slf4j.Logger;
   7 import org.slf4j.LoggerFactory;
   8 import org.springframework.web.bind.annotation.ResponseBody;
   9 
  10 import java.io.BufferedReader;
  11 import java.io.InputStreamReader;
  12 import java.io.OutputStream;
  13 import java.net.HttpURLConnection;
  14 import java.net.URL;
  15 import org.springframework.http.HttpMethod;
  16 import com.google.gson.Gson;
  17 
  18 @Controller
  19 public class ChuckNorrisController{
  20     private final Logger logger = LoggerFactory.getLogger(ChuckNorrisController.class);
  21     
  22     public ChuckNorrisController(){
  23         logger.info("ChuckNorrisController created");
  24     }
  25 
  26     @RequestMapping("/chucknorris")
  27     @ResponseBody
  28     // http://localhost:8080/chucknorris
  29     public JokeResponse chucknorris() {
  30         String ret = "";
  31         Gson gson = new Gson();
  32 
  33         try {
  34             URL url = new URL("https://api.chucknorris.io/jokes/random");
  35             HttpURLConnection connection = (HttpURLConnection) url.openConnection();
  36             connection.connect();
  37             logger.info( Integer.toString(connection.getResponseCode() ));
  38 
  39             try (BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"))) {
  40                 StringBuilder response = new StringBuilder();
  41                 String responseLine = null;
  42                 while ((responseLine = br.readLine()) != null) {
  43                     response.append(responseLine.trim());
  44                 }
  45                 
  46                 Joke joke = gson.fromJson(response.toString(), Joke.class);
  47                 ret = joke.getValue();
  48             }
  49 
  50         }
  51         catch(Exception ex){
  52             logger.error("error",ex);
  53         }
  54 
  55         JokeResponse jr = new JokeResponse();
  56         jr.setResponse(ret);
  57         return jr;
  58     }
  59 }
  • MoinMoin Powered
  • Python Powered
  • GPL licensed
  • Valid HTML 4.01