Context
The context is an object that provides you with all the functionalities and information you need to handle a request, it contains things like request headers, form's post data, uploaded files, database orm, sending emails, ...etc.
In addition to that it contains the response object which contains various functions to return different types of responses like json, html, text ...etc.
Below are more details about the functionalities that the context provides you with:
Get the URL parameters
GetPathParam(key string)
func SomeHandler(c *core.Context) {
// route: example.com/users/:name
name := c.GetPathParam("name")
}
Get the request parameters
GetRequestParam(key string) to get the forms data (post, get, put,...etc)
func SomeHandler(c *core.Context) {
// URL: example.com/users?name=jhon
name := c.GetRequestParam("name")
fmt.Println(name) // outputs john
}
Check if a request parameter exists
RequestParamExists(key string) It check's if a request parameter exists, it returns true if it exists and false if it doesn't
func SomeHandler(c *core.Context) {
// URL: example.com/users?name=jhon
nameExists := c.RequestParamExists("name")
if nameExists {
// name exists
}
}
Gets the value of a request header
GetHeader(key string)
func SomeHandler(c *core.Context) {
realIPAddress := c.GetHeader("X-Forwarded-For")
}
Handle uploaded files
GetUploadedFile(key string) Returns information about the uploaded file like name, path
func SomeHandler(c *core.Context) {
fileInfo, err := c.GetUploadedFile("key-name")
fileInfo.FullPath // full path to the temporary location of the uploaded file
fileInfo.Name // the name of the file
}
Where:
fileinfo is an object that has general information about the uploaded file, here is all the file information that it provides:
- fileInfo.FullPath: full path to the temporary location of the uploaded file
- fileInfo.Name: the file name without the path
- fileInfo.NameWithoutExtension: the file name without extension
- fileInfo.Extension: the extension of the file
- fileInfo.Size: the file size in bytes
Save uploaded file to a specific location:
GoCondor stores all uploaded files in a temporary location, to save it to a specific location, you can simply move it using the function MoveFile(srcPath, destPath, newFilename), here is how:
func SaveFile(c *core.Context) {
fileinfo, err := c.GetUploadedFile("key-name")
err := c.MoveFile(fileinfo.FullPath, "./storage/files", "myfile.pdf")
if err != nil {
// error moving the file
}
}
Move files from one location to another
MoveFile(srcPath, destLocation, newFileName) helps you move files from one location to another, it returns an error in case of any
func SomeHandler(c *core.Context) {
err := c.MoveFile("./storage/myfile.paf", "./storage/pdfs/", "new-filename.pdf")
}
Copy files
CopyFile(srcPath, destLocation, newFileName) helps you copy files from one location to another, it returns an error in case of any
func SomeHandler(c *core.Context) {
err := c.CopyFile("./storage/myfile.paf", "./storage/pdfs/", "new-filename.pdf")
}
Convert maps to json
MapToJson(myMap map[string]interface{}) can help you convert maps to json
func SomeHandler(c *core.Context) {
jsonString := c.MapToJson(myMap)
}
Get the project's base directory path
GetBaseDirPath() gives you the full path to the project's base directory bath in a string format
func SomeHandler(c *core.Context) {
path := c.GetBaseDirPath()
}
Convert variables to strings
CastToString(value interface{}) helps you convert variables to strings, it panics if the variable is not convertible to string
func SomeHandler(c *core.Context) {
str := c.CastToString(valueStr)
}
Convert variables to int
CastToInt(value interface{}) convert variables to int including (int32, int64, ...etc), it panics if it's not convertible to int
func SomeHandler(c *core.Context) {
valueInt := c.CastToInt(valueStr)
}
Convert variables to float
CastToFloat(value interface{}) convert variables to float64, it panics if it's not convertible to float64
func SomeHandler(c *core.Context) {
valueFloat64 := c.CastToFloat(value)
}