diff --git a/backend/build.gradle b/backend/build.gradle index ad2a941df8437cfa73283438788fb50ec8854857..4ea43cf385d69e2f3290424025720459d3fce8ce 100644 --- a/backend/build.gradle +++ b/backend/build.gradle @@ -10,9 +10,11 @@ buildscript { plugins{ id 'org.jetbrains.kotlin.plugin.serialization' version "$kotlin_version" + id "com.github.johnrengelman.shadow" version "6.1.0" } apply plugin: 'kotlin' + apply plugin: 'application' group 'cz.cvut.fel.veselj57' @@ -26,8 +28,6 @@ sourceSets { test.resources.srcDirs = ['testresources'] } - - repositories { mavenLocal() jcenter() @@ -55,3 +55,12 @@ dependencies { implementation 'org.kodein.di:kodein-di-framework-ktor-server-jvm:6.4.1' testImplementation "io.ktor:ktor-server-tests:$ktor_version" } + +mainClassName = "io.ktor.server.netty.EngineMain" + + +shadowJar { + archiveBaseName.set( 'application') + archiveClassifier.set('') + archiveVersion.set('') +} diff --git a/backend/dockerfile b/backend/dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..3bec7f21da9833bcea5028495c95fbaf69385bb4 --- /dev/null +++ b/backend/dockerfile @@ -0,0 +1,16 @@ +FROM openjdk:8-jre-alpine + +ENV APPLICATION_USER ktor +RUN adduser -D -g '' $APPLICATION_USER + +RUN mkdir /app +RUN chown -R $APPLICATION_USER /app + +USER $APPLICATION_USER + +COPY ./build/libs/application.jar /app/application.jar +WORKDIR /app + +CMD ["java", "-server", "-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-XX:InitialRAMFraction=2", "-XX:MinRAMFraction=2", "-XX:MaxRAMFraction=2", "-XX:+UseG1GC", "-XX:MaxGCPauseMillis=100", "-XX:+UseStringDeduplication", "-jar", "application.jar"] + +EXPOSE 8000 \ No newline at end of file diff --git a/backend/src/cz/cvut/fel/veselj57/api/RandomMemeAPI.kt b/backend/src/cz/cvut/fel/veselj57/api/RandomMemeAPI.kt index 1dbbf97968526ab226d9d6bbcf91229725779501..7ea7e012420ae5a7a84f4b8ab650b8e601d0e7c7 100644 --- a/backend/src/cz/cvut/fel/veselj57/api/RandomMemeAPI.kt +++ b/backend/src/cz/cvut/fel/veselj57/api/RandomMemeAPI.kt @@ -21,9 +21,23 @@ fun Application.RandomMemeAPI(){ val jokeAPI by kodein().instance<JokeAPI>() val generatorAPI by kodein().instance<MemeGeneratorAPI>() - val type = call.parameters["type"]?.let { it1 -> JokeType.valueOf(it1) } - val topic = call.parameters["topic"]?.let { it1 -> JokeTopic.valueOf(it1)} ?: JokeTopic.Any - val meme = call.parameters["meme"] ?: "Bad-Luck-Brian" + val type = try { + JokeType.valueOf(call.parameters["type"]!!) + }catch (e: Exception){ + throw BadRequestException("Missing or not correctly formatted type parameter") + } + + val topic = try { + JokeTopic.valueOf(call.parameters["topic"]!!) + }catch (e: Exception){ + throw BadRequestException("Missing or not correctly formatted topic parameter") + } + + val meme = try { + call.parameters["image"]!! + }catch (e: Exception){ + throw BadRequestException("Missing or not correctly formatted image parameter") + } val joke = jokeAPI.getRandomJoke(topic, type) @@ -36,8 +50,8 @@ fun Application.RandomMemeAPI(){ get("/generate") { val generatorAPI by kodein().instance<MemeGeneratorAPI>() - val top = call.parameters["top"] - val bottom = call.parameters["bottom"] + val top = call.parameters["top_text"] + val bottom = call.parameters["bottom_text"] val meme = call.parameters["image"] if (meme == null) diff --git a/backend/test/ApplicationTest.kt b/backend/test/ApplicationTest.kt index 0a065e1500aa0c9dfe7ab7924718cdfc6a0213de..a287dfe7d4cb54f7fe226709759a836944fb2510 100644 --- a/backend/test/ApplicationTest.kt +++ b/backend/test/ApplicationTest.kt @@ -1,18 +1,9 @@ package cz.cvut.fel.veselj57 -import cz.cvut.fel.veselj57.cz.cvut.fel.veselj57.module import io.ktor.http.* import kotlin.test.* import io.ktor.server.testing.* class ApplicationTest { - @Test - fun testRoot() { - withTestApplication({ module(testing = true) }) { - handleRequest(HttpMethod.Get, "/").apply { - assertEquals(HttpStatusCode.OK, response.status()) - assertEquals("HELLO WORLD!", response.content) - } - } - } + } diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..e903b6855d064d2ea44578a90f5f29f372b17e6d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,25 @@ +version: "3.6" +services: + + frontend: + build: ./frontend + ports: + - "8080:8080" + depends_on: + - "backend" + + backend: + build: ./backend + ports: + - "8000:8000" + + swagger-ui: + image: swaggerapi/swagger-ui + container_name: "swagger-ui" + ports: + - "8081:8080" + volumes: + - ./swagger.json:/openapi.json + environment: + SWAGGER_JSON: /openapi.json + diff --git a/frontend/.env b/frontend/.env new file mode 100644 index 0000000000000000000000000000000000000000..9d5af08ea0a36fda1fc430a170c4afc2395dfd56 --- /dev/null +++ b/frontend/.env @@ -0,0 +1 @@ +VUE_APP_MEME_BOT_API=http://localhost:8000 \ No newline at end of file diff --git a/frontend/dockerfile b/frontend/dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..acc5fc837303d50b5b2c281c0b87ec514897e7b6 --- /dev/null +++ b/frontend/dockerfile @@ -0,0 +1,22 @@ +FROM node:lts-alpine + +# install simple http server for serving static content +RUN npm install -g http-server + +# make the 'app' folder the current working directory +WORKDIR /app + +# copy both 'package.json' and 'package-lock.json' (if available) +COPY package*.json ./ + +# install project dependencies +RUN npm install + +# copy project files and folders to the current working directory (i.e. 'app' folder) +COPY . . + +# build app for production with minification +RUN npm run build + +EXPOSE 8080 +CMD [ "http-server", "dist" ] diff --git a/frontend/package.json b/frontend/package.json index 6e5a1831cf7e2dab98de298c9ff66d167364c9e5..f58dab76764e180d24400a829cac1735671eff44 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "private": true, "scripts": { - "serve": "vue-cli-service serve", + "serve": "vue-cli-service serve --port 8080", "build": "vue-cli-service build", "lint": "vue-cli-service lint" }, diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 57361049c2326a2695c4dc4dbd1c33827d5a3aba..d6ffb5c65551988b1b54e61fab9fe98579ef9d1a 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -3,18 +3,15 @@ <main class="container"> - <div class="my-3 p-3 bg-white rounded shadow-sm"> <div class="jumbotron"> - <h1 class="display-4">Hello, world!</h1> - <p class="lead">This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.</p> + <h1 class="display-4">MemeBot</h1> <hr class="my-4"> - <p>It uses utility classes for typography and spacing to space content out within the larger container.</p> + <p>Propojili jsme pro Vás MEME generator s databázĂ vtipĹŻ. UĹľ vtipy nemusĂte ÄŤĂst, staÄŤĂ vidÄ›t MEME. </p> <p class="lead"> <router-link to="/random" class="btn btn-primary btn-lg">NáhodnĂ© MEME</router-link> <router-link to="/new" class="btn btn-primary btn-lg" style="margin-left: 50px">VlastnĂ MEME</router-link> - </p> </div> diff --git a/frontend/src/api/meme_bot_api.js b/frontend/src/api/meme_bot_api.js new file mode 100644 index 0000000000000000000000000000000000000000..731b61f5ef8e51a6dcedcd7cc20d27c2743cc543 --- /dev/null +++ b/frontend/src/api/meme_bot_api.js @@ -0,0 +1,22 @@ + +export default { + types: [ + {name: "JednořádkovĂ˝", value: "SINGLE"}, + {name: "DvouřádkovĂ˝", value: "TWOPART"} + ], + images: [ + {name: "Advice Dog", value: "Advice-Dog"}, + {name: "Advice Doge", value: "Advice-Doge"}, + {name: "Advice Peeta", value: "Advice-Peeta"}, + ], + topics: [ + {name: "ProgramovánĂ", value: "Programming"}, + {name: "ÄŚernĂ˝ humor", value: "Dark"}, + {name: "StrašvalueelnĂ˝", value: "Spooky"}, + {name: "Vánoce", value: "Christmas"}, + {name: "NáhodnĂ˝", value: "Any"}, + {name: "SmĂšenĂ˝", value: "Miscellaneous"}, + {name: "SlovnĂ hĹ™ĂÄŤka", value: "Pun"}, + ] + +} \ No newline at end of file diff --git a/frontend/src/components/NewMeme.vue b/frontend/src/components/NewMeme.vue index e060383f4c95510fa2d190542fb9bbd55a3e6756..a4646fbf6d152fdb79770f30007e25383d87a15a 100644 --- a/frontend/src/components/NewMeme.vue +++ b/frontend/src/components/NewMeme.vue @@ -5,35 +5,35 @@ <h2>Generovat meme </h2> <div class="row"> - <form class="col-md-6"> + <form class="col-md-6" @submit="fetch_meme"> <div class="form-group"> - <label for="inputEmail4">HornĂ text</label> - <input type="email" class="form-control" id="inputEmail4" placeholder="Email"> + <label for="top_text">HornĂ text</label> + <input type="text" class="form-control" id="top_text" placeholder="Yo mama is so .." v-model="top_text"> </div> <div class="form-group"> - <label for="inputPassword4">DolnĂ text</label> - <input type="password" class="form-control" id="inputPassword4" placeholder="Password"> + <label for="bottom_text">DolnĂ text</label> + <input type="text" class="form-control" id="bottom_text" placeholder="That I ..." v-model="bottom_text"> </div> <div class="form-group"> - <label for="inputState">Obrázek</label> - <select id="inputState" class="form-control"> - <option selected>Choose...</option> - <option>...</option> + <label for="image">Obrázek</label> + <select id="image" class="form-control" v-model="image"> + <option v-for="type in settings.images" v-bind:key="type.value" v-bind:value="type.value" > + {{ type.name }} + </option> </select> </div> - <button type="submit" class="btn btn-primary">Sign in</button> + <button type="submit" class="btn btn-primary">Zasmát se </button> </form> <div class="col-md-6"> - <img src="../assets/logo.png" class="rounded mx-auto d-block"> + <img v-bind:src="meme" class="rounded mx-auto d-block"> </div> </div> - </div> </div> @@ -43,11 +43,27 @@ <script> import 'bootstrap'; +import meme_bot_api from "@/api/meme_bot_api"; export default { name: 'App', - components: { - + data: function () { + return { + image: "", + top_text: "", + bottom_text: "", + meme: "logo.png", + settings: meme_bot_api, + } + }, + methods: { + fetch_meme: function (e) { + e.preventDefault() + + console.log(this.top_text) + + this.meme = process.env.VUE_APP_MEME_BOT_API + `/generate?top_text=${this.top_text}&bottom_text=${this.bottom_text}&image=${this.image}` + } } } </script> diff --git a/frontend/src/components/RandomMeme.vue b/frontend/src/components/RandomMeme.vue index 3260f64cccd26fb4794a83ce17b73ea77ddfbc40..6b0b344c4206bf65d5887853e815d7df9318862b 100644 --- a/frontend/src/components/RandomMeme.vue +++ b/frontend/src/components/RandomMeme.vue @@ -3,27 +3,37 @@ <div class="p-3 bg-white rounded shadow-sm"> <h2>NáhodnĂ© meme </h2> - <div class="row" @submit="fetch_meme"> - <form class="col-md-6"> + <div class="row"> + <form class="col-md-6" @submit="fetch_meme"> <div class="form-group"> <label for="type">Typ</label> - <select id="type" class="form-control"> - <option v-for="type in types" v-bind:key="type.id"> + <select id="type" class="form-control" v-model="type"> + <option v-for="type in settings.types" v-bind:key="type.value" v-bind:value="type.value"> {{ type.name }} </option> </select> </div> <div class="form-group"> - <label for="cateogry">Kategorie</label> - <select id="cateogry" class="form-control"> - <option selected>Choose...</option> - <option>...</option> + <label for="category">TĂ©ma</label> + <select id="category" class="form-control" v-model="topic"> + <option v-for="type in settings.topics" v-bind:key="type.value" v-bind:value="type.value"> + {{ type.name }} + </option> + </select> + </div> + + <div class="form-group"> + <label for="image">PodkladovĂ˝ obrázek </label> + <select id="image" class="form-control" v-model="image"> + <option v-for="type in settings.images" v-bind:key="type.value" v-bind:value="type.value" > + {{ type.name }} + </option> </select> </div> - <button type="submit" class="btn btn-primary">Sign in</button> + <button type="submit" class="btn btn-primary">Zasmát se</button> </form> <div class="col-md-6"> @@ -32,7 +42,6 @@ </div> </div> - </div> </template> @@ -40,17 +49,21 @@ <script> import 'bootstrap'; +import meme_bot_api from "@/api/meme_bot_api"; export default { - name: 'App', + name: 'RandomMeme', components: { }, data: function () { + return { + image: "", + topic: "", + type: "", meme: "logo.png", - types: [{name: "JednořádkovĂ˝", id: "single"}, {name: "DvouřádkovĂ˝", id: "twopart"}] - category: [{name: "JednořádkovĂ˝", id: "single"}, {name: "DvouřádkovĂ˝", id: "twopart"}] + settings: meme_bot_api, } }, @@ -58,10 +71,9 @@ export default { fetch_meme: function (e) { e.preventDefault() + console.log(this.topic) - - - this.meme = "http://apimeme.com/meme?meme=10-Guy&top=Top+text&bottom=Bottom+text" + this.meme = process.env.VUE_APP_MEME_BOT_API + `/random?type=${this.type}&topic=${this.topic}&image=${this.image}` } } } diff --git a/frontend/src/sadf.js b/frontend/src/sadf.js new file mode 100644 index 0000000000000000000000000000000000000000..d1a61f6ec0c930bd18ce92aa4efbbd856eb3188b --- /dev/null +++ b/frontend/src/sadf.js @@ -0,0 +1,999 @@ +10-Guy +1950s-Middle-Finger +1990s-First-World-Problems +1st-World-Canadian-Problems +2nd-Term-Obama +Aaaaand-Its-Gone +Ace-Primo +Actual-Advice-Mallard +Adalia-Rose +Admiral-Ackbar-Relationship-Expert +Advice-Dog +Advice-Doge +Advice-God +Advice-Peeta +Advice-Tam +Advice-Yoda +Afraid-To-Ask-Andy +Afraid-To-Ask-Andy-Closeup +Aint-Nobody-Got-Time-For-That +Alan-Greenspan +Alarm-Clock +Albert-Cagestein +Albert-Einstein-1 +Alien-Meeting-Suggestion +Alright-Gentlemen-We-Need-A-New-Idea +Always-Has-Been +Alyssa-Silent-Hill +Am-I-The-Only-One-Around-Here +American-Chopper-Argument +Ancient-Aliens +And-everybody-loses-their-minds +And-then-I-said-Obama +Angry-Asian +Angry-Baby +Angry-Birds-Pig +Angry-Bride +Angry-Chef-Gordon-Ramsay +Angry-Chicken-Boss +Angry-Dumbledore +Angry-Koala +Angry-Rant-Randy +Angry-Toddler +Annoying-Childhood-Friend +Annoying-Facebook-Girl +Anri-Stares +Anti-Joke-Chicken +Apathetic-Xbox-Laser +Archer +Are-Your-Parents-Brother-And-Sister +Are-you-a-Wizard +Arrogant-Rich-Man +Art-Attack +Art-Student-Owl +Arthur-Fist +Asshole-Ref +Aunt-Carol +Austin-Powers-Honestly +Aw-Yeah-Rage-Face +Awkward-Moment-Sealion +Awkward-Olympics +BANE-AND-BRUCE +BM-Employees +Babushkas-On-Facebook +Baby-Cry +Baby-Godfather +Baby-Insanity-Wolf +Back-In-My-Day +Bad-Advice-Cat +Bad-Joke-Eel +Bad-Luck-Bear +Bad-Luck-Brian +Bad-Luck-Hannah +Bad-Pun-Anna-Kendrick +Bad-Pun-Dog +Bad-Wife-Worse-Mom +Bah-Humbug +Bane +Bane-Permission +Barack-And-Kumar-2013 +Barba +Barbosa-And-Sparrow +Barney-Stinson-Win +Baromney +Baron-Creater +Bart-Simpson-Peeking +Batman-And-Superman +Batman-Slapping-Robin +Batman-Smiles +Batmobile +Bazooka-Squirrel +Be-Like-Bill +Bear-Grylls +Beard-Baby +Bebo +Because-Race-Car +Ben-Barba-Pointing +Bender +Benito +Bernie-I-Am-Once-Again-Asking-For-Your-Support +Beyonce-Knowles-Superbowl +Beyonce-Knowles-Superbowl-Face +Beyonce-Superbowl-Yell +Big-Bird +Big-Bird-And-Mitt-Romney +Big-Bird-And-Snuffy +Big-Ego-Man +Big-Family-Comeback +Bike-Fall +Bill-Murray-Golf +Bill-Nye-The-Science-Guy +Bill-OReilly +Billy-Graham-Mitt-Romney +Bitch-Please +Black-Girl-Wat +Blank-Blue-Background +Blank-Colored-Background +Blank-Comic-Panel-1x2 +Blank-Comic-Panel-2x1 +Blank-Comic-Panel-2x2 +Blank-Nut-Button +Blank-Starter-Pack +Blank-Transparent-Square +Blank-Yellow-Sign +Blob +Blue-Futurama-Fry +Boardroom-Meeting-Suggestion +Bonobo-Lyfe +Booty-Warrior +Bothered-Bond +Brace-Yourselves-X-is-Coming +Brian-Burke-On-The-Phone +Brian-Griffin +Brian-Williams-Was-There +Brian-Williams-Was-There-2 +Brian-Williams-Was-There-3 +Brian-Wilson-Vs-ZZ-Top +Britney-Spears +Bubba-And-Barack +Buddy-Christ +Buddy-The-Elf +Buff-Doge-vs-Cheems +Bullets +Burn-Kitty +Business-Cat +But-Thats-None-Of-My-Business +But-Thats-None-Of-My-Business-Neutral +Butthurt-Dweller +CASHWAG-Crew +CURLEY +Captain-Hindsight +Captain-Phillips-Im-The-Captain-Now +Captain-Picard-Facepalm +Car-Salesman-Slaps-Hood +Casper +Castaway-Fire +Ceiling-Cat +Cel-Jesuno +Cereal-Guy +Cereal-Guy-Spitting +Cereal-Guys-Daddy +Chad-Johnson +Chainsaw-Bear +Challenge-Accepted-Rage-Face +Change-My-Mind +Charlie-Sheen-Derp +Chavez +Chef-Gordon-Ramsay +Chemistry-Cat +Chester-The-Cat +Chicken-Bob +Chief-Keef +Chihuahua-dog +Chill-Out-Lemur +Chinese-Cat +Chocolate-Spongebob +Chubby-Bubbles-Girl +Chuck-Norris +Chuck-Norris-Approves +Chuck-Norris-Finger +Chuck-Norris-Flex +Chuck-Norris-Guns +Chuck-Norris-Laughing +Chuck-Norris-Phone +Chuck-Norris-With-Guns +Chuckchuckchuck +City-Bear +Cleavage-Girl +Clefable +Close-Enough +Clown-Applying-Makeup +College-Freshman +College-Liberal +Comic-Book-Guy +Computer-Guy +Computer-Guy-Facepalm +Computer-Horse +Condescending-Goku +Condescending-Wonka +Confession-Bear +Confused-Cam +Confused-Gandalf +Confused-Granddad +Confused-Lebowski +Confused-Mel-Gibson +Conspiracy-Keanu +Consuela +Contradictory-Chris +Cool-Cat-Stroll +Cool-Obama +Cool-Story-Bro +Corona +Costanza +Coulson +Courage-Wolf +Crazy-Dawg +Crazy-Girlfriend-Praying-Mantis +Crazy-Hispanic-Man +Creeper-Dog +Creepy-Condescending-Wonka +Criana +Crosseyed-Goku +Crying-Because-Of-Cute +Cute-Cat +Cute-Dog +Cute-Puppies +DJ-Pauly-D +Dad-Joke-Dog +Dafuq-Did-I-Just-Read +Dallas-Cowboys +Dancing-Trollmom +Darth-Maul +Darti-Boy +Dat-Ass +Dat-Boi +Dating-Site-Murderer +Dave-Chappelle +Dead-Space +Deadpool-Pick-Up-Lines +Deadpool-Surprised +Depressed-Cat +Depression-Dog +Derp +Derpina +Determined-Guy-Rage-Face +Dexter +Dick-Cheney +Disappointed-Tyson +Disaster-Girl +Distracted-Boyfriend +Do-I-Care-Doe +Doge +Doge-2 +Dolph-Ziggler-Sells +Donald-Trump-sewing-his-name-into-the-American-Flag +Dont-You-Squidward +DoucheBag-DJ +Doug +Down-Syndrome +Downcast-Dark-Souls +Downvoting-Roman +Dr-Crane +Dr-Evil +Dr-Evil-Laser +Drake-Bad-Good +Drake-Hotline-Bling +Drunk-Baby +Duck-Face +Duck-Face-Chicks +Dumb-Blonde +Dwight-Schrute +Dwight-Schrute-2 +ERMAHGERD-TWERLERT +Edu-Camargo +Edward-Elric-1 +Efrain-Juarez +Eighties-Teen +Eminem +Empty-Red-And-Black +Endel-Tulviste +Engineering-Professor +Epic-Handshake +Epicurist-Kid +Ermahgerd-Berks +Ermahgerd-Beyonce +Ermahgerd-IPHERN-3GM +Error-404 +Evil-Baby +Evil-Cows +Evil-Kermit +Evil-Otter +Evil-Plotting-Raccoon +Evil-Toddler +Excited-Cat +Excited-Minions +Expanding-Brain +Eye-Of-Sauron +FFFFFFFUUUUUUUUUUUU +FRANGO +Fabulous-Frank-And-His-Snake +Face-You-Make-Robert-Downey-Jr +Facepalm-Bear +Fake-Hurricane-Guy +Family-Guy-Brian +Family-Guy-Peter +Family-Tech-Support-Guy +Fast-Furious-Johnny-Tran +Fat-Cat +Fat-Val-Kilmer +Father-Ted +Fear-And-Loathing-Cat +Feels-Bad-Frog---Feels-Bad-Man +Felix-Baumgartner +Felix-Baumgartner-Lulz +Fernando-Litre +Fifa-E-Call-Of-Duty +Fim-De-Semana +Finding-Neverland +Fini +Finn-The-Human +First-Day-On-The-Internet-Kid +First-World-Frat-Guy +First-World-Problems +First-World-Problems-Cat +First-World-Stoner-Problems +Fk-Yeah +Flavor-Flav +Foal-Of-Mine +Folean-Dynamite +Forever-Alone +Forever-Alone-Christmas +Forever-Alone-Happy +Foul-Bachelor-Frog +Foul-Bachelorette-Frog +Friend-Zone-Fiona +Frowning-Nun +Frustrated-Boromir +Frustrating-Mom +Futurama-Fry +Futurama-Leela +Futurama-Zoidberg +Gaga-Baby +Gandhi +Gangnam-Style +Gangnam-Style-PSY +Gangnam-Style2 +Gangster-Baby +Gasp-Rage-Face +George-Bush +George-Washington +Ghetto-Jesus +Ghost-Nappa +Giovanni-Vernia +Give-me-Karma---Beating-the-dead-horse +Gladys-Falcon +God +Gollum +Good-Fellas-Hilarious +Good-Guy-Greg +Good-Guy-Pizza-Rolls +Good-Guy-Putin +Good-Guy-Socially-Awkward-Penguin +Google-Chrome +Gordo +Got-Room-For-One-More +Gotta-Go-Cat +Grandma-Finds-The-Internet +Green-Day +Grumpy-Cat +Grumpy-Cat-Bed +Grumpy-Cat-Birthday +Grumpy-Cat-Christmas +Grumpy-Cat-Does-Not-Believe +Grumpy-Cat-Halloween +Grumpy-Cat-Happy +Grumpy-Cat-Mistletoe +Grumpy-Cat-Not-Amused +Grumpy-Cat-Reverse +Grumpy-Cat-Sky +Grumpy-Cat-Star-Wars +Grumpy-Cat-Table +Grumpy-Cat-Top-Hat +Grumpy-Cats-Father +Grumpy-Toad +Grus-Plan +Guinness-World-Record +Guy-Fawkes +Guy-Holding-Cardboard-Sign +Hal-Jordan +Hamtaro +Han-Solo +Happy-Guy-Rage-Face +Happy-Minaj +Happy-Minaj-2 +Happy-Star-Congratulations +Hard-To-Swallow-Pills +Hardworking-Guy +Harley-Quinn +Harmless-Scout-Leader +Harper-WEF +Harry-Potter-Ok +Hawkward +He-Needs-The-Vaccine +He-Will-Never-Get-A-Girlfriend +Headbanzer +Headless-Rider-DRRR +Heavy-Breathing-Cat +Hedonism-Bot +Hello-Kassem +Hello-Kitty +Helpful-Tyler-Durden +Henry-David-Thoreau +Hercules-Hades +Heres-Johnny +Herm-Edwards +Hey-Internet +Hide-Yo-Kids-Hide-Yo-Wife +Hide-the-Pain-Harold +High-Dog +High-Expectations-Asian-Father +Hillary-Clinton +Hillary-Clinton-Cellphone +Hipster-Ariel +Hipster-Barista +Hipster-Kitty +Hohoho +Homophobic-Seal +Hoody-Cat +Hora-Extra +Hornist-Hamster +Horny-Harry +Hot-Caleb +Hot-Scale +Hotline-Miami-Richard +House-Bunny +How-About-No-Bear +How-Tough-Are-You +Hypnotoad +Hypocritical-Islam-Terrorist +Hysterical-Tom +I-Am-Not-A-Gator-Im-A-X +I-Bet-Hes-Thinking-About-Other-Women +I-Forsee +I-Guarantee-It +I-Have-No-Idea-What-I-Am-Doing +I-Have-No-Idea-What-I-Am-Doing-Dog +I-Know-Fuck-Me-Right +I-Know-That-Feel-Bro +I-Lied-2 +I-See-Dead-People +I-Should-Buy-A-Boat-Cat +I-Too-Like-To-Live-Dangerously +I-Was-Told-There-Would-Be +I-Will-Find-You-And-Kill-You +Idiot-Nerd-Girl +Idiotaco +If-You-Know-What-I-Mean-Bean +Ill-Have-You-Know-Spongebob +Ill-Just-Wait-Here +Im-Curious-Nappa +Im-Fabulous-Adam +Im-The-Captain-Now +Imagination-Spongebob +Impossibru-Guy-Original +Inception +Inhaling-Seagull +Inigo-Montoya +Innocent-Sasha +Insanity-Puppy +Insanity-Wolf +Intelligent-Dog +Internet-Explorer +Internet-Guide +Interupting-Kanye +Invalid-Argument-Vader +Is-This-A-Pigeon +Islam-Rage---Angry-Muslim +Its-Finally-Over +Its-Not-Going-To-Happen +Its-True-All-of-It-Han-Solo +Jack-Nicholson-The-Shining-Snow +Jack-Sparrow-Being-Chased +Jackie-Chan-WTF +Jammin-Baby +Jay-Knows-Facts +Jehovas-Witness-Squirrel +Jerkoff-Javert +Jersey-Santa +Jessica-Nigri-Cosplay +Jesus-Talking-To-Cool-Dude +Jim-Lehrer-The-Man +Joe-Biden +John-Riley-Condescension +Joker +Joker-Rainbow-Hands +Jon-Stewart-Skeptical +Joo-Espontneo +Joseph-Ducreux +Justin-Bieber-Suit +Karate-Kid +Karate-Kyle +Keep-Calm-And-Carry-On-Aqua +Keep-Calm-And-Carry-On-Black +Keep-Calm-And-Carry-On-Purple +Keep-Calm-And-Carry-On-Red +Kevin-Hart +Kevin-Hart-The-Hell +Kill-You-Cat +Kill-Yourself-Guy +Kim-Jong-Il-Y-U-No +Kim-Jong-Un-Sad +Koala +Kobe +Kool-Kid-Klan +Krusty-Krab-Vs-Chum-Bucket +Krusty-Krab-Vs-Chum-Bucket-Blank +Kyon-Face-Palm +LIGAF +LOL-Guy +Lame-Pun-Coon +Larfleeze +Larry-The-Cable-Guy +Laughing-Goat +Laughing-Leo +Laughing-Men-In-Suits +Laughing-Villains +Laundry-Viking +Lazy-College-Senior +Left-Exit-12-Off-Ramp +Legal-Bill-Murray +Leonardo-Dicaprio-Cheers +Leonardo-Dicaprio-Wolf-Of-Wall-Street +Lethal-Weapon-Danny-Glover +Lewandowski-E-Reus +Liam-Neeson-Taken +Liam-Neeson-Taken-2 +Life-Sucks +Lil-Wayne +Lion-King +Little-Romney +Look-At-All-These +Look-At-Me +Look-Son +Luiz-Fabiano +Macklemore-Thrift-Store +Mad-Money-Jim-Cramer +Mad-Moxxi +Malicious-Advice-Mallard +Mamimoe +Manning-Broncos +Mario-Hammer-Smash +Marked-Safe-From +Maroney-And-Obama-Not-Impressed +Marvel-Civil-War +Marvel-Civil-War-1 +Marvel-Civil-War-2 +Matanza +Matrix-Morpheus +Maury-Lie-Detector +Mayu-Watanabe +McKayla-Maroney-Not-Impressed +McKayla-Maroney-Not-Impressed2 +McMelch +Mega-Rage-Face +Member-Berries +Meme-Dad-Creature +Memeo +Men-In-Black +Men-Laughing +Merida-Brave +Metal-Jesus +Mexican-Pizza +Michael-Jackson-Popcorn +Michael-Phelps-Death-Stare +Minegishi-Minami +Minegishi-Minami2 +Minor-Mistake-Marvin +Misunderstood-Mitch +Mitch-McConnell +Mocking-Spongebob +Modern-Warfare-3 +Molly-Weasley +Money-Man +Money-Money +Monkey-Business +Monkey-OOH +Monkey-Puppet +Morgan-Freeman-Good-Luck +Morpheus +Morty +Mother-Of-God +Mozart-Not-Sure +Mr-Black-Knows-Everything +Mr-Krabs-Blur-Meme +Mr-Mackey +Mr-T +Mr-T-Pity-The-Fool +Mugatu-So-Hot-Right-Now +Multi-Doge +Murica +Muschamp +Musically-Oblivious-8th-Grader +NPC +Nabilah-Jkt48 +Nailed-It +Nakagawa-Haruka +Natsu +Neil-deGrasse-Tyson +Net-Noob +Nice-Guy-Loki +Nickleback +Nicolas-Cage---You-dont-say +Nilo +Nissim-Ourfali +No-Bullshit-Business-Baby +No-I-Cant-Obama +No-Nappa-Its-A-Trick +No-Patrick +Not-Bad-Obama +Not-Okay-Rage-Face +Not-a-Meme,-Just-Boobs +Nuclear-Explosion +OMG-Cat +OMG-Karen +Obama +Obama-Cowboy-Hat +Obama-No-Listen +Obama-Romney-Pointing +Obi-Wan-Kenobi +Oblivious-Hot-Girl +Officer-Cartman +Oh-My-God-Orange +Oh-No +Okay-Guy-Rage-Face +Okay-Guy-Rage-Face2 +Okay-Truck +Oku-Manami +Onde +One-Does-Not-Simply +Oprah-You-Get-A +Oprah-You-Get-A-Car-Everybody-Gets-A-Car +Optimistic-Niall +Ordinary-Muslim-Man +Original-Bad-Luck-Brian +Original-I-Lied +Original-Stoner-Dog +Osabama +Our-Glorious-Leader-Nicolas-Cage +Over-Educated-Problems +Overjoyed +Overly-Attached-Father +Overly-Attached-Girlfriend +Overly-Attached-Nicolas-Cage +Overly-Manly-Man +Overly-Suave-IT-Guy +PPAP +PTSD-Clarinet-Boy +Packers +Panik-Kalm-Panik +Papa-Fking-John +Paranoid-Parrot +Pat-Quinn +Pathetic-Spidey +Patrick-Bateman +Patrick-Henry +Patrick-Says +Patriotic-Eagle +Paul-Ryan +Paul-Wonder-Years +Pedobear +Pedophile-Orochimaru +Pelosi +Penguin-Gang +Pentagon-Hexagon-Octagon +Pepperidge-Farm-Remembers +Perfection-Michael-Fassbender +Permission-Bane +Persian-Cat-Room-Guardian +Persian-Cat-Room-Guardian-Single +Perturbed-Portman +Peter-Griffin-News +Peter-Parker-Cry +Philosoraptor +Photogenic-College-Football-Player +Photogenic-Scene-Guy +Picard-Wtf +Pickle-Rick +Pickup-Line-Panda +Pickup-Master +Pickup-Professor +Pillow-Pet +Pink-Escalade +Pinky-and-the-Brain +Pissed-Off-Obama +Police-Officer-Testifying +Pony-Shrugs +Pope-Nicolas-Cage +Portuguese +Pothead-Fry +Predator +Premature-Pete +Presidential-Alert +Priority-Peter +Professor-Oak +Proper-Lady +Psy-Horse-Dance +Put-It-Somewhere-Else-Patrick +Putin +Question-Rage-Face +Questionable-Strategy-Kobe +Quit-Hatin +RPG-Fan +Rarity +Rasta-Science-Teacher +Really-Evil-College-Teacher +Rebecca-Black +Redditors-Wife +Rediculously-Well-Mannered-Athlete +Redneck-Randal +Reimu-Hakurei +Relaxed-Office-Guy +Religious-Couple +Rena-Matsui +Rich-Guy-Dont-Care +Rich-Raven +Richard-Benson +Rick +Rick-Grimes +Rick-and-Carl +Rick-and-Carl-3 +Rick-and-Carl-Long +Rick-and-Carl-Longer +Ridiculously-Photogenic-Guy +Ridiculously-Photogenic-Judge +Right-In-The-Childhood +Rmoney-Again +Rob-In-The-Hood +Robots +Rocket-Raccoon +Rodgers-Doublecheck +Roll-Safe-Think-About-It +Romney +Romney-And-Ryan +Romney-Bong +Romneys-Hindenberg +Ron-Burgundy +Ron-Swanson +Running-Away-Balloon +Ryan-Gosling +Sad-Axl +Sad-Baby +Sad-Cat +Sad-Keanu +Sad-Pablo-Escobar +Sad-Spiderman +Sad-X-All-The-Y +Sadly-I-Am-Only-An-Eel +Samuel-Jackson-Glance +Samuel-L-Jackson +Sarcastic-Anthony +Sassy-Iguana +Satisfied-Seal +Saw-Fulla +Say-That-Again-I-Dare-You +Scared-Cat +Scary-Harry +Scene-Wolf +Scooby-Doo +Scott-Howson +Scrooge-McDuck +Scrooge-McDuck-2 +Scumbag-Boss +Scumbag-Brain +Scumbag-Daylight-Savings-Time +Scumbag-Girl +Scumbag-Job-Market +Scumbag-MSNBC +Scumbag-Minecraft +Scumbag-Miraak +Scumbag-Muslim +Scumbag-Parents +Scumbag-Redditor +Scumbag-Steve +Secure-Parking +See-Nobody-Cares +Self-Loathing-Otter +Selfish-Ozzy +Sergeant-Hartmann +Serious-Xzibit +Seriously-Face +Sexual-Deviant-Walrus +Sexually-Oblivious-Girlfriend +Sexually-Oblivious-Rhino +Sexy-Railroad-Spiderman +Shaq-Only-Smokes-The-Dankest +Sheltering-Suburban-Mom +Shocked-Ape +Short-Satisfaction-VS-Truth +Shouter +Shrek-Cat +Shut-Up-And-Take-My-Money-Fry +Shutup-Batty-Boy +Sidious-Error +Sigmund-Freud +Simba-Shadowy-Place +Simpsons-Grandpa +Simsimi +Since-When-Were-You-Under-The-Impression +Sinestro +Skeptical-Baby +Skeptical-Swardson +Skinhead-John-Travolta +Skype +Sleeping-Shaq +Slenderman +Slick-Fry +Slowpoke +Small-Dog +Small-Face-Romney +Smilin-Biden +Smiling-Cat +Smiling-Jesus +Smirk-Rage-Face +Smug-Bear +Snape +Snoop +So-God-Made-A-Farmer +So-I-Got-That-Goin-For-Me-Which-Is-Nice +So-I-Got-That-Goin-For-Me-Which-Is-Nice-2 +So-I-Guess-You-Can-Say-Things-Are-Getting-Pretty-Serious +So-Many-Shirts +So-Much-Drama +Socially-Awesome-Awkward-Penguin +Socially-Awesome-Penguin +Socially-Awkward-Awesome-Penguin +Socially-Awkward-Couple +Socially-Awkward-Penguin +Solemn-Lumberjack +SonTung +Sotally-Tober +South-Park-Craig +Spacey-Casey +Spangles +Sparta-Leonidas +Speechless-Colbert-Face +Spiderman-Camera +Spiderman-Computer-Desk +Spiderman-Hospital +Spiderman-Laugh +Spiderman-Peter-Parker +Sponegebob-Coffee +Spongebob-Ight-Imma-Head-Out +Spongegar +Squidward +Star-Wars-No +Star-Wars-Yoda +Stephen-Harper-Podium +Steve-Harvey +Steve-Jobs +Stoner-Dog +Stoner-PhD +Stop-Cop +Storytelling-Grandpa +Subtle-Pickup-Liner +Success-Kid +Success-Kid-Girl +Success-Kid-Original +Successful-Black-Man +Sudden-Clarity-Clarence +Sudden-Disgust-Danny +Super-Birthday-Squirrel +Super-Cool-Ski-Instructor +Super-Kami-Guru-Allows-This +Superior-Wadsworth +Surpised-Frodo +Surprised-CatMan +Surprised-Coala +Surprised-Koala +Surprised-Pikachu +Surprized-Vegeta +Suspicious-Cat +Sweaty-Concentrated-Rage-Face +TED +TSA-Douche +Table-Flip-Guy +Take-A-Seat-Cat +Talk-To-Spongebob +Tamou +Team-Rocket +Tears-Of-Joy +Tech-Impaired-Duck +Tennis-Defeat +Terry-Davis +That-Would-Be-Great +Thats-Just-Something-X-Say +Thats-a-paddlin +The-Bobs +The-Critic +The-Most-Interesting-Cat-In-The-World +The-Most-Interesting-Justin-Bieber +The-Most-Interesting-Man-In-The-World +The-Probelm-Is +The-Problem-Is +The-Rock-Driving +The-Rock-It-Doesnt-Matter +The-Scroll-Of-Truth +These-Arent-The-Droids-You-Were-Looking-For +Theyre-The-Same-Picture +Think +Third-World-Skeptical-Kid +Third-World-Success-Kid +This-Is-Fine +This-Is-Where-Id-Put-My-Trophy-If-I-Had-One +Thumbs-Up-Emoji +Time-To-Fap +Today-Was-A-Good-Day +Tom-Hardy- +Tomas-Rosicky +Too-Damn-High +Too-Drunk-At-Party-Tina +Too-Kool-Kyle +Torreshit +Tough-Guy-Wanna-Be +Trailer-Park-Boys-Bubbles +Travelonshark +Troll-Face +Troll-Face-Colored +True-Story +Trump-Bill-Signing +Turkey +Tuxedo-Winnie-The-Pooh +Two-Buttons +UNO-Draw-25-Cards +USA-Lifter +Ugly-Twins +Uncle-Sam +Unhappy-Baby +Unhelpful-High-School-Teacher +Unicorn-MAN +Unpopular-Opinion-Puffin +Unsettled-Tom +Unwanted-House-Guest +V-For-Vendetta +Vali-Corleone +Vengeance-Dad +Viking-Dudes +Vladimir-Putin +WTF +Waiting-Skeleton +Warning-Sign +We-Will-Rebuild +Weird-Stuff-I-Do-Potoo +Welcome-To-The-Internets +Well-That-Escalated-Quickly +What-Do-We-Want +What-Do-We-Want-3 +What-Year-Is-It +Whisper-Sloth +Who-Killed-Hannibal +Why-Cant-I +Why-Cant-I-Hold-All-These-Limes +Why-Is-The-Rum-Gone +Why-Not-Both +Will-Ferrell +Wink +Woah-Kitty +Woman-Yelling-At-Cat +Wrong-Neighboorhood-Cats +Wrong-Number-Rita +X,-X-Everywhere +X-All-The-Y +X-Everywhere +X-X-Everywhere +Y-U-No +Yakuza +Yall-Got-Any-More-Of +Yall-Got-Any-More-Of-That +Yao-Ming +Yo-Dawg-Heard-You +Yo-Mamas-So-Fat +You-Dont-Say +You-Dont-Want-No-Part-Of-This +You-Get-An-X-And-You-Get-An-X +You-Should-Feel-Bad-Zoidberg +You-The-Real-MVP +You-The-Real-MVP-2 +You-Underestimate-My-Power +You-Were-The-Chosen-One-Star-Wars +Young-And-Reckless +Young-Cardi-B +Youre-Too-Slow-Sonic +Yuko-With-Gun +ZNMD +Zoidberg-Jesus +Zombie-Bad-Luck-Brian +Zombie-Overly-Attached-Girlfriend +Zorg +Zuckerberg +Zura-Janai-Katsura-Da +confession-kid \ No newline at end of file diff --git a/readme.MD b/readme.MD new file mode 100644 index 0000000000000000000000000000000000000000..762ebf86f0b58b32118c4a14262330c9fb002030 --- /dev/null +++ b/readme.MD @@ -0,0 +1 @@ +MemeBot propojuje dvÄ› API a to konkrĂ©tnÄ› API pro generovánĂ MEME a API genrovánĂ náhodnĂ˝ch vtipĹŻ. Tj. snažà se vygenerovat náhodnĂ© meme text + obrázek z rĹŻznĂ˝ch zdrojĹŻ.\n\nPouĹľitĂ© API:\n- [API pro generovánĂ meme](http://swagger.io/irc/) - API vracĂ JPEG obrázek \n- [API pro genrovánĂ náhodnĂ˝ch vtipĹŻ](http://swagger.io/irc/) - API vracĂ JSON onbjekt s vtipem diff --git a/swagger.json b/swagger.json new file mode 100644 index 0000000000000000000000000000000000000000..52b2088837bf9c7901f86fca0fb76b024b0050f3 --- /dev/null +++ b/swagger.json @@ -0,0 +1,96 @@ +{ + "swagger": "2.0", + "info": { + "description": " MemeBot propojuje dvÄ› API a to konkrĂ©tnÄ› API pro generovánĂ MEME a API genrovánĂ náhodnĂ˝ch vtipĹŻ. Tj. snažà se vygenerovat náhodnĂ© meme text + obrázek z rĹŻznĂ˝ch zdrojĹŻ.\n\nPouĹľitĂ© API:\n- [API pro generovánĂ meme](http://swagger.io/irc/) - API vracĂ JPEG obrázek \n- [API pro genrovánĂ náhodnĂ˝ch vtipĹŻ](http://swagger.io/irc/) - API vracĂ JSON onbjekt s vtipem ", + "version": "1.0.0", + "title": "Meme Bot", + "contact": { + "email": "veselj57@fel.cvut.cz" + } + }, + "host": "petstore.swagger.io", + "basePath": "/", + "schemes": [ + "http" + ], + "paths": { + "/random": { + "get": { + "summary": "VrátĂ náhodnĂ© meme ve formátu JPEG podle zadanĂ˝ch atributĹŻ", + "produces": [ + "image/jpeg" + ], + "parameters": [ + { + "in": "query", + "name": "type", + "type": "string", + "description": "Typ meme specifikovananĂ˝ jokapi: TWOPART, SINGLE", + "required": true + }, + { + "in": "query", + "name": "topic", + "type": "string", + "description": "Topic meme specifikovananĂ˝ jokapi: Programming, Miscellaneous, Dark, Pun, Spooky, Christmas, Any", + "required": true + }, + { + "in": "query", + "name": "image", + "type": "string", + "description": "PodkladovĂ˝ obrázek specifikovananĂ˝ apimeme: Advice-Dog, ... ", + "required": true + } + ], + "responses": { + "200": { + "description": "NáhodnÄ› vtgenerovanĂ˝ obrázek" + }, + "402": { + "description": "Validace parametrĹŻ" + } + } + } + }, + "/generate": { + "get": { + "summary": "Wrapper nad api meme, kterĂ˝ vygeneruje meme na základÄ› obrázku, hornĂho a dolnĂho textu", + "produces": [ + "image/jpeg" + ], + "parameters": [ + { + "in": "query", + "name": "top_text", + "type": "string", + "description": "Text na hornà řádek meme", + "required": true + }, + { + "in": "query", + "name": "bottom_text", + "type": "string", + "description": "Text na spodnà řádek meme", + "required": true + }, + { + "in": "query", + "name": "image", + "type": "string", + "description": "PodkladovĂ˝ obrázek specifikovananĂ˝ apimeme: Advice-Dog, ... ", + "required": true + } + ], + "responses": { + "200": { + "description": "VygenerovanĂ© meme na základÄ› vstupnĂch parametrĹŻ" + }, + "402": { + "description": "Validace parametrĹŻ" + } + } + } + } + } +} \ No newline at end of file