@ -6,6 +6,7 @@ import (
"io"
"io"
"net/http"
"net/http"
"os"
"os"
"os/exec"
"strconv"
"strconv"
"github.com/gorilla/mux"
"github.com/gorilla/mux"
@ -35,10 +36,12 @@ func main() {
r . HandleFunc ( "/api/v1/typ/{id:[0-9]+}" , getTypHandler ) . Methods ( "GET" , "OPTIONS" )
r . HandleFunc ( "/api/v1/typ/{id:[0-9]+}" , getTypHandler ) . Methods ( "GET" , "OPTIONS" )
r . HandleFunc ( "/api/v1/typ/{id:[0-9]+}" , updateTypHandler ) . Methods ( "PUT" , "OPTIONS" )
r . HandleFunc ( "/api/v1/typ/{id:[0-9]+}" , updateTypHandler ) . Methods ( "PUT" , "OPTIONS" )
/ * r . HandleFunc ( "/api/v1/pho" , createPhotoHandler ) . Methods ( "POST" , "OPTIONS" )
r . HandleFunc ( "/api/v1/pho" , createPhotoHandler ) . Methods ( "POST" , "OPTIONS" )
r . HandleFunc ( "/api/v1/pho/{id:[0-9]+}" , deletePhotoHandler ) . Methods ( "DELETE" , "OPTIONS" )
r . HandleFunc ( "/api/v1/pho/{id:[0-9]+}" , deletePhotoHandler ) . Methods ( "DELETE" , "OPTIONS" )
r . HandleFunc ( "/api/v1/pho" , showPhotoHandler ) . Methods ( "GET" , "OPTIONS" )
r . HandleFunc ( "/api/v1/pho" , showPhotoHandler ) . Methods ( "GET" , "OPTIONS" )
r . HandleFunc ( "/api/v1/pho/{id:[0-9]+}" , getPhotoHandler ) . Methods ( "GET" , "OPTIONS" )
r . HandleFunc ( "/api/v1/pho/{id:[0-9]+}" , getPhotoHandler ) . Methods ( "GET" , "OPTIONS" )
r . HandleFunc ( "/api/v1/pho/itb/{id:[0-9]+}" , getPhotoForItbHandler ) . Methods ( "GET" , "OPTIONS" )
r . HandleFunc ( "/api/v1/pho/ite/{id:[0-9]+}" , getPhotoForIteHandler ) . Methods ( "GET" , "OPTIONS" )
r . HandleFunc ( "/api/v1/pho/{id:[0-9]+}" , updatePhotoHandler ) . Methods ( "PUT" , "OPTIONS" )
r . HandleFunc ( "/api/v1/pho/{id:[0-9]+}" , updatePhotoHandler ) . Methods ( "PUT" , "OPTIONS" )
r . HandleFunc ( "/api/v1/meas" , createMeasureHandler ) . Methods ( "POST" , "OPTIONS" )
r . HandleFunc ( "/api/v1/meas" , createMeasureHandler ) . Methods ( "POST" , "OPTIONS" )
@ -53,11 +56,13 @@ func main() {
r . HandleFunc ( "/api/v1/itb/{id:[0-9]+}" , getItemBHandler ) . Methods ( "GET" , "OPTIONS" )
r . HandleFunc ( "/api/v1/itb/{id:[0-9]+}" , getItemBHandler ) . Methods ( "GET" , "OPTIONS" )
r . HandleFunc ( "/api/v1/itb/{id:[0-9]+}" , updateItemBHandler ) . Methods ( "PUT" , "OPTIONS" )
r . HandleFunc ( "/api/v1/itb/{id:[0-9]+}" , updateItemBHandler ) . Methods ( "PUT" , "OPTIONS" )
r . HandleFunc ( "/api/v1/upload" , uploadFileHandler ) . Methods ( "POST" , "OPTIONS" )
r . HandleFunc ( "/api/v1/ite" , createItemExtHandler ) . Methods ( "POST" , "OPTIONS" )
r . HandleFunc ( "/api/v1/ite" , createItemExtHandler ) . Methods ( "POST" , "OPTIONS" )
r . HandleFunc ( "/api/v1/ite/{id:[0-9]+}" , deleteItemExtHandler ) . Methods ( "DELETE" , "OPTIONS" )
r . HandleFunc ( "/api/v1/ite/{id:[0-9]+}" , deleteItemExtHandler ) . Methods ( "DELETE" , "OPTIONS" )
r . HandleFunc ( "/api/v1/ite" , showItemExtHandler ) . Methods ( "GET" , "OPTIONS" )
r . HandleFunc ( "/api/v1/ite" , showItemExtHandler ) . Methods ( "GET" , "OPTIONS" )
r . HandleFunc ( "/api/v1/ite/{id:[0-9]+}" , getItemExtHandler ) . Methods ( "GET" , "OPTIONS" )
r . HandleFunc ( "/api/v1/ite/{id:[0-9]+}" , getItemExtHandler ) . Methods ( "GET" , "OPTIONS" )
r . HandleFunc ( "/api/v1/ite/{id:[0-9]+}" , updateItemExtHandler ) . Methods ( "PUT" , "OPTIONS" ) * /
r . HandleFunc ( "/api/v1/ite/{id:[0-9]+}" , updateItemExtHandler ) . Methods ( "PUT" , "OPTIONS" )
http . Handle ( "/" , r )
http . Handle ( "/" , r )
r . Use ( mux . CORSMethodMiddleware ( r ) )
r . Use ( mux . CORSMethodMiddleware ( r ) )
@ -71,12 +76,28 @@ func createTypHandler(writer http.ResponseWriter, req *http.Request) {
if req . Method == http . MethodOptions {
if req . Method == http . MethodOptions {
return
return
}
}
err := req . ParseMultipartForm ( 64 << 20 )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
return
}
var typ Typ
if req . Form [ "bezeichnung" ] != nil {
typ . Bezeichnung = req . FormValue ( "bezeichnung" )
for formKey , formValue := range req . Form {
log . WithFields ( log . Fields { formKey : formValue } ) . Info ( "parsing from Form: " )
}
} else {
body , err := io . ReadAll ( req . Body )
body , err := io . ReadAll ( req . Body )
if err != nil {
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
writer . WriteHeader ( http . StatusBadRequest )
}
}
var typ Typ
var typ Typ
json . Unmarshal ( body , & typ )
json . Unmarshal ( body , & typ )
}
log . Println ( typ )
log . Println ( typ )
log . Println ( "Name= " , typ . Bezeichnung )
log . Println ( "Name= " , typ . Bezeichnung )
log . Info ( "creating new Typ" , typ . Bezeichnung )
log . Info ( "creating new Typ" , typ . Bezeichnung )
@ -100,9 +121,14 @@ func deleteTypHandler(writer http.ResponseWriter, req *http.Request) {
if req . Method == http . MethodOptions {
if req . Method == http . MethodOptions {
return
return
}
}
err := req . ParseMultipartForm ( 64 << 20 )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
return
}
typId , _ := strconv . ParseUint ( mux . Vars ( req ) [ "id" ] , 10 , 0 )
typId , _ := strconv . ParseUint ( mux . Vars ( req ) [ "id" ] , 10 , 0 )
log . Info ( "Deleting Instance with ID" , typId )
log . Info ( "Deleting Typ with ID" , typId )
_ , err := DeleteTyp ( uint ( typId ) )
_ , err = DeleteTyp ( uint ( typId ) )
if err != nil {
if err != nil {
log . Fatal ( "Error: Delete could not be executed" , err )
log . Fatal ( "Error: Delete could not be executed" , err )
}
}
@ -157,12 +183,27 @@ func updateTypHandler(writer http.ResponseWriter, req *http.Request) {
if req . Method == http . MethodOptions {
if req . Method == http . MethodOptions {
return
return
}
}
err := req . ParseMultipartForm ( 64 << 20 )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
return
}
var typ Typ
var tid uint64
if req . Form [ "bezeichnung" ] != nil {
typ . Bezeichnung = req . FormValue ( "bezeichnung" )
tid , _ = strconv . ParseUint ( req . FormValue ( "id" ) , 10 , 0 )
typ . Id = uint ( tid )
} else {
body , err := io . ReadAll ( req . Body )
body , err := io . ReadAll ( req . Body )
if err != nil {
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
writer . WriteHeader ( http . StatusBadRequest )
}
}
var typ Typ
var typ Typ
json . Unmarshal ( body , & typ )
json . Unmarshal ( body , & typ )
}
log . Println ( "Name = " , typ . Bezeichnung )
log . Println ( "Name = " , typ . Bezeichnung )
log . Info ( "updating Typ" , typ . Bezeichnung )
log . Info ( "updating Typ" , typ . Bezeichnung )
res , err := UpdateTyp ( typ )
res , err := UpdateTyp ( typ )
@ -179,3 +220,804 @@ func updateTypHandler(writer http.ResponseWriter, req *http.Request) {
writer . WriteHeader ( http . StatusOK )
writer . WriteHeader ( http . StatusOK )
writer . Write ( b )
writer . Write ( b )
}
}
// Photo Funktionen
func createPhotoHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
err := req . ParseMultipartForm ( 64 << 20 )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
return
}
var pho Photos
if req . Form [ "pfad" ] != nil {
pho . ItembId , _ = strconv . ParseUint ( req . FormValue ( "itembid" ) , 10 , 0 )
pho . ItemextId , _ = strconv . ParseUint ( req . FormValue ( "itemextid" ) , 10 , 0 )
pho . Pfad = req . FormValue ( "pfad" )
for formKey , formValue := range req . Form {
log . WithFields ( log . Fields { formKey : formValue } ) . Info ( "parsing from Form: " )
}
} else {
body , err := io . ReadAll ( req . Body )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
}
var pho Photos
json . Unmarshal ( body , & pho )
}
log . Println ( pho )
log . Println ( "Name= " , pho . Pfad )
log . Info ( "creating new Photo" , pho . Pfad )
res , err := CreatePhoto ( pho )
if err != nil {
writer . WriteHeader ( http . StatusInternalServerError )
}
b , err := json . Marshal ( res )
if err != nil {
log . Fatal ( "Error: " , err )
}
location := fmt . Sprintf ( "%s/%d" , req . URL . String ( ) , res . Id )
writer . Header ( ) . Set ( "Location:" , location )
writer . Header ( ) . Set ( "Content-Type" , "application/json" )
writer . WriteHeader ( http . StatusCreated )
writer . Write ( b )
}
func deletePhotoHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
err := req . ParseMultipartForm ( 64 << 20 )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
return
}
phoId , _ := strconv . ParseUint ( mux . Vars ( req ) [ "id" ] , 10 , 0 )
log . Info ( "Deleting Photo with ID" , phoId )
_ , err = DeletePhoto ( uint64 ( phoId ) )
if err != nil {
log . Fatal ( "Error: Delete could not be executed" , err )
}
writer . WriteHeader ( http . StatusNoContent )
}
func showPhotoHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
res , err := ShowPhoto ( )
if err != nil {
log . Fatal ( "Error: Photos can't be shown " , err )
writer . WriteHeader ( http . StatusInternalServerError )
}
b , err := json . Marshal ( res )
if err != nil {
log . Fatal ( "Error: " , err )
}
location := req . URL . String ( )
writer . Header ( ) . Set ( "Location:" , location )
writer . Header ( ) . Set ( "Content-Type" , "application/json" )
writer . WriteHeader ( http . StatusOK )
writer . Write ( b )
}
func getPhotoHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
/ * err := req . ParseMultipartForm ( 64 << 20 )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
return
}
var pho Photos
if req . Form [ "id" ] != nil {
pho . Id , _ = strconv . ParseUint ( req . FormValue ( "id" ) , 10 , 0 )
pho . ItembId , _ = strconv . ParseUint ( req . FormValue ( "itembid" ) , 10 , 0 )
pho . ItemextId , _ = strconv . ParseUint ( req . FormValue ( "itemextid" ) , 10 , 0 )
pho . Pfad = req . FormValue ( "pfad" )
for formKey , formValue := range req . Form {
log . WithFields ( log . Fields { formKey : formValue } ) . Info ( "parsing from Form: " )
}
} else { * /
var pho Photos
pho . Id , _ = strconv . ParseUint ( mux . Vars ( req ) [ "id" ] , 10 , 0 )
//}
res , err := GetPhoto ( uint64 ( pho . Id ) )
if err != nil {
log . Fatal ( "Error: Typ can't be shown " , err )
writer . WriteHeader ( http . StatusInternalServerError )
}
b , err := json . Marshal ( res )
if err != nil {
log . Fatal ( "Error: " , err )
}
location := req . URL . String ( )
writer . Header ( ) . Set ( "Location:" , location )
writer . Header ( ) . Set ( "Content-Type" , "application/json" )
writer . WriteHeader ( http . StatusOK )
writer . Write ( b )
}
func getPhotoForItbHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
phoId , _ := strconv . ParseUint ( mux . Vars ( req ) [ "id" ] , 10 , 0 )
res , err := GetPhotoForItb ( uint64 ( phoId ) )
if err != nil {
log . Fatal ( "Error: Photo can't be shown " , err )
writer . WriteHeader ( http . StatusInternalServerError )
}
b , err := json . Marshal ( res )
if err != nil {
log . Fatal ( "Error: " , err )
}
location := req . URL . String ( )
writer . Header ( ) . Set ( "Location:" , location )
writer . Header ( ) . Set ( "Content-Type" , "application/json" )
writer . WriteHeader ( http . StatusOK )
writer . Write ( b )
}
func getPhotoForIteHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
phoId , _ := strconv . ParseUint ( mux . Vars ( req ) [ "id" ] , 10 , 0 )
res , err := GetPhotoForIte ( uint64 ( phoId ) )
if err != nil {
log . Fatal ( "Error: Photo can't be shown " , err )
writer . WriteHeader ( http . StatusInternalServerError )
}
b , err := json . Marshal ( res )
if err != nil {
log . Fatal ( "Error: " , err )
}
location := req . URL . String ( )
writer . Header ( ) . Set ( "Location:" , location )
writer . Header ( ) . Set ( "Content-Type" , "application/json" )
writer . WriteHeader ( http . StatusOK )
writer . Write ( b )
}
func updatePhotoHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
err := req . ParseMultipartForm ( 64 << 20 )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
return
}
var pho Photos
if req . Form [ "pfad" ] != nil {
pho . Id , _ = strconv . ParseUint ( req . FormValue ( "id" ) , 10 , 0 )
pho . Pfad = req . FormValue ( "pfad" )
pho . ItembId , _ = strconv . ParseUint ( req . FormValue ( "itembid" ) , 10 , 0 )
pho . ItemextId , _ = strconv . ParseUint ( req . FormValue ( "itemextid" ) , 10 , 0 )
} else {
body , err := io . ReadAll ( req . Body )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
}
var pho Photos
json . Unmarshal ( body , & pho )
}
log . Println ( "Name = " , pho . Pfad )
log . Info ( "updating Photo" , pho . Pfad )
res , err := UpdatePhoto ( pho )
if err != nil {
writer . WriteHeader ( http . StatusInternalServerError )
}
b , err := json . Marshal ( res )
if err != nil {
log . Fatal ( "Error: " , err )
}
location := fmt . Sprintf ( "%s/%d" , req . URL . String ( ) , res . Id )
writer . Header ( ) . Set ( "Location:" , location )
writer . Header ( ) . Set ( "Content-Type" , "application/json" )
writer . WriteHeader ( http . StatusOK )
writer . Write ( b )
}
// Measure Funktionen
func createMeasureHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
err := req . ParseMultipartForm ( 64 << 20 )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
return
}
var mea Measure
if req . Form [ "kurz" ] != nil {
mea . Kurz = req . FormValue ( "kurz" )
mea . Brust , _ = strconv . ParseFloat ( req . FormValue ( "brust" ) , 64 )
mea . LaengeT , _ = strconv . ParseFloat ( req . FormValue ( "laenget" ) , 64 )
mea . Schulterbreite , _ = strconv . ParseFloat ( req . FormValue ( "schulterbreite" ) , 64 )
mea . TaillenumfangT , _ = strconv . ParseFloat ( req . FormValue ( "taillenumfangt" ) , 64 )
mea . Hueftumfang , _ = strconv . ParseFloat ( req . FormValue ( "hueftumfang" ) , 64 )
mea . Innennaht , _ = strconv . ParseFloat ( req . FormValue ( "innennaht" ) , 64 )
mea . LaengeB , _ = strconv . ParseFloat ( req . FormValue ( "laengeb" ) , 64 )
mea . TaillenumfangB , _ = strconv . ParseFloat ( req . FormValue ( "taillenumfangb" ) , 64 )
for formKey , formValue := range req . Form {
log . WithFields ( log . Fields { formKey : formValue } ) . Info ( "parsing from Form: " )
}
} else {
body , err := io . ReadAll ( req . Body )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
}
var mea Measure
json . Unmarshal ( body , & mea )
}
log . Println ( mea )
log . Println ( "Name= " , mea . Kurz )
log . Info ( "creating new Measure" , mea . Kurz )
res , err := CreateMeasure ( mea )
if err != nil {
writer . WriteHeader ( http . StatusInternalServerError )
}
b , err := json . Marshal ( res )
if err != nil {
log . Fatal ( "Error: " , err )
}
location := fmt . Sprintf ( "%s/%d" , req . URL . String ( ) , res . Id )
writer . Header ( ) . Set ( "Location:" , location )
writer . Header ( ) . Set ( "Content-Type" , "application/json" )
writer . WriteHeader ( http . StatusCreated )
writer . Write ( b )
}
func deleteMeasureHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
err := req . ParseMultipartForm ( 64 << 20 )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
return
}
meaId , _ := strconv . ParseUint ( req . FormValue ( "id" ) , 10 , 0 )
log . Info ( "Deleting Measure with ID" , meaId )
_ , err = DeleteMeasure ( uint64 ( meaId ) )
if err != nil {
log . Fatal ( "Error: Delete could not be executed" , err )
}
writer . WriteHeader ( http . StatusNoContent )
}
func showMeasureHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
res , err := ShowMeasure ( )
if err != nil {
log . Fatal ( "Error: Measure can't be shown " , err )
writer . WriteHeader ( http . StatusInternalServerError )
}
b , err := json . Marshal ( res )
if err != nil {
log . Fatal ( "Error: " , err )
}
location := req . URL . String ( )
writer . Header ( ) . Set ( "Location:" , location )
writer . Header ( ) . Set ( "Content-Type" , "application/json" )
writer . WriteHeader ( http . StatusOK )
writer . Write ( b )
}
func getMeasureHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
meaId , _ := strconv . ParseUint ( req . FormValue ( "id" ) , 10 , 0 )
res , err := GetMeasure ( uint64 ( meaId ) )
if err != nil {
log . Fatal ( "Error: Measure can't be shown " , err )
writer . WriteHeader ( http . StatusInternalServerError )
}
b , err := json . Marshal ( res )
if err != nil {
log . Fatal ( "Error: " , err )
}
location := req . URL . String ( )
writer . Header ( ) . Set ( "Location:" , location )
writer . Header ( ) . Set ( "Content-Type" , "application/json" )
writer . WriteHeader ( http . StatusOK )
writer . Write ( b )
}
func updateMeasureHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
err := req . ParseMultipartForm ( 64 << 20 )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
return
}
var mea Measure
if req . Form [ "kurz" ] != nil {
mea . Id , _ = strconv . ParseUint ( req . FormValue ( "id" ) , 10 , 0 )
mea . Kurz = req . FormValue ( "kurz" )
mea . Brust , _ = strconv . ParseFloat ( req . FormValue ( "brust" ) , 64 )
mea . LaengeT , _ = strconv . ParseFloat ( req . FormValue ( "laenget" ) , 64 )
mea . Schulterbreite , _ = strconv . ParseFloat ( req . FormValue ( "schulterbreite" ) , 64 )
mea . TaillenumfangT , _ = strconv . ParseFloat ( req . FormValue ( "taillenumfangt" ) , 64 )
mea . Hueftumfang , _ = strconv . ParseFloat ( req . FormValue ( "hueftumfang" ) , 64 )
mea . Innennaht , _ = strconv . ParseFloat ( req . FormValue ( "innennaht" ) , 64 )
mea . LaengeB , _ = strconv . ParseFloat ( req . FormValue ( "laengeb" ) , 64 )
mea . TaillenumfangB , _ = strconv . ParseFloat ( req . FormValue ( "taillenumfangb" ) , 64 )
for formKey , formValue := range req . Form {
log . WithFields ( log . Fields { formKey : formValue } ) . Info ( "parsing from Form: " )
}
} else {
body , err := io . ReadAll ( req . Body )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
}
var mea Measure
json . Unmarshal ( body , & mea )
}
log . Println ( "Name = " , mea . Kurz )
log . Info ( "updating Measure" , mea . Kurz )
res , err := UpdateMeasure ( mea )
if err != nil {
writer . WriteHeader ( http . StatusInternalServerError )
}
b , err := json . Marshal ( res )
if err != nil {
log . Fatal ( "Error: " , err )
}
location := fmt . Sprintf ( "%s/%d" , req . URL . String ( ) , res . Id )
writer . Header ( ) . Set ( "Location:" , location )
writer . Header ( ) . Set ( "Content-Type" , "application/json" )
writer . WriteHeader ( http . StatusOK )
writer . Write ( b )
}
// ItemsB Funktionen
func createItemBHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
err := req . ParseMultipartForm ( 64 << 20 )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
return
}
var itemB Itemb
if req . Form [ "bezeichnung" ] != nil {
itemB . Bezeichnung = req . FormValue ( "bezeichnung" )
itemB . Kurzbeschreibung = req . FormValue ( "kurzbeschreibung" )
itemB . Material = req . FormValue ( "material" )
itemB . Groesse = req . FormValue ( "groesse" )
itemB . Farbe = req . FormValue ( "farbe" )
itbtyp , _ := strconv . ParseUint ( req . FormValue ( "typid" ) , 10 , 0 )
itemB . Type . Id = uint ( itbtyp )
itemB . Abmessungen . Id , _ = strconv . ParseUint ( req . FormValue ( "abmessungenid" ) , 10 , 0 )
itemB . Frontview . Id , _ = strconv . ParseUint ( req . FormValue ( "frontviewid" ) , 10 , 0 )
for formKey , formValue := range req . Form {
log . WithFields ( log . Fields { formKey : formValue } ) . Info ( "parsing from Form: " )
}
} else {
body , err := io . ReadAll ( req . Body )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
}
var itemB Itemb
json . Unmarshal ( body , & itemB )
}
log . Println ( itemB )
log . Println ( "Name= " , itemB . Bezeichnung )
log . Info ( "creating new Typ" , itemB . Bezeichnung )
res , err := CreateItemB ( itemB )
if err != nil {
writer . WriteHeader ( http . StatusInternalServerError )
}
b , err := json . Marshal ( res )
if err != nil {
log . Fatal ( "Error: " , err )
}
location := fmt . Sprintf ( "%s/%d" , req . URL . String ( ) , res . Id )
writer . Header ( ) . Set ( "Location:" , location )
writer . Header ( ) . Set ( "Content-Type" , "application/json" )
writer . WriteHeader ( http . StatusCreated )
writer . Write ( b )
}
func deleteItemBHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
err := req . ParseMultipartForm ( 64 << 20 )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
return
}
itemBId , _ := strconv . ParseUint ( mux . Vars ( req ) [ "id" ] , 10 , 0 )
log . Info ( "Deleting Typ with ID" , itemBId )
_ , err = DeleteItemB ( uint64 ( itemBId ) )
if err != nil {
log . Fatal ( "Error: Delete could not be executed" , err )
}
writer . WriteHeader ( http . StatusNoContent )
}
func showItemBHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
res , err := ShowItemB ( )
if err != nil {
log . Fatal ( "Error: Typ can't be shown " , err )
writer . WriteHeader ( http . StatusInternalServerError )
}
b , err := json . Marshal ( res )
if err != nil {
log . Fatal ( "Error: " , err )
}
location := req . URL . String ( )
writer . Header ( ) . Set ( "Location:" , location )
writer . Header ( ) . Set ( "Content-Type" , "application/json" )
writer . WriteHeader ( http . StatusOK )
writer . Write ( b )
}
func getItemBHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
itemBId , _ := strconv . ParseUint ( mux . Vars ( req ) [ "id" ] , 10 , 0 )
res , err := GetItemB ( uint64 ( itemBId ) )
if err != nil {
log . Fatal ( "Error: Typ can't be shown " , err )
writer . WriteHeader ( http . StatusInternalServerError )
}
b , err := json . Marshal ( res )
if err != nil {
log . Fatal ( "Error: " , err )
}
location := req . URL . String ( )
writer . Header ( ) . Set ( "Location:" , location )
writer . Header ( ) . Set ( "Content-Type" , "application/json" )
writer . WriteHeader ( http . StatusOK )
writer . Write ( b )
}
func updateItemBHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
err := req . ParseMultipartForm ( 64 << 20 )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
return
}
var itemB Itemb
if req . Form [ "bezeichnung" ] != nil {
itemB . Bezeichnung = req . FormValue ( "bezeichnung" )
itemB . Kurzbeschreibung = req . FormValue ( "kurzbeschreibung" )
itemB . Material = req . FormValue ( "material" )
itemB . Groesse = req . FormValue ( "groesse" )
itemB . Farbe = req . FormValue ( "farbe" )
itbtyp , _ := strconv . ParseUint ( req . FormValue ( "typid" ) , 10 , 0 )
itemB . Type . Id = uint ( itbtyp )
itemB . Abmessungen . Id , _ = strconv . ParseUint ( req . FormValue ( "abmessungenid" ) , 10 , 0 )
itemB . Frontview . Id , _ = strconv . ParseUint ( req . FormValue ( "frontviewid" ) , 10 , 0 )
itemB . Id , _ = strconv . ParseUint ( req . FormValue ( "id" ) , 10 , 0 )
for formKey , formValue := range req . Form {
log . WithFields ( log . Fields { formKey : formValue } ) . Info ( "parsing from Form: " )
}
} else {
body , err := io . ReadAll ( req . Body )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
}
var itemB Itemb
json . Unmarshal ( body , & itemB )
}
log . Println ( "Name = " , itemB . Bezeichnung )
log . Info ( "updating Typ" , itemB . Bezeichnung )
res , err := UpdateItemB ( itemB )
if err != nil {
writer . WriteHeader ( http . StatusInternalServerError )
}
b , err := json . Marshal ( res )
if err != nil {
log . Fatal ( "Error: " , err )
}
location := fmt . Sprintf ( "%s/%d" , req . URL . String ( ) , res . Id )
writer . Header ( ) . Set ( "Location:" , location )
writer . Header ( ) . Set ( "Content-Type" , "application/json" )
writer . WriteHeader ( http . StatusOK )
writer . Write ( b )
}
// ItemsExt Funktionen
func createItemExtHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
err := req . ParseMultipartForm ( 64 << 20 )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
return
}
var itemExt ItemExt
if req . Form [ "genehmigt" ] != nil {
itemExt . Zuhause , _ = strconv . ParseBool ( req . FormValue ( "zuhause" ) )
itemExt . Draussen , _ = strconv . ParseBool ( req . FormValue ( "draussen" ) )
itemExt . Genehmigt , _ = strconv . ParseBool ( req . FormValue ( "genehmigt" ) )
itemExt . Bemerkung = req . FormValue ( "bemerkung" )
itetyp , _ := strconv . ParseUint ( req . FormValue ( "bewertung" ) , 10 , 0 )
itemExt . Bewertung = int ( itetyp )
itemExt . Favorit , _ = strconv . ParseBool ( req . FormValue ( "abmessungenid" ) )
itemExt . Frontview . Id , _ = strconv . ParseUint ( req . FormValue ( "frontviewid" ) , 10 , 0 )
itemExt . ItemB . Id , _ = strconv . ParseUint ( req . FormValue ( "itembid" ) , 10 , 0 )
for formKey , formValue := range req . Form {
log . WithFields ( log . Fields { formKey : formValue } ) . Info ( "parsing from Form: " )
}
} else {
body , err := io . ReadAll ( req . Body )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
}
var itemExt ItemExt
json . Unmarshal ( body , & itemExt )
}
log . Println ( itemExt )
log . Println ( "ID= " , itemExt . Id )
log . Info ( "creating new ItemExt" , itemExt . Id )
res , err := CreateItemExt ( itemExt )
if err != nil {
writer . WriteHeader ( http . StatusInternalServerError )
}
b , err := json . Marshal ( res )
if err != nil {
log . Fatal ( "Error: " , err )
}
location := fmt . Sprintf ( "%s/%d" , req . URL . String ( ) , res . Id )
writer . Header ( ) . Set ( "Location:" , location )
writer . Header ( ) . Set ( "Content-Type" , "application/json" )
writer . WriteHeader ( http . StatusCreated )
writer . Write ( b )
}
func deleteItemExtHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
err := req . ParseMultipartForm ( 64 << 20 )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
return
}
itemExtId , _ := strconv . ParseUint ( mux . Vars ( req ) [ "id" ] , 10 , 0 )
log . Info ( "Deleting Typ with ID" , itemExtId )
_ , err = DeleteItemExt ( uint64 ( itemExtId ) )
if err != nil {
log . Fatal ( "Error: Delete could not be executed" , err )
}
writer . WriteHeader ( http . StatusNoContent )
}
func showItemExtHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
res , err := ShowItemExt ( )
if err != nil {
log . Fatal ( "Error: Typ can't be shown " , err )
writer . WriteHeader ( http . StatusInternalServerError )
}
b , err := json . Marshal ( res )
if err != nil {
log . Fatal ( "Error: " , err )
}
location := req . URL . String ( )
writer . Header ( ) . Set ( "Location:" , location )
writer . Header ( ) . Set ( "Content-Type" , "application/json" )
writer . WriteHeader ( http . StatusOK )
writer . Write ( b )
}
func getItemExtHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
itemExtId , _ := strconv . ParseUint ( mux . Vars ( req ) [ "id" ] , 10 , 0 )
res , err := GetItemExt ( uint64 ( itemExtId ) )
if err != nil {
log . Fatal ( "Error: Typ can't be shown " , err )
writer . WriteHeader ( http . StatusInternalServerError )
}
b , err := json . Marshal ( res )
if err != nil {
log . Fatal ( "Error: " , err )
}
location := req . URL . String ( )
writer . Header ( ) . Set ( "Location:" , location )
writer . Header ( ) . Set ( "Content-Type" , "application/json" )
writer . WriteHeader ( http . StatusOK )
writer . Write ( b )
}
func updateItemExtHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
if req . Method == http . MethodOptions {
return
}
err := req . ParseMultipartForm ( 64 << 20 )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
return
}
var itemExt ItemExt
if req . Form [ "genehmigt" ] != nil {
itemExt . Zuhause , _ = strconv . ParseBool ( req . FormValue ( "zuhause" ) )
itemExt . Draussen , _ = strconv . ParseBool ( req . FormValue ( "draussen" ) )
itemExt . Genehmigt , _ = strconv . ParseBool ( req . FormValue ( "genehmigt" ) )
itemExt . Bemerkung = req . FormValue ( "bemerkung" )
itetyp , _ := strconv . ParseUint ( req . FormValue ( "bewertung" ) , 10 , 0 )
itemExt . Bewertung = int ( itetyp )
itemExt . Favorit , _ = strconv . ParseBool ( req . FormValue ( "abmessungenid" ) )
itemExt . Frontview . Id , _ = strconv . ParseUint ( req . FormValue ( "frontviewid" ) , 10 , 0 )
itemExt . ItemB . Id , _ = strconv . ParseUint ( req . FormValue ( "itembid" ) , 10 , 0 )
itemExt . Id , _ = strconv . ParseUint ( req . FormValue ( "id" ) , 10 , 0 )
for formKey , formValue := range req . Form {
log . WithFields ( log . Fields { formKey : formValue } ) . Info ( "parsing from Form: " )
}
} else {
body , err := io . ReadAll ( req . Body )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
}
var itemExt ItemExt
json . Unmarshal ( body , & itemExt )
}
log . Println ( "ID = " , itemExt . Id )
log . Info ( "updating ItemExt" , itemExt . Id )
res , err := UpdateItemExt ( itemExt )
if err != nil {
writer . WriteHeader ( http . StatusInternalServerError )
}
b , err := json . Marshal ( res )
if err != nil {
log . Fatal ( "Error: " , err )
}
location := fmt . Sprintf ( "%s/%d" , req . URL . String ( ) , res . Id )
writer . Header ( ) . Set ( "Location:" , location )
writer . Header ( ) . Set ( "Content-Type" , "application/json" )
writer . WriteHeader ( http . StatusOK )
writer . Write ( b )
}
// Upload Funktionen
func uploadFileHandler ( writer http . ResponseWriter , req * http . Request ) {
writer . Header ( ) . Set ( "Access-Control-Allow-Origin" , "*" )
writer . Header ( ) . Set ( "Access-Control-Allow-Headers" , "*" )
if req . Method == http . MethodOptions {
return
}
err := req . ParseMultipartForm ( 64 << 20 )
if err != nil {
writer . WriteHeader ( http . StatusBadRequest )
return
}
var pho Photos
var phoArray [ ] Photos
log . Info ( "vor dem req.Form" )
for formKey , formValue := range req . Form {
log . WithFields ( log . Fields { formKey : formValue } ) . Info ( "parsing from Form: " )
}
/ * if req . Form [ "file" ] != nil {
for i := 0 ; i < len ( req . Form [ "file" ] ) ; i ++ { * /
log . Info ( "File-Name:" , req . FormValue ( "file.name" ) )
file , handler , err := req . FormFile ( "file" )
if err != nil {
panic ( err ) //dont do this
}
defer file . Close ( )
os . Chdir ( UploadPfad )
// copy example
f , err := os . OpenFile ( handler . Filename , os . O_WRONLY | os . O_CREATE , 0666 )
if err != nil {
panic ( err ) //please dont
}
defer f . Close ( )
io . Copy ( f , file )
pho . Pfad = handler . Filename
pho . ItembId = 0
pho . ItemextId = 0
phoArray = append ( phoArray , pho )
/ * }
} * /
if len ( phoArray ) == 0 {
log . Fatal ( "Error: Size of Array = 0" )
writer . WriteHeader ( http . StatusInternalServerError )
return
}
for i := 0 ; i < len ( phoArray ) ; i ++ {
log . Println ( phoArray [ i ] )
log . Println ( "Name= " , phoArray [ i ] . Pfad )
log . Info ( "creating new Photo" , phoArray [ i ] . Pfad )
res , err := CreatePhoto ( phoArray [ i ] )
if err != nil {
writer . WriteHeader ( http . StatusInternalServerError )
}
b , err := json . Marshal ( res )
if err != nil {
log . Fatal ( "Error: " , err )
}
location := fmt . Sprintf ( "%s" , req . URL . String ( ) )
writer . Header ( ) . Set ( "Location:" , location )
writer . Header ( ) . Set ( "Content-Type" , "application/json" )
writer . WriteHeader ( http . StatusCreated )
writer . Write ( b )
cmd := exec . Command ( "/thumbs.sh" )
if err := cmd . Run ( ) ; err != nil {
log . Fatal ( "Error while creating thumbs: " , err )
}
log . Info ( "Thumbs created after photo creation" )
}
}