You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
1.4 KiB

  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "net/http"
  6. "os"
  7. "github.com/fatih/color"
  8. "github.com/gorilla/handlers"
  9. mgo "gopkg.in/mgo.v2"
  10. )
  11. const keysDir = "keys"
  12. const postsDir = "ownposts"
  13. const keysize = 2048
  14. const hashize = 1536
  15. var userCollection *mgo.Collection
  16. var postCollection *mgo.Collection
  17. func main() {
  18. color.Blue("Starting ipfs-ai-models-market")
  19. readConfig("config.json")
  20. fmt.Println(config)
  21. //create models directory
  22. _ = os.Mkdir(keysDir, os.ModePerm)
  23. //create models directory
  24. _ = os.Mkdir(postsDir, os.ModePerm)
  25. initializeToken()
  26. //mongodb
  27. session, err := getSession()
  28. check(err)
  29. userCollection = getCollection(session, "users")
  30. postCollection = getCollection(session, "posts")
  31. //run thw webserver
  32. go GUI()
  33. //run API
  34. log.Println("api server running")
  35. log.Print("port: ")
  36. log.Println(config.APIPort)
  37. router := NewRouter()
  38. headersOk := handlers.AllowedHeaders([]string{"X-Requested-With", "Access-Control-Allow-Origin", "Authorization"})
  39. originsOk := handlers.AllowedOrigins([]string{"*"})
  40. methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})
  41. log.Fatal(http.ListenAndServe(":"+config.APIPort, handlers.CORS(originsOk, headersOk, methodsOk)(router)))
  42. }
  43. func GUI() {
  44. //here, run webserver
  45. log.Println("webserver in port " + config.WebPort)
  46. http.Handle("/", http.FileServer(http.Dir("./webapp")))
  47. http.ListenAndServe(":"+config.WebPort, nil)
  48. }