Используйте elixir-google-api для создания папки в GDrive - PullRequest
0 голосов
/ 13 марта 2020

Я пытаюсь использовать elixir-google-api для создания приложения, которое поддерживает файлы и папки в GDrive. У меня есть следующий код, но я не могу точно определить, как передать имя и mimeType.

Кто-нибудь использовал этот API раньше и может пролить свет на то, где я ошибаюсь?

Спасибо Петр

def create_folder(name) do
    connection
    |> File.create(name: name, mimeType: type_folder())
  end

  def File.create(connection, opts \\ []) do
        optional_params =
          %{
            :ignoreDefaultVisibility => :query,
            :keepRevisionForever => :query,
            :ocrLanguage => :query,
            :supportsTeamDrives => :query,
            :useContentAsIndexableText => :query,
            :appProperties => :form,
            :description => :form,
            :folderColorRgb => :form,
            :id => :form,
            :mimeType => :form,
            :modifiedTime => :form,
            :name => :form,
            :originalFilename => :form,
            :parents => :form,
            :properties => :form,
            :starred => :form,
            :viewedByMeTime => :form,
            :viewersCanCopyContent => :form,
            :writersCanShare => :form
          }
          |> Map.merge(standard_params())

        connection
        |> GoogleApi.Drive.V3.Api.Files.drive_files_create(Map.to_list(optional_params), opts)
        |> IO.inspect
      end

1 Ответ

0 голосов
/ 16 марта 2020

У меня есть рабочий пример.

В mix.exs:

#
  defp deps do
    [
      # [your deps]
      #
      {:google_api_drive, "~> 0.12.0"},
      {:goth, "~> 1.1.0"},
    ]
  end
#

В app.ex:

#
# token = [your-valid-oauth-token]
# connection = GoogleApi.Drive.V3.Connection.new(token)
#
# # example:
# create_folder(connection,"foo")
#
# create_folder(connection,"bar", parent_id)   # parent_id = parent folder's id

    def create_folder(connection, name, parent_folder_id \\ nil) do
        parent_folder_id_list = case parent_folder_id do
            nil -> nil
            _ -> [parent_folder_id]
        end
        file_meta = %GoogleApi.Drive.V3.Model.File{name: name, parents: parent_folder_id_list, mimeType: "application/vnd.google-apps.folder"}
        connection |> GoogleApi.Drive.V3.Api.Files.drive_files_create_iodata(nil,file_meta,"",[],[])
    end

# create_file_iodata(connection,"probe.json",%{"asd" => 1}, "application/json")

    def create_file_iodata(connection, name, iodata, mime_type, parent_folder_id \\ nil) do
        parent_folder_id_list = case parent_folder_id do
            nil -> nil
            _ -> [parent_folder_id]
        end
        file_meta = %GoogleApi.Drive.V3.Model.File{name: name, parents: parent_folder_id_list, mimeType: mime_type}
        connection |> GoogleApi.Drive.V3.Api.Files.drive_files_create_iodata("multipart",file_meta,iodata,[],[])
    end
#

Вы можете использовать drive_files_create_simple вместо drive_files_create_iodata, если вы хотите загрузить файлы.

Надеюсь, этот ответ поможет вам.

...