Current section

Files

Jump to
fireball src fireball.gleam
Raw

src/fireball.gleam

//gleam
import gleam/http
import gleam/http/request
import gleam/httpc
//Import firebase objects, document type
import error
import objects/document
//get_doc function to retrieve a document from Google's Firestore Database
pub fn get_doc(
apikey apikey: String,
apiver apiver: String,
database database: String,
doc doc: String,
proj_id proj_id: String,
) -> Result(document.FireballDocument, error.FireballError) {
//Init a request object
case
request.to(
//Firestore url
"https://firestore.googleapis.com/"
//Firestore Web API version
<> apiver
<> "/projects/"
//Project id
<> proj_id
<> "/databases/"
//Database to use
<> database
<> "/documents/"
//Document path
<> doc
<> "?key="
//API Key for the google cloud project
<> apikey,
)
{
//Check output
Ok(base_req) -> {
//Add headers
let req =
//Add headers
request.prepend_header(base_req, "Content-type", "application/json")
//Set method
|> request.set_method(http.Get)
//Send the HTTP request to the server
case httpc.send(req) {
//Retrieve successful response
Ok(resp) ->
Ok(document.FireballDocument(data: resp.body, creation_time: ""))
//Handle errors
Error(_) ->
Error(error.FireballError(err: "error while sending request"))
}
}
//Handle errors
Error(_) -> Error(error.FireballError(err: "error while forming request"))
}
}