diff --git a/.gitignore b/.gitignore index 6756d12b..e3b35307 100644 --- a/.gitignore +++ b/.gitignore @@ -34,7 +34,7 @@ node_modules/ debug # pixy -❖.go +$.go # binaries /notify.moe \ No newline at end of file diff --git a/anime.css b/anime.css deleted file mode 100644 index ba2aa98b..00000000 --- a/anime.css +++ /dev/null @@ -1 +0,0 @@ -.anime-container{float:left;width:100%;padding:0;text-align:left;border-radius:3px;box-sizing:border-box}.anime-links{float:left;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.anime-links-category{-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:100%;flex-basis:100%}.anime-title-db{text-align:left;width:auto}.second-title-container{float:left;width:100%;text-align:left;margin-top:-.6em;margin-bottom:.6em}.second-title{font-size:.9em;font-weight:normal;color:rgba(60,60,60,0.5) !important}.anime-summary-header{display:block}.anime-summary{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:300px;max-width:100%;margin-left:0;}.anime-summary .anime-header{margin-top:0}.anime-trailer{width:100%}.genre-list{list-style-type:none;margin-left:.5em}.sources{font-size:.8em;opacity:.5}.anime-header{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:row;flex-flow:row}.anime-image{border-radius:3px;box-shadow:4px 4px 8px rgba(0,0,0,0.12);-webkit-filter:saturate(100%);filter:saturate(100%);-webkit-transition:all 290ms ease;transition:all 290ms ease;}.anime-image:hover{-webkit-filter:saturate(130%);filter:saturate(130%);box-shadow:6px 6px 12px rgba(0,0,0,0.2)}.anime-image-container{-ms-flex-negative:0;flex-shrink:0;text-align:center;margin-bottom:1rem;}.anime-image-container .anime-image{margin:0 !important;margin-right:1.5rem !important;width:225px}.info-column{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column}.users-count{opacity:.5;font-size:.9em}.anime-frontpage h2,.anime-frontpage h3{text-align:center}.popular-anime-list{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.popular-anime{padding:.5em;display:block}.popular-anime-image{width:100px !important;height:141px !important}.light-button-group{float:left;width:100%;margin:0;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;font-size:.9em}.light-button{padding:.5em 1em;border-radius:3px;}.light-button:hover{color:#fff !important;background-color:#f25d1e}.entry-error{color:#f00 !important}.entry-ok{color:#008000 !important}#search{float:none}#search-results{width:100%;max-width:560px;text-align:left;margin:0 auto}.search-performance,.anime-count{opacity:.25;text-align:center !important}.search-result{float:left;width:100%;padding:.25em .5em;border-radius:3px;box-sizing:border-box;}.search-result:focus{background-color:#202020 !important;color:#e8e8e8 !important}@media only screen and (max-width:800px){.anime-header{-ms-flex-flow:row wrap;flex-flow:row wrap}.anime-title-db,.second-title-container,.anime-image-container{text-align:center;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}} \ No newline at end of file diff --git a/api.go b/api.go new file mode 100644 index 00000000..d28f4899 --- /dev/null +++ b/api.go @@ -0,0 +1,50 @@ +package main + +import ( + "sort" + "strconv" + "strings" + "time" + + "github.com/aerojs/aero" + "github.com/animenotifier/arn" +) + +func init() { + app.Get("/all/anime", func(ctx *aero.Context) string { + start := time.Now() + var titles []string + + results := make(chan *arn.Anime) + arn.Scan("Anime", results) + + for anime := range results { + titles = append(titles, anime.Title.Romaji) + } + sort.Strings(titles) + + return ctx.Text(s(len(titles)) + " anime fetched in " + s(time.Since(start)) + "\n\n" + strings.Join(titles, "\n")) + }) + + app.Get("/api/anime/:id", func(ctx *aero.Context) string { + id, _ := strconv.Atoi(ctx.Get("id")) + anime, err := arn.GetAnime(id) + + if err != nil { + return ctx.Text("Anime not found") + } + + return ctx.JSON(anime) + }) + + app.Get("/api/users/:nick", func(ctx *aero.Context) string { + nick := ctx.Get("nick") + user, err := arn.GetUserByNick(nick) + + if err != nil { + return ctx.Text("User not found") + } + + return ctx.JSON(user) + }) +} diff --git a/app.go b/app.go new file mode 100644 index 00000000..1056bad0 --- /dev/null +++ b/app.go @@ -0,0 +1,27 @@ +package main + +import ( + "io/ioutil" + + "github.com/aerojs/aero" +) + +var app = aero.New() + +func main() { + app.SetStyle(bundledCSS) + + scripts, _ := ioutil.ReadFile("temp/scripts.js") + js := string(scripts) + + app.Get("/scripts.js", func(ctx *aero.Context) string { + ctx.SetHeader("Content-Type", "application/javascript") + return js + }) + + app.Layout = func(ctx *aero.Context, content string) string { + return Render.Layout(content) + } + + app.Run() +} diff --git a/components/anime.pixy b/components/anime/anime.pixy similarity index 93% rename from components/anime.pixy rename to components/anime/anime.pixy index cad645d7..e6b0e6e8 100644 --- a/components/anime.pixy +++ b/components/anime/anime.pixy @@ -22,11 +22,11 @@ component Anime(anime *arn.Anime) if anime.YoutubeID != "" h3.anime-header Video .anime-trailer.video-container - iframe.video(src="https://www.youtube.com/embed/" + anime.YoutubeID + "?showinfo=0", frameborder="0", allowfullscreen="allowfullscreen") + iframe.video(src="https://www.youtube.com/embed/" + anime.YoutubeID + "?showinfo=0", allowfullscreen="allowfullscreen") if anime.Tracks != nil && anime.Tracks.Opening != nil h3.anime-header Tracks - iframe(width="100%", height="150", scrolling="no", frameborder="no", src="https://w.soundcloud.com/player/?url=" + anime.Tracks.Opening.URI + "?auto_play=false&hide_related=true&show_comments=true&show_user=true&show_reposts=false&visual=true") + iframe.anime-track(src="https://w.soundcloud.com/player/?url=" + anime.Tracks.Opening.URI + "?auto_play=false&hide_related=true&show_comments=true&show_user=true&show_reposts=false&visual=true") //- if user && friendsWatching && friendsWatching.length > 0 //- include ../messages/avatar.pug @@ -42,7 +42,7 @@ component Anime(anime *arn.Anime) each genre in anime.Genres if genre != "" a.light-button.ajax(href="/genres/" + arn.FixGenre(genre)) - Icon(GenreIcons[genre]) + Icon(arn.GenreIcons[genre]) span= genre if len(anime.Studios) > 0 diff --git a/components/anime/anime.styl b/components/anime/anime.styl new file mode 100644 index 00000000..37b5fc76 --- /dev/null +++ b/components/anime/anime.styl @@ -0,0 +1,167 @@ +.anime-container + float left + width 100% + padding 0 + text-align left + border-radius 3px + box-sizing border-box + +.anime-links + float left + width 100% + display flex + flex-flow row wrap + +.anime-links-category + flex 1 + flex-basis 100% + // min-width 300px + // max-width 100% + +.anime-title-db + text-align left + width auto + +.second-title-container + float left + width 100% + text-align left + margin-top -0.6em + margin-bottom 0.6em + +.second-title + font-size 0.9em + font-weight normal + color rgba(60, 60, 60, 0.5) !important + +.anime-summary-header + display block + +.anime-summary + flex 1 + min-width 300px + max-width 100% + margin-left 0 + .anime-header + margin-top 0 + +.anime-trailer + width 100% + +.genre-list + list-style-type none + margin-left 0.5em + +.sources + font-size 0.8em + opacity 0.5 + +.anime-header + display flex + flex-flow row + +.anime-image + border-radius 3px + box-shadow 4px 4px 8px rgba(0, 0, 0, 0.12) + filter saturate(100%) + transition all 290ms ease + &:hover + filter saturate(130%) + box-shadow 6px 6px 12px rgba(0, 0, 0, 0.2) + +.anime-image-container + flex-shrink 0 + text-align center + margin-bottom 1rem + .anime-image + margin 0 !important + margin-right 1.5rem !important + width 225px + +.anime-track + width 100% + height 150px + +.info-column + flex-grow 1 + display flex + flex-flow column + +.users-count + opacity 0.5 + font-size 0.9em + +.anime-frontpage + h2, h3 + text-align center + +.popular-anime-list + width 100% + display flex + flex-flow row wrap + justify-content center + +.popular-anime + padding 0.5em + display block + +.popular-anime-image + width 100px !important + height 141px !important + +.light-button-group + float left + width 100% + margin 0 + width auto + display flex + flex-flow row wrap + justify-content flex-start + font-size 0.9em + +.light-button + display inline-block + padding 0.5em 1em + border-radius 3px + &:hover + color white !important + background-color linkHoverColor + +.entry-error + color red !important + +.entry-ok + color green !important + +#search + float none + +#search-results + width 100% + max-width 560px + text-align left + margin 0 auto + +.search-performance, .anime-count + opacity 0.25 + text-align center !important + +.search-result + float left + width 100% + padding 0.25em 0.5em + border-radius 3px + box-sizing border-box + &:focus + background-color rgb(32, 32, 32) !important + color rgb(232, 232, 232) !important + +@media only screen and (max-width: 800px) + .anime-header + flex-flow row wrap + + .anime-title-db + .second-title-container + .anime-image-container + text-align center + flex-grow 1 \ No newline at end of file diff --git a/components/anime/anime.ts b/components/anime/anime.ts new file mode 100644 index 00000000..90c9da37 --- /dev/null +++ b/components/anime/anime.ts @@ -0,0 +1 @@ +console.log("Hello Typescript") \ No newline at end of file diff --git a/components/genres/GenreOverview.styl b/components/genres/GenreOverview.styl deleted file mode 100644 index d98f9832..00000000 --- a/components/genres/GenreOverview.styl +++ /dev/null @@ -1,5 +0,0 @@ -h2 - text-align center - -.light-button - display inline-block \ No newline at end of file diff --git a/components/genres/genres.pixy b/components/genres/genres.pixy index 5cdf0ac8..7d7453bb 100644 --- a/components/genres/genres.pixy +++ b/components/genres/genres.pixy @@ -1,14 +1,14 @@ component GenreOverview - h2 Genres + h2.genre-header Genres div - each genre in Genres + each genre in arn.Genres a.light-button.ajax(href="/genres/" + arn.FixGenre(genre)) - Icon(GenreIcons[genre]) + Icon(arn.GenreIcons[genre]) span= genre component AnimeInGenre(genre string, animeList []*arn.Anime) - h2= "#" + genre + h2.genre-header= arn.Capitalize(genre) .genre-anime-list each anime in animeList a.genre-anime-link.ajax(href="/anime/" + s(anime.ID)) diff --git a/components/genres/AnimeInGenre.styl b/components/genres/genres.styl similarity index 95% rename from components/genres/AnimeInGenre.styl rename to components/genres/genres.styl index a6bb2bfd..2fb5b2d9 100644 --- a/components/genres/AnimeInGenre.styl +++ b/components/genres/genres.styl @@ -1,4 +1,4 @@ -h2 +.genre-header text-align center .genre-anime-list diff --git a/config.json b/config.json new file mode 100644 index 00000000..1f7a71f5 --- /dev/null +++ b/config.json @@ -0,0 +1,39 @@ +{ + "domain": "notify.moe", + "title": "Anime Notifier", + "fonts": [ + "Ubuntu" + ], + "styles": [ + "reset", + "font-awesome", + "base", + "elements", + "layout", + "navigation", + "headers", + "forms", + "colors", + "animelist", + "forum", + "settings", + "user", + "video", + "loading", + "fade", + "mobile" + ], + "static": [ + "images" + ], + "icons": [ + "images/characters/arn-waifu.png" + ], + "manifest": { + "gcm_sender_id": "941298467524" + }, + "ports": { + "http": 4000, + "https": 4001 + } +} \ No newline at end of file diff --git a/genres.go b/genres.go deleted file mode 100644 index 0ec2f74b..00000000 --- a/genres.go +++ /dev/null @@ -1,49 +0,0 @@ -package main - -import "sort" - -// Genres ... -var Genres []string - -// GenreIcons ... -var GenreIcons = map[string]string{ - "Action": "bomb", - "Adventure": "diamond", - "Cars": "car", - "Comedy": "smile-o", - "Drama": "heartbeat", - "Ecchi": "heart-o", - "Fantasy": "tree", - "Game": "gamepad", - "Harem": "group", - "Hentai": "venus-mars", - "Historical": "history", - "Horror": "frown-o", - "Kids": "child", - "Martial Arts": "hand-rock-o", - "Magic": "magic", - "Mecha": "reddit-alien", - "Military": "fighter-jet", - "Music": "music", - "Mystery": "question", - "Psychological": "lightbulb-o", - "Romance": "heart", - "Sci-Fi": "space-shuttle", - "School": "graduation-cap", - "Seinen": "male", - "Shounen": "male", - "Shoujo": "female", - "Slice of Life": "hand-peace-o", - "Sports": "soccer-ball-o", - "Supernatural": "magic", - "Super Power": "flash", - "Thriller": "hourglass-end", - "Vampire": "eye", -} - -func init() { - for k := range GenreIcons { - Genres = append(Genres, k) - } - sort.Strings(Genres) -} diff --git a/layout.css b/layout.css deleted file mode 100644 index 67fc3176..00000000 --- a/layout.css +++ /dev/null @@ -1 +0,0 @@ -@font-face {font-family:'Ubuntu';font-style:normal;font-weight:400;src:local('Ubuntu'),url(https://fonts.gstatic.com/s/ubuntu/v9/2Q-AW1e_taO6pHwMXcXW5w.ttf) format('truetype');}html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,address,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,var,b,i,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video,main{outline:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;background:transparent}html{box-sizing:border-box}textarea{resize:vertical}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}table{border-collapse:collapse;border-spacing:0}audio,canvas,img,video,input,select{vertical-align:middle}:focus{outline:0}*{margin:0;padding:0;box-sizing:inherit} @font-face{font-family:'FontAwesome';src:url("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/fonts/fontawesome-webfont.woff2") format('woff2'),url("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/fonts/fontawesome-webfont.woff") format('woff');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;font-smoothing:antialiased;osx-font-smoothing:grayscale;}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none;}.fa-ul > li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center;}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.pull-right{float:right}.pull-left{float:left}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{-webkit-filter:none;filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}html{height:100%}body{font-family:"Ubuntu","Trebuchet MS",sans-serif;font-size:1.05em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;overflow-x:hidden;overflow-y:hidden;height:100%}a{text-decoration:none;-webkit-transition:all 290ms ease;transition:all 290ms ease;}a:hover{text-decoration:none}a:active{-webkit-transform:translateY(3px);transform:translateY(3px)}section{float:left;width:100%}.icon-list{margin-left:1px !important;list-style-type:none;}.icon-list .fa{opacity:.93}.powered-by{opacity:.8;font-size:.9em;margin-top:1em}.maintenance{width:100%;height:100%;text-align:center;padding:1em;font-size:3em;line-height:1.5em}.region-block{float:left;width:100%;font-size:1.2em;padding:1em;}.region-block p{text-align:center;max-width:none}.editor-info{max-width:1200px} p,ul,ol,h3,dl,blockquote,label{line-height:1.7em;float:left;width:100%}p,ul,ol,pre,h2,dl,blockquote,label{text-align:left;margin-top:.4em;margin-bottom:.4em;float:left}p{max-width:728px;clear:both}dl{max-width:728px}dt{font-weight:bold;font-size:1.4em;line-height:2.5em}dd{margin-left:1em;margin-bottom:1em}table{float:left;width:100%}iframe{float:left;display:block;margin:0 auto}pre{border:1px solid #808080;padding:1em;width:calc(100% - 2em);box-shadow:1px 1px 16px rgba(0,0,0,0.6);color:#e0e0e0;background-color:#202020;border:none;border-radius:3px}pre,code{font-family:'Ubuntu Mono',Consolas,monospace}ul{list-style-type:square}ol{list-style-type:decimal}ul,ol{list-style-position:outside;padding:0;margin-left:1.7em;width:calc(100% - 1.7em)}strong{font-weight:bold}em{font-style:italic}hr{clear:both;height:4px;border-bottom:1px dotted #ccc;border-left:none;border-right:none;border-top:none}img{margin:.5em auto;max-width:100%;height:auto}i.fa{margin-right:.5em}table{float:left;width:100%}th{font-size:120%;padding:5px 0;text-align:left}tr{border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgba(0,0,0,0.05);}tr:last-child{border:none}td{padding:.5em;text-align:left;vertical-align:top}tbody tr:hover{background-color:rgba(0,0,0,0.03)} #container{width:100%;height:100%;float:left;overflow-x:hidden;overflow-y:scroll;position:absolute;top:0;left:0;z-index:0}#emergency{float:left;width:100%;background-color:#ff2020;color:#000;padding:.7em;box-sizing:border-box}#header-container{display:block;float:left;width:100%;height:auto;background-color:transparent}#header{display:block;margin:0 auto;width:100%;overflow:hidden}#title,#slogan{display:block;margin:0 auto;width:calc(100% - 3em);height:auto;text-align:left}#title{padding:1.5em;padding-bottom:.5em;text-transform:uppercase;letter-spacing:6px;}#title h1{line-height:inherit}#title a{text-decoration:none}#slogan{padding:1.5em;padding-top:.5em;line-height:1.3em}#content-container{display:block;float:left;width:100%;height:auto;background-color:transparent}#content{float:left;width:100%;height:100%;min-height:100%;padding:1.5em;line-height:1.7em;text-align:center;box-sizing:border-box;}#content > div{float:left;width:100%;text-align:center} #navigation{float:left;width:100%;margin:0 auto;width:100%;height:100%;padding:0 1.5em;z-index:0;box-sizing:border-box}.navigation-link{display:inline-block;height:100%;text-decoration:none;position:relative;}.navigation-link:after{content:"";display:block;margin:auto;margin-top:0;height:3px;width:0;-webkit-transition:all 500ms ease;transition:all 500ms ease}.navigation-link.active,.navigation-link:hover{cursor:pointer;text-decoration:none;}.navigation-link.active:after,.navigation-link:hover:after{width:100%;background-color:#f8a582}.navigation-button{padding:.75em 1em;font-size:1.1em;line-height:1em;-webkit-transition:all 290ms ease;transition:all 290ms ease} h1{display:inline-block;font-size:3em;line-height:3em}h2{font-size:2em;line-height:1.5em;font-weight:bold;width:100%;}h2:first-of-type{margin-top:0}h3{line-height:2em;font-size:1.5em;font-weight:bold;text-align:left;margin-top:.6em} input[type="text"],input[type="email"],input[type="password"],input[type="url"],input[type="number"],button{font-family:"Ubuntu",sans-serif;font-size:1em;border-radius:3px;-webkit-transition:all .5s ease;transition:all .5s ease;margin:0 0 10px;padding:.4em .8em;width:calc(100% - 1.6em);max-width:560px;float:left;}input[type="text"]:focus,input[type="email"]:focus,input[type="password"]:focus,input[type="url"]:focus,input[type="number"]:focus,button:focus{outline:none}input[type="text"]:active,input[type="email"]:active,input[type="password"]:active,input[type="url"]:active,input[type="number"]:active,button:active{-webkit-transform:translateY(3px);transform:translateY(3px)}input[type="submit"],button,.button{font-family:"Ubuntu",sans-serif;font-size:1em;color:#000;padding:.5em 2em;border-radius:3px;box-shadow:none;border:none;text-align:center;-webkit-transition:all 290ms ease;transition:all 290ms ease;width:100%;max-width:none}textarea{float:left;border:1px solid rgba(0,0,0,0.5);border-radius:3px;padding:.2em .4em;font-size:1em;font-family:"Open Sans",Ubuntu,sans-serif;line-height:1.7em;outline:none;resize:vertical;overflow:auto}select{float:left;padding:.5em;padding:5px 10px;width:100%;max-width:756px;font-size:1em;font-weight:normal;font-family:inherit;-webkit-transition:all .5s ease;transition:all .5s ease;-webkit-appearance:none;-moz-appearance:none;box-shadow:0 1px 3px rgba(0,0,0,0.1);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:2px;font-size:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.error{padding:1em;background-color:#ff4040;color:#fff;border-radius:5px;margin-bottom:1em} html,body{color:#3c3c3c;background-color:#fefefe}a{color:#f8a582;}a:hover{color:#f68b5e}#header{background-color:#f5f5f5;background-image:url("/images/characters/pencil-girl.png");background-repeat:no-repeat;background-size:auto 100%;background-position:100% 0%}#slogan{color:#787878}#content{background-color:transparent;}#content a{color:#f57e4c;}#content a:hover{color:#f25d1e}#content .active{color:#6495ed;}#content .active:hover{color:#6495ed}.navigation-link{color:#a0a0a0;}.navigation-link.active,.navigation-link:hover{color:#505050;text-shadow:1px 1px 3px rgba(4,4,4,0.1)}.saving{opacity:.5 !important}input[type="text"],input[type="email"],input[type="password"],input[type="url"],input[type="number"],textarea{color:#202020;background-color:#fff;box-shadow:none;border:1px solid rgba(0,0,0,0.1);}input[type="text"]:focus,input[type="email"]:focus,input[type="password"]:focus,input[type="url"]:focus,input[type="number"]:focus,textarea:focus{color:#000;box-shadow:0 0 6px rgba(248,165,130,0.2);border:1px solid #f8a582}input[type="text"]:disabled,input[type="email"]:disabled,input[type="password"]:disabled,input[type="url"]:disabled,input[type="number"]:disabled,textarea:disabled{background-color:#e0e0e0;cursor:not-allowed}button,select{border:1px solid #aaa;color:#202020;background:-webkit-linear-gradient(top,rgba(0,0,0,0.02) 0%,rgba(0,0,0,0.04) 100%);background:linear-gradient(to bottom,rgba(0,0,0,0.02) 0%,rgba(0,0,0,0.04) 100%);box-shadow:0 0 2px #fff,0 -2px 5px rgba(0,0,0,0.08) inset;}button:focus,select:focus{color:#000;box-shadow:0 0 6px rgba(248,165,130,0.2);border:1px solid #f8a582}input[type="submit"]:hover,button:hover,.button:hover{cursor:pointer;background:-webkit-linear-gradient(top,rgba(0,0,0,0.02) 0%,rgba(0,0,0,0.04) 100%);background:linear-gradient(to bottom,rgba(0,0,0,0.02) 0%,rgba(0,0,0,0.04) 100%);text-decoration:none}button[disabled]{opacity:.5;}button[disabled]:hover{cursor:not-allowed;color:#202020;background:-webkit-linear-gradient(top,rgba(0,0,0,0.02) 0%,rgba(0,0,0,0.04) 100%);background:linear-gradient(to bottom,rgba(0,0,0,0.02) 0%,rgba(0,0,0,0.04) 100%)}.user-name a{color:#101010}.list-provider-name-highlight{color:#303030} .anime-list-container{text-align:left}.embedded-anime-list-container .anime-list{width:calc(100% - 225px - 1em)}.embedded-anime-list-container .anime-list-image{display:block}.anime-list{list-style-type:none;margin:0;width:100%;max-width:750px}.anime-status-icon{margin:0 !important}.anime-list-image{display:none;position:fixed;top:50%;right:calc(16px + 1em);z-index:9999;width:225px;margin:0;padding:0;opacity:0;border-radius:3px;box-shadow:0 0 8px rgba(0,0,0,0.4);-webkit-transform:translate(10%,-50%);transform:translate(10%,-50%);-webkit-transition:all 290ms ease;transition:all 290ms ease;pointer-events:none}.anime{padding:.25em .75em;border:1px solid rgba(0,0,0,0.1);border-radius:3px;margin:.25em 0;background:-webkit-linear-gradient(top,rgba(0,0,0,0.02) 0%,rgba(0,0,0,0.04) 100%);background:linear-gradient(to bottom,rgba(0,0,0,0.02) 0%,rgba(0,0,0,0.04) 100%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-transition:all 200ms ease;transition:all 200ms ease;}.anime:hover{background:-webkit-linear-gradient(top,rgba(0,0,0,0.01) 0%,rgba(0,0,0,0.03) 100%);background:linear-gradient(to bottom,rgba(0,0,0,0.01) 0%,rgba(0,0,0,0.03) 100%);}.anime:hover .anime-list-image{opacity:1;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.anime-title,.anime-view-link{color:#f25817 !important;}.anime-title:hover,.anime-view-link:hover{color:#ff200c !important}.anime-title{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:1;flex-shrink:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.spacer{-webkit-box-flex:1;-ms-flex:1;flex:1}.anime-completed,.anime-warning,.anime-up-to-date,.anime-download-link{-webkit-box-flex:0;-ms-flex:0 0 32px;flex:0 0 32px;text-align:right}.anime-completed{color:#00f !important;opacity:.25;}.anime-completed:hover{opacity:.7}.anime-warning{color:#f00 !important;opacity:.2;}.anime-warning:hover{opacity:.7}.anime-up-to-date{color:#008000 !important;opacity:.7}.airing-date,.episodes-behind{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:1;flex-shrink:1;opacity:.5;text-align:right;white-space:nowrap}.episodes-behind:before{content:'+'}.episodes-behind:after{content:''} #posts{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:100%}.post{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;margin:.5rem 0}.post-author{text-align:center;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:row;flex-flow:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:-3px;}.post-author img{margin:0 !important}#post-input,.post-input{width:100%;min-height:150px;margin:.5rem 0}.post-submit{margin-top:.5rem;max-width:200px;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.post-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:row;flex-flow:row;opacity:0;-webkit-transition:opacity 250ms ease;transition:opacity 250ms ease;position:absolute;bottom:3px;right:0}.post-save{float:right;}.post-save:hover{cursor:pointer}.post-input-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:row;flex-flow:row}.post-tool{opacity:.7;}.post-tool:hover{cursor:pointer;opacity:1}.post-likes{opacity:.4;margin-right:.4em;}.post-likes:before{content:"+"}.post-permalink{color:#00f !important}.post-delete{color:#ff200c !important}.post-like{color:#008000 !important}.post-unlike{color:#ff200c !important}.post-content{text-align:left;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding:.4rem 1rem;margin-left:.3rem;background:-webkit-linear-gradient(top,rgba(0,0,0,0.02) 0%,rgba(0,0,0,0.04) 100%);background:linear-gradient(to bottom,rgba(0,0,0,0.02) 0%,rgba(0,0,0,0.04) 100%);border:1px solid rgba(0,0,0,0.1);border-radius:3px;position:relative;}.post-content:hover{background:-webkit-linear-gradient(top,rgba(0,0,0,0.01) 0%,rgba(0,0,0,0.03) 100%);background:linear-gradient(to bottom,rgba(0,0,0,0.01) 0%,rgba(0,0,0,0.03) 100%);}.post-content:hover .post-toolbar{opacity:1}.post-content h1{font-size:1.5rem;line-height:2em}.post-content h2{font-size:1.3rem;line-height:2em;font-weight:normal}.post-content h3{font-size:1.1rem;line-height:2em;font-weight:normal}.special-post .post-content{border:2px solid rgba(248,165,130,0.7)}.hidden{display:none}.thread{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.thread-title{width:auto}.posts{width:100%;max-width:830px}@media only screen and (min-width:500px){.post{-ms-flex-flow:row;flex-flow:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}} .category{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:300px;max-width:100%}.categories{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.field{float:left;width:100%;padding:0 .5em;box-sizing:border-box}.value{margin-left:.5em;font-weight:bold;font-size:1.1em} .user-list{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.user{display:block;-webkit-transform:scale(1);transform:scale(1);width:50px;height:50px;border-radius:100%;margin:.2em;}.user:hover .user-image{box-shadow:0 0 8px #000}.user-image{opacity:0;-webkit-transition:all 250ms ease;transition:all 250ms ease;border-radius:100%;margin:0 !important;width:50px;height:50px;-o-object-fit:cover;object-fit:cover}svg.user-image circle.body{fill:#3c3c3c}svg.user-image text{fill:#fff;font-size:.65rem} .video-container{float:left;width:100%}.video{width:100%;height:100vh} #loading-animation{display:block;position:fixed;bottom:1.15rem;right:calc(1.15rem + 17px);pointer-events:none}.sk-cube-grid{width:24px;height:24px;-webkit-transform:rotateZ(0);transform:rotateZ(0);-webkit-animation:sk-rotate .8s infinite linear;animation:sk-rotate .8s infinite linear;}.sk-cube-grid .sk-cube{width:33.3%;height:33.3%;background-color:rgba(242,93,30,0.7);box-shadow:0 0 24px rgba(242,93,30,0.8);float:left;-webkit-animation:sk-cube-grid .8s infinite linear;animation:sk-cube-grid .8s infinite linear;border-radius:100%}.sk-cube-grid .sk-cube5{background-color:#f25d1e;box-shadow:0 0 24px rgba(242,93,30,0.9)}.sk-cube-grid .sk-cube1,.sk-cube-grid .sk-cube3,.sk-cube-grid .sk-cube7,.sk-cube-grid .sk-cube9{visibility:hidden}.sk-folding-cube{margin:20px auto;width:40px;height:40px;position:relative;-webkit-transform:rotateZ(45deg);transform:rotateZ(45deg);}.sk-folding-cube .sk-cube{float:left;width:50%;height:50%;position:relative;-webkit-transform:scale(1.1);transform:scale(1.1);}.sk-folding-cube .sk-cube:before{content:'';position:absolute;top:0;left:0;width:100%;height:100%;background-color:#f8a582;-webkit-animation:sk-foldCubeAngle 2.4s infinite linear both;animation:sk-foldCubeAngle 2.4s infinite linear both;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.sk-folding-cube .sk-cube2{-webkit-transform:scale(1.1) rotateZ(90deg);transform:scale(1.1) rotateZ(90deg);}.sk-folding-cube .sk-cube2:before{-webkit-animation-delay:.3s;animation-delay:.3s}.sk-folding-cube .sk-cube3{-webkit-transform:scale(1.1) rotateZ(180deg);transform:scale(1.1) rotateZ(180deg);}.sk-folding-cube .sk-cube3:before{-webkit-animation-delay:.6s;animation-delay:.6s}.sk-folding-cube .sk-cube4{-webkit-transform:scale(1.1) rotateZ(270deg);transform:scale(1.1) rotateZ(270deg);}.sk-folding-cube .sk-cube4:before{-webkit-animation-delay:.9s;animation-delay:.9s}@-webkit-keyframes sk-cube-grid{0%,100%{-webkit-transform:scale3D(.4,.4,.4);transform:scale3D(.4,.4,.4)}50%{-webkit-transform:scale3D(.9,.9,.9);transform:scale3D(.9,.9,.9)}}@keyframes sk-cube-grid{0%,100%{-webkit-transform:scale3D(.4,.4,.4);transform:scale3D(.4,.4,.4)}50%{-webkit-transform:scale3D(.9,.9,.9);transform:scale3D(.9,.9,.9)}}@-webkit-keyframes sk-rotate{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes sk-rotate{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@-webkit-keyframes sk-foldCubeAngle{0%,10%{-webkit-transform:perspective(140px) rotateX(-180deg);transform:perspective(140px) rotateX(-180deg);opacity:0}25%,75%{-webkit-transform:perspective(140px) rotateX(0);transform:perspective(140px) rotateX(0);opacity:1}90%,100%{-webkit-transform:perspective(140px) rotateY(180deg);transform:perspective(140px) rotateY(180deg);opacity:0}}@keyframes sk-foldCubeAngle{0%,10%{-webkit-transform:perspective(140px) rotateX(-180deg);transform:perspective(140px) rotateX(-180deg);opacity:0}25%,75%{-webkit-transform:perspective(140px) rotateX(0);transform:perspective(140px) rotateX(0);opacity:1}90%,100%{-webkit-transform:perspective(140px) rotateY(180deg);transform:perspective(140px) rotateY(180deg);opacity:0}} .fade{opacity:1;-webkit-transition:opacity 200ms ease;transition:opacity 200ms ease;will-change:opacity}.fade-out{opacity:0} @media only screen and (max-width:1024px){#header{background-image:none}}@media only screen and (max-width:930px){#title,#slogan{display:none}.navigation-text{display:none}.navigation-button i.fa{margin-right:0}.episodes-behind:before{content:'+'}.episodes-behind:after{content:''}#content{padding:1em}#header{text-align:center}#navigation{float:none;display:inline-block;width:auto}}@media only screen and (min-width:1100px){.anime-list-image{display:block}}@media only screen and (max-width:560px){#navigation{padding:0}.navigation-link-right{display:none}.navigation-button i.fa{font-size:1.5em}}@media only screen and (max-width:612px){.navigation-link-right[href='/admin']{display:none}}@media only screen and (max-width:320px){.navigation-button i.fa{font-size:1.4em}}@media only screen and (max-height:700px){.anime-list-image{top:.5em;-webkit-transform:translate(10%,0);transform:translate(10%,0)}.anime:hover .anime-list-image{-webkit-transform:translate(0,0);transform:translate(0,0)}} .embedded-header{position:fixed;left:0;bottom:0;z-index:1}.embedded-content{margin-bottom:3em} #staff-info{display:none;float:left;width:100%;text-align:left}.header-logged-in{background-image:none !important}.navigation-link-left{float:left}.navigation-link-right{float:right}.navigation-icon-no-title{margin-right:0 !important} \ No newline at end of file diff --git a/main.go b/main.go deleted file mode 100644 index 67a7695d..00000000 --- a/main.go +++ /dev/null @@ -1,130 +0,0 @@ -package main - -import ( - "io/ioutil" - "sort" - "strconv" - "strings" - "time" - - "github.com/aerojs/aero" - "github.com/animenotifier/arn" -) - -func main() { - app := aero.New() - - cssBytes, _ := ioutil.ReadFile("layout.css") - css := string(cssBytes) - - animeCSSBytes, _ := ioutil.ReadFile("anime.css") - css += string(animeCSSBytes) - - app.SetStyle(css) - - scripts, _ := ioutil.ReadFile("scripts.js") - js := string(scripts) - - // Define layout - app.Layout = func(ctx *aero.Context, content string) string { - return Render.Layout(content) - } - - app.Register("/", func(ctx *aero.Context) string { - return ctx.HTML(Render.Dashboard()) - }) - - app.Register("/genres", func(ctx *aero.Context) string { - return ctx.HTML(Render.GenreOverview()) - }) - - type GenreInfo struct { - Genre string `json:"genre"` - AnimeList []*arn.Anime `json:"animeList"` - } - - app.Register("/genres/:name", func(ctx *aero.Context) string { - genreName := ctx.Params.ByName("name") - genreInfo := new(GenreInfo) - - err := arn.GetObject("Genres", genreName, genreInfo) - - if err != nil { - return err.Error() - } - - return ctx.HTML(Render.AnimeInGenre(genreInfo.Genre, genreInfo.AnimeList)) - - // var animeList []*arn.Anime - // results := make(chan *arn.Anime) - // arn.Scan("Anime", results) - - // for anime := range results { - // genres := Map(anime.Genres, arn.FixGenre) - // if Contains(genres, genreName) { - // animeList = append(animeList, anime) - // } - // } - - // return ctx.HTML(Render.AnimeInGenre(genreName, animeList)) - }) - - app.Register("/anime/:id", func(ctx *aero.Context) string { - id, _ := strconv.Atoi(ctx.Params.ByName("id")) - anime, err := arn.GetAnime(id) - - if err != nil { - return ctx.Text("Anime not found") - } - - return ctx.HTML(Render.Anime(anime)) - }) - - // --------------------------------------------------------------- - // API - // --------------------------------------------------------------- - - app.Get("/scripts.js", func(ctx *aero.Context) string { - ctx.SetHeader("Content-Type", "application/javascript") - return js - }) - - app.Get("/all/anime", func(ctx *aero.Context) string { - start := time.Now() - var titles []string - - results := make(chan *arn.Anime) - arn.Scan("Anime", results) - - for anime := range results { - titles = append(titles, anime.Title.Romaji) - } - sort.Strings(titles) - - return ctx.Text(s(len(titles)) + " anime fetched in " + s(time.Since(start)) + "\n\n" + strings.Join(titles, "\n")) - }) - - app.Get("/api/anime/:id", func(ctx *aero.Context) string { - id, _ := strconv.Atoi(ctx.Params.ByName("id")) - anime, err := arn.GetAnime(id) - - if err != nil { - return ctx.Text("Anime not found") - } - - return ctx.JSON(anime) - }) - - app.Get("/api/users/:nick", func(ctx *aero.Context) string { - nick := ctx.Params.ByName("nick") - user, err := arn.GetUserByNick(nick) - - if err != nil { - return ctx.Text("User not found") - } - - return ctx.JSON(user) - }) - - app.Run() -} diff --git a/main_test.go b/main_test.go deleted file mode 100644 index 5914526a..00000000 --- a/main_test.go +++ /dev/null @@ -1,58 +0,0 @@ -package main - -import ( - "bytes" - "fmt" - "strings" - "testing" -) - -// func BenchmarkRender(b *testing.B) { -// b.ReportAllocs() -// layout := aero.NewTemplate("layout/layout.pug") -// template := aero.NewTemplate("pages/anime/anime.pug") -// cssBytes, _ := ioutil.ReadFile("layout.css") -// css := string(cssBytes) -// cssSearch := "