function folder_search_or_create($folder_name, $parent_id, $username)
{
    $drive = new PikaDrive($username);
    $sub_folders = $drive->listFiles($parent_id);
    foreach ($sub_folders as $sub_folder) {
        if ($sub_folder['title'] == $folder_name && $sub_folder['mimeType'] == 'application/vnd.google-apps.folder') {
            return $sub_folder['id'];
        }
    }
    // If the foreach() loop didn't return a value, that means the folder doesn't
    // exist and it needs to be created.
    $z = $drive->createFolder($folder_name, $parent_id);
    return $z['id'];
}
                    switch ($api_request[1]) {
                        case 'auth':
                            if (isset($_GET['code'])) {
                                $rest->setToken($_SESSION['username'], $_GET['code']);
                                unset($_SESSION['username']);
                                echo "<script>window.close();</script>";
                            } else {
                                $_SESSION['username'] = get_value('username');
                                $rest->authenticate();
                            }
                            break;
                        case 'upload':
                            echo json_encode($rest->uploadFile($_FILES['upfile']['tmp_name'], $_POST['file_name'], $_POST['folder_id']));
                            break;
                        case 'new_folder':
                            echo json_encode($rest->createFolder($_POST['folder_name']));
                            break;
                        case 'unauthorize':
                            $rest->unauthorize(htmlspecialchars($_GET['username']));
                            break;
                        default:
                            break;
                    }
                }
            }
        } else {
            http_response_code(400);
            // BAD REQUEST
        }
    }
}