2014-01-09 06:42:05 +00:00
package controllers
import (
2014-01-13 02:00:20 +00:00
"encoding/json"
2014-01-09 06:42:05 +00:00
"fmt"
"net/http"
2014-01-13 02:00:20 +00:00
ctx "github.com/gorilla/context"
2014-01-09 06:42:05 +00:00
"github.com/gorilla/mux"
2014-01-31 04:46:25 +00:00
"github.com/jordan-wright/gophish/db"
"github.com/jordan-wright/gophish/models"
2014-01-09 06:42:05 +00:00
)
func API ( w http . ResponseWriter , r * http . Request ) {
2014-01-31 04:46:25 +00:00
if r . Method == "GET" {
}
if r . Method == "POST" {
//Add a new campaign
//v :=
}
2014-01-13 02:00:20 +00:00
if u , err := json . Marshal ( ctx . Get ( r , "user" ) ) ; err == nil {
writeJSON ( w , u )
} else {
http . Error ( w , "Server Error" , 500 )
}
2014-01-09 06:42:05 +00:00
}
//API_Campaigns returns a list of campaigns if requested via GET.
//If requested via POST, API_Campaigns creates a new campaign and returns a reference to it.
func API_Campaigns ( w http . ResponseWriter , r * http . Request ) {
switch {
case r . Method == "GET" :
2014-01-31 04:46:25 +00:00
cs := [ ] models . Campaign { }
_ , err := db . Conn . Select ( & cs , "SELECT name, created_date, completed_date, status, template FROM campaigns, users WHERE campaigns.uid=users.id AND users.apikey=?" , ctx . Get ( r , "api_key" ) )
if err != nil {
fmt . Println ( err )
}
2014-01-31 05:11:06 +00:00
d , err := json . MarshalIndent ( cs , "" , " " )
2014-01-31 04:46:25 +00:00
if err != nil {
fmt . Println ( err )
}
writeJSON ( w , d )
2014-01-09 06:42:05 +00:00
case r . Method == "POST" :
fmt . Fprintf ( w , "Hello POST!" )
}
2014-01-13 02:00:20 +00:00
//fmt.Fprintf(w, "Hello api")
2014-01-09 06:42:05 +00:00
}
//API_Campaigns_Id returns details about the requested campaign. If the campaign is not
//valid, API_Campaigns_Id returns null.
func API_Campaigns_Id ( w http . ResponseWriter , r * http . Request ) {
w . Header ( ) . Set ( "Content-Type" , "application/json" )
vars := mux . Vars ( r )
fmt . Fprintf ( w , "{\"method\" : \"" + r . Method + "\", \"id\" : " + vars [ "id" ] + "}" )
}
//API_Doc renders a template describing the API documentation.
func API_Doc ( w http . ResponseWriter , r * http . Request ) {
2014-01-10 03:21:54 +00:00
getTemplate ( w , "api_doc" ) . ExecuteTemplate ( w , "base" , nil )
2014-01-09 06:42:05 +00:00
}
2014-01-13 02:00:20 +00:00
func writeJSON ( w http . ResponseWriter , c [ ] byte ) {
w . Header ( ) . Set ( "Content-Type" , "application/json" )
fmt . Fprintf ( w , "%s" , c )
}