From aca96a70f7877dd04f1095d8938bc7e2ca16d1fd Mon Sep 17 00:00:00 2001 From: Shilpa Kancharla Date: Sat, 20 Jul 2024 23:18:22 +0000 Subject: [PATCH 1/3] Added curl examples for files --- samples/rest/files.sh | 272 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 272 insertions(+) create mode 100644 samples/rest/files.sh diff --git a/samples/rest/files.sh b/samples/rest/files.sh new file mode 100644 index 000000000..5ad7ae48e --- /dev/null +++ b/samples/rest/files.sh @@ -0,0 +1,272 @@ +set -eu + +SCRIPT_DIR=$(dirname "$0") +MEDIA_DIR=$(realpath ${SCRIPT_DIR}/../../third_party) + +TEXT_PATH=${MEDIA_DIR}/poem.txt +IMG_PATH=${MEDIA_DIR}/organ.jpg +IMG_PATH_2=${MEDIA_DIR}/Cajun_instruments.jpg +AUDIO_PATH=${MEDIA_DIR}/sample.mp3 +VIDEO_PATH=${MEDIA_DIR}/Big_Buck_Bunny.mp4 + +BASE_URL="https://generativelanguage.googleapis.com" + +echo "[START files_create_text]" +# [START files_create_text] +MIME_TYPE=$(file -b --mime-type "${TEXT_PATH}") +NUM_BYTES=$(wc -c < "${TEXT_PATH}") +DISPLAY_NAME=TEXT + +tmp_header_file=upload-header.tmp + +# Initial resumable request defining metadata. +# The upload url is in the response headers dump them to a file. +curl "${BASE_URL}/upload/v1beta/files?key=${GOOGLE_API_KEY}" \ + -D upload-header.tmp \ + -H "X-Goog-Upload-Protocol: resumable" \ + -H "X-Goog-Upload-Command: start" \ + -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \ + -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \ + -H "Content-Type: application/json" \ + -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null + +upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r") +rm "${tmp_header_file}" + +# Upload the actual bytes. +curl "${upload_url}" \ + -H "Content-Length: ${NUM_BYTES}" \ + -H "X-Goog-Upload-Offset: 0" \ + -H "X-Goog-Upload-Command: upload, finalize" \ + --data-binary "@${TEXT_PATH}" 2> /dev/null > file_info.json + +file_uri=$(jq ".file.uri" file_info.json) +echo file_uri=$file_uri + +curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \ + -H 'Content-Type: application/json' \ + -X POST \ + -d '{ + "contents": [{ + "parts":[ + {"text": "Can you add a few more lines to this poem?"}, + {"file_data":{"mime_type": "text/plain", "file_uri": '$file_uri'}}] + }] + }' 2> /dev/null > response.json + +cat response.json +echo + +jq ".candidates[].content.parts[].text" response.json +# [END files_create_text] + +echo "[START files_create_image]" +# [START files_create_image] +MIME_TYPE=$(file -b --mime-type "${IMG_PATH_2}") +NUM_BYTES=$(wc -c < "${IMG_PATH_2}") +DISPLAY_NAME=TEXT + +tmp_header_file=upload-header.tmp + +# Initial resumable request defining metadata. +# The upload url is in the response headers dump them to a file. +curl "${BASE_URL}/upload/v1beta/files?key=${GOOGLE_API_KEY}" \ + -D upload-header.tmp \ + -H "X-Goog-Upload-Protocol: resumable" \ + -H "X-Goog-Upload-Command: start" \ + -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \ + -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \ + -H "Content-Type: application/json" \ + -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null + +upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r") +rm "${tmp_header_file}" + +# Upload the actual bytes. +curl "${upload_url}" \ + -H "Content-Length: ${NUM_BYTES}" \ + -H "X-Goog-Upload-Offset: 0" \ + -H "X-Goog-Upload-Command: upload, finalize" \ + --data-binary "@${IMG_PATH_2}" 2> /dev/null > file_info.json + +file_uri=$(jq ".file.uri" file_info.json) +echo file_uri=$file_uri + +curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \ + -H 'Content-Type: application/json' \ + -X POST \ + -d '{ + "contents": [{ + "parts":[ + {"text": "Can you tell me about the instruments in this photo?"}, + {"file_data":{"mime_type": ""image/jpeg"", "file_uri": '$file_uri'}}] + }] + }' 2> /dev/null > response.json + +cat response.json +echo + +jq ".candidates[].content.parts[].text" response.json +# [END files_create_image] + +echo "[START files_create_audio]" +# [START files_create_audio] +MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}") +NUM_BYTES=$(wc -c < "${AUDIO_PATH}") +DISPLAY_NAME=AUDIO + +tmp_header_file=upload-header.tmp + +# Initial resumable request defining metadata. +# The upload url is in the response headers dump them to a file. +curl "${BASE_URL}/upload/v1beta/files?key=${GOOGLE_API_KEY}" \ + -D upload-header.tmp \ + -H "X-Goog-Upload-Protocol: resumable" \ + -H "X-Goog-Upload-Command: start" \ + -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \ + -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \ + -H "Content-Type: application/json" \ + -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null + +upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r") +rm "${tmp_header_file}" + +# Upload the actual bytes. +curl "${upload_url}" \ + -H "Content-Length: ${NUM_BYTES}" \ + -H "X-Goog-Upload-Offset: 0" \ + -H "X-Goog-Upload-Command: upload, finalize" \ + --data-binary "@${AUDIO_PATH}" 2> /dev/null > file_info.json + +file_uri=$(jq ".file.uri" file_info.json) +echo file_uri=$file_uri + +curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \ + -H 'Content-Type: application/json' \ + -X POST \ + -d '{ + "contents": [{ + "parts":[ + {"text": "Describe this audio clip"}, + {"file_data":{"mime_type": "audio/mp3", "file_uri": '$file_uri'}}] + }] + }' 2> /dev/null > response.json + +cat response.json +echo + +jq ".candidates[].content.parts[].text" response.json +# [END files_create_audio] + +echo "[START files_create_video]" +# [START files_create_video] +MIME_TYPE=$(file -b --mime-type "${VIDEO_PATH}") +NUM_BYTES=$(wc -c < "${VIDEO_PATH}") +DISPLAY_NAME=VIDEO_PATH + +# Initial resumable request defining metadata. +# The upload url is in the response headers dump them to a file. +curl "${BASE_URL}/upload/v1beta/files?key=${GOOGLE_API_KEY}" \ + -D upload-header.tmp \ + -H "X-Goog-Upload-Protocol: resumable" \ + -H "X-Goog-Upload-Command: start" \ + -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \ + -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \ + -H "Content-Type: application/json" \ + -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null + +upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r") +rm "${tmp_header_file}" + +# Upload the actual bytes. +curl "${upload_url}" \ + -H "Content-Length: ${NUM_BYTES}" \ + -H "X-Goog-Upload-Offset: 0" \ + -H "X-Goog-Upload-Command: upload, finalize" \ + --data-binary "@${VIDEO_PATH}" 2> /dev/null > file_info.json + +file_uri=$(jq ".file.uri" file_info.json) +echo file_uri=$file_uri + +curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \ + -H 'Content-Type: application/json' \ + -X POST \ + -d '{ + "contents": [{ + "parts":[ + {"text": "Describe this video clip"}, + {"file_data":{"mime_type": "video/mp4", "file_uri": '$file_uri'}}] + }] + }' 2> /dev/null > response.json + +cat response.json +echo + +jq ".candidates[].content.parts[].text" response.json +# [END files_create_video] + +echo "[START files_list]" +# [START files_list] +echo "My files: " +curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:listFiles?key=$GOOGLE_API_KEY" +# [END files_list] + +echo "[START files_get]" +# [START files_get] +MIME_TYPE=$(file -b --mime-type "${TEXT_PATH}") +NUM_BYTES=$(wc -c < "${TEXT_PATH}") +DISPLAY_NAME=TEXT + +tmp_header_file=upload-header.tmp + +# Initial resumable request defining metadata. +# The upload url is in the response headers dump them to a file. +curl "${BASE_URL}/upload/v1beta/files?key=${GOOGLE_API_KEY}" \ + -D upload-header.tmp \ + -H "X-Goog-Upload-Protocol: resumable" \ + -H "X-Goog-Upload-Command: start" \ + -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \ + -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \ + -H "Content-Type: application/json" \ + -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null + +upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r") +rm "${tmp_header_file}" + +curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:getFile?key=$GOOGLE_API_KEY" / + -H 'Content-Type: application/json' \ + -X POST \ + -d '{ + "name": '${DISPLAY_NAME}'}}" + }' 2> /dev/null > response.json +# [END files_get] + +echo "[START files_delete]" +# [START files_delete] +MIME_TYPE=$(file -b --mime-type "${TEXT_PATH}") +NUM_BYTES=$(wc -c < "${TEXT_PATH}") +DISPLAY_NAME=TEXT + +tmp_header_file=upload-header.tmp + +# Initial resumable request defining metadata. +# The upload url is in the response headers dump them to a file. +curl "${BASE_URL}/upload/v1beta/files?key=${GOOGLE_API_KEY}" \ + -D upload-header.tmp \ + -H "X-Goog-Upload-Protocol: resumable" \ + -H "X-Goog-Upload-Command: start" \ + -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \ + -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \ + -H "Content-Type: application/json" \ + -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null + +upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r") +rm "${tmp_header_file}" + +curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:deleteFile?key=$GOOGLE_API_KEY" / + -H 'Content-Type: application/json' \ + -X POST \ + -d '{ + "name": '${DISPLAY_NAME}'}}" + }' 2> /dev/null > response.json +# [END files_delete] \ No newline at end of file From 7fe1cdbf4a89bf9edc9ec423778799c6ef933870 Mon Sep 17 00:00:00 2001 From: Shilpa Kancharla Date: Tue, 23 Jul 2024 10:50:16 -0700 Subject: [PATCH 2/3] Update files.sh --- samples/rest/files.sh | 102 +++++++++++++++++------------------------- 1 file changed, 40 insertions(+), 62 deletions(-) diff --git a/samples/rest/files.sh b/samples/rest/files.sh index 5ad7ae48e..47eef2efc 100644 --- a/samples/rest/files.sh +++ b/samples/rest/files.sh @@ -43,6 +43,7 @@ curl "${upload_url}" \ file_uri=$(jq ".file.uri" file_info.json) echo file_uri=$file_uri +# Now generate content using that file curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \ -H 'Content-Type: application/json' \ -X POST \ @@ -58,6 +59,24 @@ cat response.json echo jq ".candidates[].content.parts[].text" response.json + +echo "[START files_get]" +# [START files_get] +name=$(jq ".file.name" file_info.json) +# Get the file of interest to check state +curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json +# Print some information about the file you got +name=$(jq ".file.name" file_info.json) +echo name=$name +file_uri=$(jq ".file.uri" file_info.json) +echo file_uri=$file_uri +# [END files_get] + +echo "[START files_delete]" +# [START files_delete] +curl --request "DELETE" https://generativelanguage.googleapis.com/v1beta/files/$name?key=$GOOGLE_API_KEY +# [END files_delete] + # [END files_create_text] echo "[START files_create_image]" @@ -92,6 +111,7 @@ curl "${upload_url}" \ file_uri=$(jq ".file.uri" file_info.json) echo file_uri=$file_uri +# Now generate content using that file curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \ -H 'Content-Type: application/json' \ -X POST \ @@ -99,7 +119,10 @@ curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:g "contents": [{ "parts":[ {"text": "Can you tell me about the instruments in this photo?"}, - {"file_data":{"mime_type": ""image/jpeg"", "file_uri": '$file_uri'}}] + {"file_data": + {"mime_type": "image/jpeg", + "file_uri": '$file_uri'} + }] }] }' 2> /dev/null > response.json @@ -141,6 +164,7 @@ curl "${upload_url}" \ file_uri=$(jq ".file.uri" file_info.json) echo file_uri=$file_uri +# Now generate content using that file curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \ -H 'Content-Type: application/json' \ -X POST \ @@ -188,6 +212,20 @@ curl "${upload_url}" \ file_uri=$(jq ".file.uri" file_info.json) echo file_uri=$file_uri +state=$(jq ".file.state" file_info.json) +echo state=$state + +# Ensure the state of the video is 'ACTIVE' +while [[ "($state)" = *"PROCESSING"* ]]; +do + echo "Processing video..." + sleep 5 + # Get the file of interest to check state + curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json + state=$(jq ".file.state" file_info.json) +done + +# Now generate content using that file curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \ -H 'Content-Type: application/json' \ -X POST \ @@ -208,65 +246,5 @@ jq ".candidates[].content.parts[].text" response.json echo "[START files_list]" # [START files_list] echo "My files: " -curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:listFiles?key=$GOOGLE_API_KEY" +curl "https://generativelanguage.googleapis.com/v1beta/files?key=$GOOGLE_API_KEY" # [END files_list] - -echo "[START files_get]" -# [START files_get] -MIME_TYPE=$(file -b --mime-type "${TEXT_PATH}") -NUM_BYTES=$(wc -c < "${TEXT_PATH}") -DISPLAY_NAME=TEXT - -tmp_header_file=upload-header.tmp - -# Initial resumable request defining metadata. -# The upload url is in the response headers dump them to a file. -curl "${BASE_URL}/upload/v1beta/files?key=${GOOGLE_API_KEY}" \ - -D upload-header.tmp \ - -H "X-Goog-Upload-Protocol: resumable" \ - -H "X-Goog-Upload-Command: start" \ - -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \ - -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \ - -H "Content-Type: application/json" \ - -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null - -upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r") -rm "${tmp_header_file}" - -curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:getFile?key=$GOOGLE_API_KEY" / - -H 'Content-Type: application/json' \ - -X POST \ - -d '{ - "name": '${DISPLAY_NAME}'}}" - }' 2> /dev/null > response.json -# [END files_get] - -echo "[START files_delete]" -# [START files_delete] -MIME_TYPE=$(file -b --mime-type "${TEXT_PATH}") -NUM_BYTES=$(wc -c < "${TEXT_PATH}") -DISPLAY_NAME=TEXT - -tmp_header_file=upload-header.tmp - -# Initial resumable request defining metadata. -# The upload url is in the response headers dump them to a file. -curl "${BASE_URL}/upload/v1beta/files?key=${GOOGLE_API_KEY}" \ - -D upload-header.tmp \ - -H "X-Goog-Upload-Protocol: resumable" \ - -H "X-Goog-Upload-Command: start" \ - -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \ - -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \ - -H "Content-Type: application/json" \ - -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null - -upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r") -rm "${tmp_header_file}" - -curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:deleteFile?key=$GOOGLE_API_KEY" / - -H 'Content-Type: application/json' \ - -X POST \ - -d '{ - "name": '${DISPLAY_NAME}'}}" - }' 2> /dev/null > response.json -# [END files_delete] \ No newline at end of file From 25621f51cff8d4dc846fa5b7ebddff999eca6294 Mon Sep 17 00:00:00 2001 From: Shilpa Kancharla Date: Tue, 23 Jul 2024 17:51:23 +0000 Subject: [PATCH 3/3] update files.sh --- samples/rest/files.sh | 104 +++++++++++++++++------------------------- 1 file changed, 41 insertions(+), 63 deletions(-) diff --git a/samples/rest/files.sh b/samples/rest/files.sh index 5ad7ae48e..e42e28a0f 100644 --- a/samples/rest/files.sh +++ b/samples/rest/files.sh @@ -43,6 +43,7 @@ curl "${upload_url}" \ file_uri=$(jq ".file.uri" file_info.json) echo file_uri=$file_uri +# Now generate content using that file curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \ -H 'Content-Type: application/json' \ -X POST \ @@ -58,6 +59,24 @@ cat response.json echo jq ".candidates[].content.parts[].text" response.json + +echo "[START files_get]" +# [START files_get] +name=$(jq ".file.name" file_info.json) +# Get the file of interest to check state +curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json +# Print some information about the file you got +name=$(jq ".file.name" file_info.json) +echo name=$name +file_uri=$(jq ".file.uri" file_info.json) +echo file_uri=$file_uri +# [END files_get] + +echo "[START files_delete]" +# [START files_delete] +curl --request "DELETE" https://generativelanguage.googleapis.com/v1beta/files/$name?key=$GOOGLE_API_KEY +# [END files_delete] + # [END files_create_text] echo "[START files_create_image]" @@ -92,6 +111,7 @@ curl "${upload_url}" \ file_uri=$(jq ".file.uri" file_info.json) echo file_uri=$file_uri +# Now generate content using that file curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \ -H 'Content-Type: application/json' \ -X POST \ @@ -99,7 +119,10 @@ curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:g "contents": [{ "parts":[ {"text": "Can you tell me about the instruments in this photo?"}, - {"file_data":{"mime_type": ""image/jpeg"", "file_uri": '$file_uri'}}] + {"file_data": + {"mime_type": "image/jpeg", + "file_uri": '$file_uri'} + }] }] }' 2> /dev/null > response.json @@ -141,6 +164,7 @@ curl "${upload_url}" \ file_uri=$(jq ".file.uri" file_info.json) echo file_uri=$file_uri +# Now generate content using that file curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \ -H 'Content-Type: application/json' \ -X POST \ @@ -188,6 +212,20 @@ curl "${upload_url}" \ file_uri=$(jq ".file.uri" file_info.json) echo file_uri=$file_uri +state=$(jq ".file.state" file_info.json) +echo state=$state + +# Ensure the state of the video is 'ACTIVE' +while [[ "($state)" = *"PROCESSING"* ]]; +do + echo "Processing video..." + sleep 5 + # Get the file of interest to check state + curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json + state=$(jq ".file.state" file_info.json) +done + +# Now generate content using that file curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \ -H 'Content-Type: application/json' \ -X POST \ @@ -208,65 +246,5 @@ jq ".candidates[].content.parts[].text" response.json echo "[START files_list]" # [START files_list] echo "My files: " -curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:listFiles?key=$GOOGLE_API_KEY" -# [END files_list] - -echo "[START files_get]" -# [START files_get] -MIME_TYPE=$(file -b --mime-type "${TEXT_PATH}") -NUM_BYTES=$(wc -c < "${TEXT_PATH}") -DISPLAY_NAME=TEXT - -tmp_header_file=upload-header.tmp - -# Initial resumable request defining metadata. -# The upload url is in the response headers dump them to a file. -curl "${BASE_URL}/upload/v1beta/files?key=${GOOGLE_API_KEY}" \ - -D upload-header.tmp \ - -H "X-Goog-Upload-Protocol: resumable" \ - -H "X-Goog-Upload-Command: start" \ - -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \ - -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \ - -H "Content-Type: application/json" \ - -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null - -upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r") -rm "${tmp_header_file}" - -curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:getFile?key=$GOOGLE_API_KEY" / - -H 'Content-Type: application/json' \ - -X POST \ - -d '{ - "name": '${DISPLAY_NAME}'}}" - }' 2> /dev/null > response.json -# [END files_get] - -echo "[START files_delete]" -# [START files_delete] -MIME_TYPE=$(file -b --mime-type "${TEXT_PATH}") -NUM_BYTES=$(wc -c < "${TEXT_PATH}") -DISPLAY_NAME=TEXT - -tmp_header_file=upload-header.tmp - -# Initial resumable request defining metadata. -# The upload url is in the response headers dump them to a file. -curl "${BASE_URL}/upload/v1beta/files?key=${GOOGLE_API_KEY}" \ - -D upload-header.tmp \ - -H "X-Goog-Upload-Protocol: resumable" \ - -H "X-Goog-Upload-Command: start" \ - -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \ - -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \ - -H "Content-Type: application/json" \ - -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null - -upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r") -rm "${tmp_header_file}" - -curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:deleteFile?key=$GOOGLE_API_KEY" / - -H 'Content-Type: application/json' \ - -X POST \ - -d '{ - "name": '${DISPLAY_NAME}'}}" - }' 2> /dev/null > response.json -# [END files_delete] \ No newline at end of file +curl "https://generativelanguage.googleapis.com/v1beta/files?key=$GOOGLE_API_KEY" +# [END files_list] \ No newline at end of file