diff --git a/struct_utils/struct_utils.go b/struct_utils/struct_utils.go
new file mode 100644
index 0000000000000000000000000000000000000000..384feb3cc58b35d2bab4e3661f285d161bfb41a2
--- /dev/null
+++ b/struct_utils/struct_utils.go
@@ -0,0 +1,39 @@
+package struct_utils
+
+import "strings"
+
+// KeyValuePair defines a key/value pair derived from form data
+type KeyValuePair struct {
+	Key   string `json:"key"`
+	Value string `json:"value"`
+}
+
+// FormToKeyValuePairs returns a string-based map of strings as derived from posted form keys and values.
+// e.g. oauth_consumer_key=mlhgs&oauth_consumer_secret=x240ar&oauth_verifier=b0qjbx&store_base_url=http%3A%2F%2Flocalhost.com%2Fstore
+func FormToKeyValuePairs(body string) []KeyValuePair {
+	out := []KeyValuePair{}
+	parts := strings.Split(body, "&")
+	for _, p := range parts {
+		split := strings.Split(p, "=")
+		k := split[0]
+		v := split[1]
+		kv := KeyValuePair{
+			Key:   k,
+			Value: v,
+		}
+		out = append(out, kv)
+	}
+
+	return out
+}
+
+// GetValue returns the value for the given key from a KeyValuePair slice.
+func GetValue(key string, kv []KeyValuePair) string {
+	for _, v := range kv {
+		if v.Key == key {
+			return v.Value
+		}
+	}
+
+	return ""
+}