package actions

import (
	"fmt"
	"strings"

	"github.com/deis/helm/log"
	"github.com/gobuffalo/buffalo"
	"github.com/gobuffalo/pop"
	"github.com/kindlyops/mappamundi/havenapi/models"
)

// RegistrationHandler accepts json
func RegistrationHandler(c buffalo.Context) error {
	tx := c.Value("tx").(*pop.Connection)
	request := c.Request()
	request.ParseForm()

	remoteAddress := strings.Split(request.RemoteAddr, ":")[0]

	err := tx.RawQuery(
		models.Q["registeruser"],
		request.FormValue("email"),
		remoteAddress,
		request.FormValue("survey_results"),
	).Exec()

	if err != nil {
		return c.Error(
			500,
			fmt.Errorf(
				"Error inserting registration to database: %s for remote address %s",
				err.Error(),
				remoteAddress))
	}

	log.Info("processed a registration")
	message := "success"
	return c.Render(200, r.JSON(map[string]string{"message": message}))
}

package actions

import (
	"fmt"

	"github.com/deis/helm/log"
	"github.com/gobuffalo/buffalo"
	"github.com/gobuffalo/pop"
	"github.com/kindlyops/mappamundi/havenapi/models"
)

// RegistrationHandler accepts json
func RegistrationHandler(c buffalo.Context) error {
	tx := c.Value("tx").(*pop.Connection)
	request := c.Request()
	request.ParseForm()

	err := tx.RawQuery(
		models.Q["registeruser"],
		request.FormValue("email"),
		request.FormValue("ip_address"),
		request.FormValue("survey_results"),
	).Exec()

	if err != nil {
		return c.Error(500, fmt.Errorf("error inserting registration to database: %s", err.Error()))
	}

	log.Info("processed a registration")
	message := "success"
	return c.Render(200, r.JSON(map[string]string{"message": message}))
}

--- 
+++ 
@@ -2,6 +2,7 @@
 
 import (
 	"fmt"
+	"strings"
 
 	"github.com/deis/helm/log"
 	"github.com/gobuffalo/buffalo"
@@ -15,15 +16,22 @@
 	request := c.Request()
 	request.ParseForm()
 
+	remoteAddress := strings.Split(request.RemoteAddr, ":")[0]
+
 	err := tx.RawQuery(
 		models.Q["registeruser"],
 		request.FormValue("email"),
-		request.FormValue("ip_address"),
+		remoteAddress,
 		request.FormValue("survey_results"),
 	).Exec()
 
 	if err != nil {
-		return c.Error(500, fmt.Errorf("error inserting registration to database: %s", err.Error()))
+		return c.Error(
+			500,
+			fmt.Errorf(
+				"Error inserting registration to database: %s for remote address %s",
+				err.Error(),
+				remoteAddress))
 	}
 
 	log.Info("processed a registration")
Refactor to use remote address from request.

Now using the remote address from the go buffalo request
instead of accepting from the post.

Issue #HAV-133

Signed-off-by: Christopher Mundus <711c73f64afdce07b7e38039a96d2224209e9a6c@kindlyops.com>
