types.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package google_drive
  2. import (
  3. "strconv"
  4. "time"
  5. "github.com/IceWhaleTech/CasaOS/model"
  6. log "github.com/sirupsen/logrus"
  7. )
  8. type UserInfo struct {
  9. User struct {
  10. Kind string `json:"kind"`
  11. DisplayName string `json:"displayName"`
  12. PhotoLink string `json:"photoLink"`
  13. Me bool `json:"me"`
  14. PermissionID string `json:"permissionId"`
  15. EmailAddress string `json:"emailAddress"`
  16. } `json:"user"`
  17. }
  18. type TokenError struct {
  19. Error string `json:"error"`
  20. ErrorDescription string `json:"error_description"`
  21. }
  22. type Files struct {
  23. NextPageToken string `json:"nextPageToken"`
  24. Files []File `json:"files"`
  25. }
  26. type File struct {
  27. Id string `json:"id"`
  28. Name string `json:"name"`
  29. MimeType string `json:"mimeType"`
  30. ModifiedTime time.Time `json:"modifiedTime"`
  31. Size string `json:"size"`
  32. ThumbnailLink string `json:"thumbnailLink"`
  33. ShortcutDetails struct {
  34. TargetId string `json:"targetId"`
  35. TargetMimeType string `json:"targetMimeType"`
  36. } `json:"shortcutDetails"`
  37. }
  38. func fileToObj(f File) *model.ObjThumb {
  39. log.Debugf("google file: %+v", f)
  40. size, _ := strconv.ParseInt(f.Size, 10, 64)
  41. obj := &model.ObjThumb{
  42. Object: model.Object{
  43. ID: f.Id,
  44. Name: f.Name,
  45. Size: size,
  46. Modified: f.ModifiedTime,
  47. IsFolder: f.MimeType == "application/vnd.google-apps.folder",
  48. },
  49. Thumbnail: model.Thumbnail{},
  50. }
  51. if f.MimeType == "application/vnd.google-apps.shortcut" {
  52. obj.ID = f.ShortcutDetails.TargetId
  53. obj.IsFolder = f.ShortcutDetails.TargetMimeType == "application/vnd.google-apps.folder"
  54. }
  55. return obj
  56. }
  57. type Error struct {
  58. Error struct {
  59. Errors []struct {
  60. Domain string `json:"domain"`
  61. Reason string `json:"reason"`
  62. Message string `json:"message"`
  63. LocationType string `json:"location_type"`
  64. Location string `json:"location"`
  65. }
  66. Code int `json:"code"`
  67. Message string `json:"message"`
  68. } `json:"error"`
  69. }