basic upload
Cette révision appartient à :
Parent
7ec7de96ea
révision
ce16601bcc
7 fichiers modifiés avec 164 ajouts et 31 suppressions
1
main.go
1
main.go
|
@ -29,7 +29,6 @@ func RunServer(conf *config.Config) {
|
|||
}
|
||||
|
||||
func main() {
|
||||
|
||||
conf := config.NewConfig()
|
||||
conf_bind := conf.BindFlags()
|
||||
defaults := flag.Bool("print-defaults", false, "print the default configuration file on stdout")
|
||||
|
|
|
@ -28,4 +28,5 @@ func init() {
|
|||
Router.HandleFunc("/faq", FaqHandler).Name("faq")
|
||||
Router.HandleFunc("/feed", RssHandler).Name("feed")
|
||||
Router.HandleFunc("/view/{id}", ViewHandler).Name("view_torrent")
|
||||
Router.HandleFunc("/upload", UploadHandler).Name("upload")
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package router
|
||||
|
||||
import (
|
||||
"github.com/gorilla/mux"
|
||||
"github.com/ewhal/nyaa/model"
|
||||
"github.com/gorilla/mux"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
|
@ -14,28 +14,35 @@ import (
|
|||
|
||||
type FaqTemplateVariables struct {
|
||||
Navigation Navigation
|
||||
Search SearchForm
|
||||
Search SearchForm
|
||||
URL *url.URL // For parsing Url in templates
|
||||
Route *mux.Route // For getting current route in templates
|
||||
}
|
||||
|
||||
type ViewTemplateVariables struct {
|
||||
Torrent model.TorrentsJson
|
||||
Search SearchForm
|
||||
Navigation Navigation
|
||||
URL *url.URL // For parsing Url in templates
|
||||
Route *mux.Route // For getting current route in templates
|
||||
Torrent model.TorrentsJson
|
||||
Search SearchForm
|
||||
Navigation Navigation
|
||||
URL *url.URL // For parsing Url in templates
|
||||
Route *mux.Route // For getting current route in templates
|
||||
}
|
||||
|
||||
type HomeTemplateVariables struct {
|
||||
ListTorrents []model.TorrentsJson
|
||||
ListCategories []model.Categories
|
||||
Search SearchForm
|
||||
Search SearchForm
|
||||
Navigation Navigation
|
||||
URL *url.URL // For parsing Url in templates
|
||||
Route *mux.Route // For getting current route in templates
|
||||
}
|
||||
|
||||
type UploadTemplateVariables struct {
|
||||
Upload UploadForm
|
||||
Search SearchForm
|
||||
Navigation Navigation
|
||||
URL *url.URL
|
||||
Route *mux.Route
|
||||
}
|
||||
|
||||
/*
|
||||
* Variables used by the upper ones
|
||||
|
@ -48,31 +55,52 @@ type Navigation struct {
|
|||
}
|
||||
|
||||
type SearchForm struct {
|
||||
Query string
|
||||
Status string
|
||||
Category string
|
||||
Sort string
|
||||
Order string
|
||||
Query string
|
||||
Status string
|
||||
Category string
|
||||
Sort string
|
||||
Order string
|
||||
HideAdvancedSearch bool
|
||||
}
|
||||
|
||||
type UploadForm struct {
|
||||
Name string
|
||||
Magnet string
|
||||
Category string
|
||||
Description string
|
||||
}
|
||||
|
||||
// Some Default Values to ease things out
|
||||
func NewSearchForm(params ...string) SearchForm {
|
||||
searchForm := SearchForm{}
|
||||
if (len(params) > 1) {
|
||||
if len(params) > 1 {
|
||||
searchForm.Category = params[0]
|
||||
} else {
|
||||
searchForm.Category = "_"
|
||||
}
|
||||
if (len(params) > 2) {
|
||||
searchForm.Sort = params[0]
|
||||
if len(params) > 2 {
|
||||
searchForm.Sort = params[1]
|
||||
} else {
|
||||
searchForm.Sort = "torrent_id"
|
||||
}
|
||||
if (len(params) > 3) {
|
||||
searchForm.Order = params[0]
|
||||
if len(params) > 3 {
|
||||
searchForm.Order = params[2]
|
||||
} else {
|
||||
searchForm.Order = "DESC"
|
||||
}
|
||||
return searchForm
|
||||
}
|
||||
func NewUploadForm(params ...string) UploadForm {
|
||||
uploadForm := UploadForm{}
|
||||
if len(params) > 1 {
|
||||
uploadForm.Category = params[0]
|
||||
} else {
|
||||
uploadForm.Category = "3_12"
|
||||
}
|
||||
if len(params) > 2 {
|
||||
uploadForm.Description = params[1]
|
||||
} else {
|
||||
uploadForm.Description = "Description"
|
||||
}
|
||||
return uploadForm
|
||||
}
|
||||
|
|
35
router/uploadHandler.go
Fichier normal
35
router/uploadHandler.go
Fichier normal
|
@ -0,0 +1,35 @@
|
|||
package router
|
||||
|
||||
import (
|
||||
"github.com/gorilla/mux"
|
||||
"html/template"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func UploadHandler(w http.ResponseWriter, r *http.Request) {
|
||||
var templates = template.Must(template.New("upload").Funcs(FuncMap).ParseFiles("templates/index.html", "templates/upload.html"))
|
||||
templates.ParseGlob("templates/_*.html") // common
|
||||
|
||||
var uploadForm UploadForm
|
||||
if r.Method == "POST" {
|
||||
err := r.ParseForm()
|
||||
if err != nil {
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
uploadForm = UploadForm{
|
||||
r.Form.Get("name"),
|
||||
r.Form.Get("magnet"),
|
||||
r.Form.Get("c"),
|
||||
r.Form.Get("desc"),
|
||||
}
|
||||
//validate name + hash
|
||||
//add to db and redirect depending on result
|
||||
}
|
||||
|
||||
htv := UploadTemplateVariables{uploadForm, NewSearchForm(), Navigation{}, r.URL, mux.CurrentRoute(r)}
|
||||
|
||||
err := templates.ExecuteTemplate(w, "index.html", htv)
|
||||
if err != nil {
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
}
|
|
@ -1,15 +1,15 @@
|
|||
package router
|
||||
|
||||
import(
|
||||
"net/http"
|
||||
"html/template"
|
||||
"github.com/gorilla/mux"
|
||||
import (
|
||||
"github.com/ewhal/nyaa/service/torrent"
|
||||
"github.com/gorilla/mux"
|
||||
"html/template"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func ViewHandler(w http.ResponseWriter, r *http.Request) {
|
||||
var templates = template.Must(template.New("view").Funcs(FuncMap).ParseFiles("templates/index.html", "templates/view.html"))
|
||||
templates.ParseGlob("templates/_*.html") // common
|
||||
templates.ParseGlob("templates/_*.html") // common
|
||||
vars := mux.Vars(r)
|
||||
id := vars["id"]
|
||||
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||
<ul class="nav navbar-nav">
|
||||
<li><a href="https://sukebei.pantsu.cat">Fap</a></li>
|
||||
<li><a href="{{.URL.Parse "/upload"}}">Upload</a/></li>
|
||||
<li><a href="{{.URL.Parse "/faq"}}">FAQ</a></li>
|
||||
<li><a href="irc://irc.rizon.net/nyaapantsu">IRC</a></li>
|
||||
<li><a href="{{ genRouteWithQuery "feed" .URL }}">RSS</a></li>
|
||||
|
|
69
templates/upload.html
Fichier normal
69
templates/upload.html
Fichier normal
|
@ -0,0 +1,69 @@
|
|||
{{define "title"}}Upload magnet{{end}}
|
||||
{{define "content"}}
|
||||
<div class="blockBody">
|
||||
{{with .Upload}}
|
||||
<hr>
|
||||
<form role="upload" method="POST">
|
||||
<table class="table table-borderless">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-xs-6">
|
||||
<input type="text" name="name" class="form-control"placeholder="File Name" value="{{.Name}}" required>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-xs-8">
|
||||
<input type="text" name="magnet" class="form-control"
|
||||
style="width:60rem" placeholder="Magnet Link" value="{{.Magnet}}" required>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-xs-4">
|
||||
<select name="c" class="form-control input-sm">
|
||||
<option value="3_" {{if eq .Category "3_"}}selected{{end}}>Anime</option>
|
||||
<option value="3_12" {{if eq .Category "3_12"}}selected{{end}}>Anime - Anime Music Video</option>
|
||||
<option value="3_5" {{if eq .Category "3_5"}}selected{{end}}>Anime - English-translated</option>
|
||||
<option value="3_13" {{if eq .Category "3_13"}}selected{{end}}>Anime - Non-English-translated</option>
|
||||
<option value="3_6" {{if eq .Category "3_6"}}selected{{end}}>Anime - Raw</option>
|
||||
<option value="2_" {{if eq .Category "2_"}}selected{{end}}>Audio</option>
|
||||
<option value="2_3" {{if eq .Category "2_3"}}selected{{end}}>Audio - Lossless</option>
|
||||
<option value="2_4" {{if eq .Category "2_4"}}selected{{end}}>Audio - Lossy</option>
|
||||
<option value="4_" {{if eq .Category "4_"}}selected{{end}}>Literature</option>
|
||||
<option value="4_7" {{if eq .Category "4_7"}}selected{{end}}>Literature - English-translated</option>
|
||||
<option value="4_8" {{if eq .Category "4_8"}}selected{{end}}>Literature - Raw</option>
|
||||
<option value="4_14" {{if eq .Category "4_14"}}selected{{end}}>Literature - Non-English-translated</option>
|
||||
<option value="5_" {{if eq .Category "5_"}}selected{{end}}>Live Action</option>
|
||||
<option value="5_9" {{if eq .Category "5_9"}}selected{{end}}>Live Action - English-translated</option>
|
||||
<option value="5_10" {{if eq .Category "5_10"}}selected{{end}}>Live Action - Idol/Promotional Video</option>
|
||||
<option value="5_18" {{if eq .Category "5_18"}}selected{{end}}>Live Action - Non-English-translated</option>
|
||||
<option value="5_11" {{if eq .Category "5_11"}}selected{{end}}>Live Action - Raw</option>
|
||||
<option value="6_" {{if eq .Category "6_"}}selected{{end}}>Pictures</option>
|
||||
<option value="6_15" {{if eq .Category "6_15"}}selected{{end}}>Pictures - Graphics</option>
|
||||
<option value="6_16" {{if eq .Category "6_16"}}selected{{end}}>Pictures - Photos</option>
|
||||
<option value="1_" {{if eq .Category "1_"}}selected{{end}}>Software</option>
|
||||
<option value="1_1" {{if eq .Category "1_1"}}selected{{end}}>Software - Applications</option>
|
||||
<option value="1_2" {{if eq .Category "1_2"}}selected{{end}}>Software - Games</option>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="col-xs-7">
|
||||
<textarea name="desc" class="form-control" rows="10">{{.Description}}</textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<button type="submit" class="btn">Upload!</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{{end}}
|
||||
</div>
|
||||
{{end}}
|
Référencer dans un nouveau ticket