@pnp/cli-microsoft365 6.9.0-beta.f6054b4 → 6.10.0-beta.81a81c0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.devcontainer/Dockerfile +12 -19
- package/.devcontainer/devcontainer.json +24 -17
- package/Dockerfile +3 -1
- package/dist/Auth.js +2 -8
- package/dist/AuthServer.js +2 -4
- package/dist/cli/Cli.js +2 -2
- package/dist/m365/aad/commands/app/app-add.js +258 -249
- package/dist/m365/aad/commands/app/app-get.js +65 -62
- package/dist/m365/aad/commands/app/app-remove.js +22 -23
- package/dist/m365/aad/commands/app/app-role-add.js +35 -34
- package/dist/m365/aad/commands/app/app-role-list.js +22 -23
- package/dist/m365/aad/commands/app/app-role-remove.js +76 -73
- package/dist/m365/aad/commands/app/app-set.js +103 -103
- package/dist/m365/aad/commands/approleassignment/approleassignment-add.js +16 -14
- package/dist/m365/aad/commands/approleassignment/approleassignment-list.js +43 -52
- package/dist/m365/aad/commands/approleassignment/approleassignment-remove.js +20 -16
- package/dist/m365/aad/commands/o365group/o365group-add.js +40 -37
- package/dist/m365/aad/commands/o365group/o365group-conversation-post-list.js +7 -6
- package/dist/m365/aad/commands/o365group/o365group-list.js +6 -11
- package/dist/m365/aad/commands/o365group/o365group-recyclebinitem-clear.js +7 -8
- package/dist/m365/aad/commands/o365group/o365group-recyclebinitem-restore.js +23 -24
- package/dist/m365/aad/commands/o365group/o365group-set.js +15 -20
- package/dist/m365/aad/commands/o365group/o365group-teamify.js +15 -16
- package/dist/m365/aad/commands/o365group/o365group-user-list.js +17 -10
- package/dist/m365/aad/commands/o365group/o365group-user-set.js +17 -10
- package/dist/m365/aad/commands/policy/policy-list.js +12 -13
- package/dist/m365/aad/commands/siteclassification/siteclassification-enable.js +1 -3
- package/dist/m365/aad/commands/siteclassification/siteclassification-set.js +19 -20
- package/dist/m365/aad/commands/sp/sp-add.js +22 -23
- package/dist/m365/aad/commands/sp/sp-get.js +22 -23
- package/dist/m365/aad/commands/sp/sp-list.js +78 -0
- package/dist/m365/aad/commands.js +1 -0
- package/dist/m365/app/commands/app-open.js +4 -14
- package/dist/m365/base/AzmgmtItemsListCommand.js +31 -33
- package/dist/m365/cli/commands/cli-issue.js +4 -10
- package/dist/m365/cli/commands/cli-reconsent.js +2 -8
- package/dist/m365/cli/commands/config/config-set.js +0 -1
- package/dist/m365/commands/docs.js +2 -8
- package/dist/m365/commands/login.js +20 -0
- package/dist/m365/file/commands/convert/convert-pdf.js +147 -143
- package/dist/m365/file/commands/file-add.js +87 -93
- package/dist/m365/file/commands/file-list.js +49 -55
- package/dist/m365/flow/commands/flow-list.js +30 -12
- package/dist/m365/flow/commands/flow-remove.js +2 -3
- package/dist/m365/flow/commands/run/run-resubmit.js +11 -10
- package/dist/m365/onedrive/commands/onedrive-list.js +21 -32
- package/dist/m365/outlook/commands/message/message-list.js +18 -23
- package/dist/m365/outlook/commands/message/message-move.js +15 -20
- package/dist/m365/pa/commands/app/app-export.js +3 -4
- package/dist/m365/pa/commands/app/app-get.js +11 -9
- package/dist/m365/pa/commands/app/app-remove.js +1 -1
- package/dist/m365/pa/commands/pcf/pcf-init.js +1 -2
- package/dist/m365/pa/commands/solution/solution-init.js +1 -2
- package/dist/m365/pa/commands/solution/solution-reference-add.js +1 -2
- package/dist/m365/planner/commands/bucket/bucket-add.js +15 -13
- package/dist/m365/planner/commands/bucket/bucket-get.js +27 -28
- package/dist/m365/planner/commands/bucket/bucket-list.js +15 -13
- package/dist/m365/planner/commands/bucket/bucket-remove.js +33 -34
- package/dist/m365/planner/commands/bucket/bucket-set.js +33 -34
- package/dist/m365/planner/commands/plan/plan-add.js +49 -52
- package/dist/m365/planner/commands/plan/plan-set.js +19 -20
- package/dist/m365/planner/commands/task/task-add.js +75 -78
- package/dist/m365/planner/commands/task/task-checklistitem-add.js +11 -10
- package/dist/m365/planner/commands/task/task-checklistitem-remove.js +10 -8
- package/dist/m365/planner/commands/task/task-get.js +53 -56
- package/dist/m365/planner/commands/task/task-list.js +23 -24
- package/dist/m365/planner/commands/task/task-reference-add.js +11 -10
- package/dist/m365/planner/commands/task/task-reference-remove.js +13 -14
- package/dist/m365/planner/commands/task/task-remove.js +44 -48
- package/dist/m365/planner/commands/task/task-set.js +83 -87
- package/dist/m365/pp/commands/managementapp/managementapp-add.js +19 -20
- package/dist/m365/purview/commands/retentionevent/retentionevent-add.js +3 -8
- package/dist/m365/purview/commands/retentionevent/retentionevent-get.js +1 -6
- package/dist/m365/purview/commands/retentionevent/retentionevent-list.js +1 -6
- package/dist/m365/purview/commands/retentionevent/retentionevent-remove.js +1 -6
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-add.js +1 -6
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-get.js +1 -6
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-list.js +1 -6
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-remove.js +1 -6
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-set.js +1 -6
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-add.js +0 -5
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-get.js +0 -5
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-list.js +0 -5
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-remove.js +19 -22
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-set.js +0 -5
- package/dist/m365/spfx/commands/project/JsonRule.js +1 -1
- package/dist/m365/spfx/commands/project/project-doctor/doctor-1.17.3.js +25 -0
- package/dist/m365/spfx/commands/project/project-doctor/doctor-1.17.4.js +25 -0
- package/dist/m365/spfx/commands/project/project-doctor.js +3 -1
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002027_DEVDEP_fluentui_react.js +14 -0
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN021003_PKG_engines_node.js +1 -0
- package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.17.3.js +59 -0
- package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.17.4.js +55 -0
- package/dist/m365/spfx/commands/project/project-upgrade.js +3 -1
- package/dist/m365/spfx/commands/spfx-doctor.js +30 -0
- package/dist/m365/spo/commands/app/app-teamspackage-download.js +17 -24
- package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-set.js +154 -0
- package/dist/m365/spo/commands/apppage/apppage-set.js +1 -1
- package/dist/m365/spo/commands/commandset/commandset-set.js +11 -2
- package/dist/m365/spo/commands/contenttype/contenttype-field-set.js +65 -94
- package/dist/m365/spo/commands/customaction/customaction-clear.js +4 -12
- package/dist/m365/spo/commands/customaction/customaction-remove.js +12 -23
- package/dist/m365/spo/commands/customaction/customaction-set.js +21 -29
- package/dist/m365/spo/commands/file/file-add.js +133 -133
- package/dist/m365/spo/commands/file/file-checkout-undo.js +119 -0
- package/dist/m365/spo/commands/file/file-rename.js +11 -9
- package/dist/m365/spo/commands/file/file-retentionlabel-ensure.js +2 -2
- package/dist/m365/spo/commands/file/file-roleassignment-add.js +41 -61
- package/dist/m365/spo/commands/file/file-roleassignment-remove.js +3 -0
- package/dist/m365/spo/commands/file/file-roleinheritance-break.js +3 -0
- package/dist/m365/spo/commands/file/file-roleinheritance-reset.js +3 -0
- package/dist/m365/spo/commands/file/file-sharinginfo-get.js +23 -21
- package/dist/m365/spo/commands/file/file-version-clear.js +1 -1
- package/dist/m365/spo/commands/file/file-version-remove.js +1 -1
- package/dist/m365/spo/commands/file/file-version-restore.js +1 -1
- package/dist/m365/spo/commands/folder/folder-roleassignment-add.js +3 -3
- package/dist/m365/spo/commands/folder/folder-roleassignment-remove.js +1 -1
- package/dist/m365/spo/commands/group/group-member-add.js +17 -16
- package/dist/m365/spo/commands/group/group-set.js +20 -20
- package/dist/m365/spo/commands/homesite/homesite-remove.js +1 -1
- package/dist/m365/spo/commands/hubsite/hubsite-get.js +33 -31
- package/dist/m365/spo/commands/hubsite/hubsite-list.js +18 -29
- package/dist/m365/spo/commands/hubsite/hubsite-unregister.js +3 -0
- package/dist/m365/spo/commands/list/list-add.js +1 -1
- package/dist/m365/spo/commands/list/list-contenttype-default-set.js +1 -1
- package/dist/m365/spo/commands/list/list-roleassignment-add.js +45 -52
- package/dist/m365/spo/commands/list/list-roleassignment-remove.js +33 -38
- package/dist/m365/spo/commands/list/list-sensitivitylabel-ensure.js +137 -0
- package/dist/m365/spo/commands/list/list-view-field-add.js +12 -10
- package/dist/m365/spo/commands/list/list-view-field-remove.js +12 -10
- package/dist/m365/spo/commands/list/list-view-field-set.js +12 -10
- package/dist/m365/spo/commands/list/list-view-remove.js +3 -0
- package/dist/m365/spo/commands/listitem/listitem-roleassignment-add.js +41 -61
- package/dist/m365/spo/commands/listitem/listitem-roleassignment-remove.js +71 -74
- package/dist/m365/spo/commands/listitem/listitem-roleinheritance-break.js +36 -34
- package/dist/m365/spo/commands/listitem/listitem-roleinheritance-reset.js +32 -30
- package/dist/m365/spo/commands/navigation/navigation-node-remove.js +24 -22
- package/dist/m365/spo/commands/orgassetslibrary/orgassetslibrary-remove.js +29 -27
- package/dist/m365/spo/commands/orgnewssite/orgnewssite-remove.js +26 -24
- package/dist/m365/spo/commands/page/page-clientsidewebpart-add.js +34 -40
- package/dist/m365/spo/commands/sitedesign/sitedesign-task-remove.js +23 -21
- package/dist/m365/spo/commands/sitescript/sitescript-remove.js +24 -22
- package/dist/m365/spo/commands/spo-search.js +7 -15
- package/dist/m365/spo/commands/storageentity/storageentity-remove.js +29 -27
- package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-set.js +156 -0
- package/dist/m365/spo/commands/tenant/tenant-commandset-list.js +50 -0
- package/dist/m365/spo/commands/tenant/tenant-commandset-set.js +1 -1
- package/dist/m365/spo/commands.js +5 -0
- package/dist/m365/teams/commands/app/app-install.js +23 -21
- package/dist/m365/teams/commands/app/app-remove.js +3 -0
- package/dist/m365/teams/commands/app/app-uninstall.js +3 -0
- package/dist/m365/teams/commands/app/app-update.js +15 -16
- package/dist/m365/teams/commands/channel/channel-add.js +40 -39
- package/dist/m365/teams/commands/channel/channel-get.js +23 -25
- package/dist/m365/teams/commands/channel/channel-list.js +6 -7
- package/dist/m365/teams/commands/channel/channel-member-add.js +61 -60
- package/dist/m365/teams/commands/channel/channel-member-list.js +20 -22
- package/dist/m365/teams/commands/channel/channel-member-remove.js +43 -48
- package/dist/m365/teams/commands/channel/channel-member-set.js +36 -39
- package/dist/m365/teams/commands/channel/channel-remove.js +4 -1
- package/dist/m365/teams/commands/funsettings/funsettings-list.js +3 -0
- package/dist/m365/teams/commands/funsettings/funsettings-set.js +3 -0
- package/dist/m365/teams/commands/tab/tab-get.js +34 -37
- package/dist/m365/teams/commands/team/team-archive.js +6 -7
- package/dist/m365/teams/commands/team/team-get.js +6 -7
- package/dist/m365/teams/commands/team/team-list.js +9 -11
- package/dist/m365/teams/commands/team/team-remove.js +6 -7
- package/dist/m365/teams/commands/team/team-unarchive.js +6 -7
- package/dist/m365/teams/commands/user/user-app-list.js +13 -11
- package/dist/m365/teams/commands/user/user-list.js +7 -4
- package/dist/m365/tenant/commands/security/security-alerts-list.js +25 -26
- package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-health-list.js +13 -14
- package/dist/m365/todo/commands/list/list-remove.js +39 -36
- package/dist/m365/todo/commands/list/list-set.js +16 -14
- package/dist/m365/todo/commands/task/task-add.js +14 -14
- package/dist/m365/util/commands/accesstoken/accesstoken-get.js +10 -7
- package/dist/settingsNames.js +0 -1
- package/dist/utils/browserUtil.js +23 -0
- package/dist/utils/md.js +1 -3
- package/docs/docs/cmd/aad/app/app-add.mdx +113 -0
- package/docs/docs/cmd/aad/app/app-get.mdx +217 -0
- package/docs/docs/cmd/aad/app/app-list.mdx +21 -0
- package/docs/docs/cmd/aad/app/app-role-add.mdx +4 -0
- package/docs/docs/cmd/aad/app/app-role-list.mdx +63 -0
- package/docs/docs/cmd/aad/app/app-role-remove.mdx +4 -0
- package/docs/docs/cmd/aad/app/app-set.mdx +4 -0
- package/docs/docs/cmd/aad/approleassignment/approleassignment-add.mdx +61 -0
- package/docs/docs/cmd/aad/approleassignment/approleassignment-list.mdx +59 -0
- package/docs/docs/cmd/aad/approleassignment/approleassignment-remove.mdx +4 -0
- package/docs/docs/cmd/aad/group/group-get.mdx +24 -0
- package/docs/docs/cmd/aad/group/group-list.mdx +98 -0
- package/docs/docs/cmd/aad/groupsetting/groupsetting-add.mdx +114 -0
- package/docs/docs/cmd/aad/groupsetting/groupsetting-get.mdx +115 -0
- package/docs/docs/cmd/aad/groupsetting/groupsetting-list.mdx +115 -0
- package/docs/docs/cmd/aad/groupsetting/groupsetting-remove.mdx +4 -0
- package/docs/docs/cmd/aad/groupsetting/groupsetting-set.mdx +4 -0
- package/docs/docs/cmd/aad/groupsettingtemplate/groupsettingtemplate-get.mdx +63 -0
- package/docs/docs/cmd/aad/groupsettingtemplate/groupsettingtemplate-list.mdx +63 -0
- package/docs/docs/cmd/aad/o365group/o365group-add.mdx +122 -0
- package/docs/docs/cmd/aad/o365group/o365group-conversation-list.mdx +68 -0
- package/docs/docs/cmd/aad/o365group/o365group-conversation-post-list.mdx +77 -0
- package/docs/docs/cmd/aad/o365group/o365group-get.mdx +122 -0
- package/docs/docs/cmd/aad/o365group/o365group-list.mdx +99 -0
- package/docs/docs/cmd/aad/o365group/o365group-recyclebinitem-clear.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-recyclebinitem-list.mdx +96 -0
- package/docs/docs/cmd/aad/o365group/o365group-recyclebinitem-remove.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-recyclebinitem-restore.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-remove.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-renew.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-report-activitycounts.mdx +48 -0
- package/docs/docs/cmd/aad/o365group/o365group-report-activitydetail.mdx +60 -0
- package/docs/docs/cmd/aad/o365group/o365group-report-activityfilecounts.mdx +46 -0
- package/docs/docs/cmd/aad/o365group/o365group-report-activitygroupcounts.mdx +46 -0
- package/docs/docs/cmd/aad/o365group/o365group-report-activitystorage.mdx +46 -0
- package/docs/docs/cmd/aad/o365group/o365group-set.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-teamify.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-user-add.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-user-list.mdx +56 -0
- package/docs/docs/cmd/aad/o365group/o365group-user-remove.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-user-set.mdx +8 -4
- package/docs/docs/cmd/aad/oauth2grant/oauth2grant-add.mdx +4 -0
- package/docs/docs/cmd/aad/oauth2grant/oauth2grant-list.mdx +59 -0
- package/docs/docs/cmd/aad/oauth2grant/oauth2grant-remove.mdx +4 -0
- package/docs/docs/cmd/aad/oauth2grant/oauth2grant-set.mdx +4 -0
- package/docs/docs/cmd/aad/policy/policy-list.mdx +77 -0
- package/docs/docs/cmd/aad/siteclassification/siteclassification-disable.mdx +4 -0
- package/docs/docs/cmd/aad/siteclassification/siteclassification-enable.mdx +4 -0
- package/docs/docs/cmd/aad/siteclassification/siteclassification-get.mdx +57 -0
- package/docs/docs/cmd/aad/siteclassification/siteclassification-set.mdx +4 -0
- package/docs/docs/cmd/aad/sp/sp-add.mdx +136 -0
- package/docs/docs/cmd/aad/sp/sp-get.mdx +166 -0
- package/docs/docs/cmd/aad/sp/sp-list.mdx +162 -0
- package/docs/docs/cmd/aad/user/user-get.mdx +75 -0
- package/docs/docs/cmd/aad/user/user-guest-add.mdx +23 -0
- package/docs/docs/cmd/aad/user/user-hibp.mdx +82 -0
- package/docs/docs/cmd/aad/user/user-license-add.mdx +2 -2
- package/docs/docs/cmd/aad/user/user-license-remove.mdx +2 -2
- package/docs/docs/cmd/aad/user/user-list.mdx +52 -0
- package/docs/docs/cmd/aad/user/user-password-validate.mdx +67 -0
- package/docs/docs/cmd/aad/user/user-signin-list.mdx +131 -0
- package/docs/docs/cmd/flow/flow-list.mdx +15 -0
- package/docs/docs/cmd/login.mdx +39 -0
- package/docs/docs/cmd/purview/retentionevent/retentionevent-add.mdx +0 -6
- package/docs/docs/cmd/purview/retentionevent/retentionevent-get.mdx +0 -6
- package/docs/docs/cmd/purview/retentionevent/retentionevent-list.mdx +0 -7
- package/docs/docs/cmd/purview/retentionevent/retentionevent-remove.mdx +0 -6
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-add.mdx +0 -6
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-get.mdx +0 -6
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-list.mdx +0 -6
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-remove.mdx +0 -6
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-set.mdx +0 -6
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-add.mdx +0 -6
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-get.mdx +0 -6
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-list.mdx +0 -6
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-remove.mdx +0 -6
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-set.mdx +0 -6
- package/docs/docs/cmd/setup.mdx +2 -0
- package/docs/docs/cmd/spfx/project/project-upgrade.mdx +1 -1
- package/docs/docs/cmd/spo/applicationcustomizer/applicationcustomizer-set.mdx +72 -0
- package/docs/docs/cmd/spo/commandset/commandset-set.mdx +12 -3
- package/docs/docs/cmd/spo/file/file-checkout-undo.mdx +55 -0
- package/docs/docs/cmd/spo/file/file-retentionlabel-ensure.mdx +1 -1
- package/docs/docs/cmd/spo/folder/folder-retentionlabel-ensure.mdx +1 -1
- package/docs/docs/cmd/spo/list/list-sensitivitylabel-ensure.mdx +73 -0
- package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-set.mdx +81 -0
- package/docs/docs/cmd/spo/tenant/tenant-commandset-add.mdx +1 -1
- package/docs/docs/cmd/spo/tenant/tenant-commandset-get.mdx +1 -1
- package/docs/docs/cmd/spo/tenant/tenant-commandset-list.mdx +114 -0
- package/docs/docs/cmd/spo/tenant/tenant-commandset-set.mdx +1 -1
- package/docs/docs/cmd/spo/tenant/tenant-settings-set.mdx +6 -0
- package/docs/docs/cmd/status.mdx +6 -3
- package/docs/docs/cmd/util/accesstoken/accesstoken-get.mdx +12 -2
- package/npm-shrinkwrap.json +301 -274
- package/package.json +18 -17
- package/dist/m365/aad/commands/approleassignment/AppRoleAssignment.js +0 -3
- package/dist/m365/aad/commands/approleassignment/ServicePrincipal.js +0 -3
- package/dist/m365/aad/commands/groupsetting/GroupSetting.js +0 -3
- package/dist/m365/aad/commands/groupsettingtemplate/GroupSettingTemplate.js +0 -3
- package/dist/m365/aad/commands/siteclassification/DirectorySetting.js +0 -10
- package/dist/m365/aad/commands/siteclassification/DirectorySettingTemplatesRsp.js +0 -3
- package/dist/m365/aad/commands/siteclassification/DirectorySettingValue.js +0 -3
- package/dist/m365/outlook/Message.js +0 -3
- package/dist/m365/spo/commands/site/SitePermission.js +0 -3
- package/dist/m365/teams/Channel.js +0 -3
- package/dist/m365/teams/ConversationMember.js +0 -3
- package/dist/m365/teams/Message.js +0 -3
- package/dist/m365/teams/Reply.js +0 -3
- package/dist/m365/teams/Tab.js +0 -3
- package/dist/m365/teams/Team.js +0 -3
- package/dist/m365/teams/TeamsApp.js +0 -3
- package/dist/m365/teams/TeamsAppInstallation.js +0 -3
- package/dist/m365/teams/TeamsTabConfiguration.js +0 -3
- package/dist/m365/teams/commands/Meeting.js +0 -3
|
@@ -119,20 +119,22 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
119
119
|
* @returns Web URL of the file to upload
|
|
120
120
|
*/
|
|
121
121
|
getSourceFileUrl(logger, args, isAppOnlyAccessToken) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
122
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
123
|
+
if (args.options.sourceFile.toLowerCase().startsWith('https://')) {
|
|
124
|
+
return args.options.sourceFile;
|
|
125
|
+
}
|
|
126
|
+
if (this.verbose) {
|
|
127
|
+
logger.logToStderr('Uploading local file temporarily for conversion...');
|
|
128
|
+
}
|
|
129
|
+
const driveUrl = `${this.resource}/v1.0/${isAppOnlyAccessToken ? 'drive/root' : 'me/drive/root'}`;
|
|
130
|
+
// we need the original file extension because otherwise Graph won't be able
|
|
131
|
+
// to convert the file to PDF
|
|
132
|
+
this.sourceFileGraphUrl = `${driveUrl}:/${(0, uuid_1.v4)()}${path.extname(args.options.sourceFile)}`;
|
|
133
|
+
if (this.debug) {
|
|
134
|
+
logger.logToStderr(`Source is a local file. Uploading to ${this.sourceFileGraphUrl}...`);
|
|
135
|
+
}
|
|
136
|
+
return yield this.uploadFile(args.options.sourceFile, this.sourceFileGraphUrl);
|
|
137
|
+
});
|
|
136
138
|
}
|
|
137
139
|
/**
|
|
138
140
|
* Uploads the specified local file to a document library using Microsoft Graph
|
|
@@ -141,18 +143,17 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
141
143
|
* @returns Absolute URL of the uploaded file
|
|
142
144
|
*/
|
|
143
145
|
uploadFile(localFilePath, targetGraphFileUrl) {
|
|
144
|
-
|
|
145
|
-
url: `${targetGraphFileUrl}:/createUploadSession`,
|
|
146
|
-
headers: {
|
|
147
|
-
accept: 'application/json;odata.metadata=none'
|
|
148
|
-
},
|
|
149
|
-
responseType: 'json'
|
|
150
|
-
};
|
|
151
|
-
return request_1.default
|
|
152
|
-
.post(requestOptions)
|
|
153
|
-
.then((res) => {
|
|
154
|
-
const fileContents = fs.readFileSync(localFilePath);
|
|
146
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
155
147
|
const requestOptions = {
|
|
148
|
+
url: `${targetGraphFileUrl}:/createUploadSession`,
|
|
149
|
+
headers: {
|
|
150
|
+
accept: 'application/json;odata.metadata=none'
|
|
151
|
+
},
|
|
152
|
+
responseType: 'json'
|
|
153
|
+
};
|
|
154
|
+
const res = yield request_1.default.post(requestOptions);
|
|
155
|
+
const fileContents = fs.readFileSync(localFilePath);
|
|
156
|
+
const requestOptionsPut = {
|
|
156
157
|
url: res.uploadUrl,
|
|
157
158
|
headers: {
|
|
158
159
|
'x-anonymous': true,
|
|
@@ -163,9 +164,9 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
163
164
|
data: fileContents,
|
|
164
165
|
responseType: 'json'
|
|
165
166
|
};
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
167
|
+
const resPut = yield request_1.default.put(requestOptionsPut);
|
|
168
|
+
return resPut.webUrl;
|
|
169
|
+
});
|
|
169
170
|
}
|
|
170
171
|
/**
|
|
171
172
|
* Gets Graph's drive item URL for the specified file. If the user specified
|
|
@@ -186,21 +187,20 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
186
187
|
* @returns Graph's drive item URL for the specified file
|
|
187
188
|
*/
|
|
188
189
|
getGraphFileUrl(logger, fileWebUrl, fileGraphUrl) {
|
|
189
|
-
|
|
190
|
-
logger.logToStderr(`Resolving Graph drive item URL for ${fileWebUrl}`);
|
|
191
|
-
}
|
|
192
|
-
if (fileGraphUrl) {
|
|
190
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
193
191
|
if (this.debug) {
|
|
194
|
-
logger.logToStderr(`
|
|
192
|
+
logger.logToStderr(`Resolving Graph drive item URL for ${fileWebUrl}`);
|
|
195
193
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
194
|
+
if (fileGraphUrl) {
|
|
195
|
+
if (this.debug) {
|
|
196
|
+
logger.logToStderr(`Returning previously resolved Graph drive item URL ${fileGraphUrl}`);
|
|
197
|
+
}
|
|
198
|
+
return fileGraphUrl;
|
|
199
|
+
}
|
|
200
|
+
const _url = url.parse(fileWebUrl);
|
|
201
|
+
let siteId = '';
|
|
202
|
+
let driveRelativeFileUrl = '';
|
|
203
|
+
const siteInfo = yield this.getGraphSiteInfoFromFullUrl(_url.host, _url.path);
|
|
204
204
|
siteId = siteInfo.id;
|
|
205
205
|
let siteRelativeFileUrl = _url.path.replace(siteInfo.serverRelativeUrl, '');
|
|
206
206
|
// normalize site-relative URLs for root site collections and root sites
|
|
@@ -210,9 +210,7 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
210
210
|
const siteRelativeFileUrlChunks = siteRelativeFileUrl.split('/');
|
|
211
211
|
driveRelativeFileUrl = `/${siteRelativeFileUrlChunks.slice(2).join('/')}`;
|
|
212
212
|
// chunk 0 is empty because the URL starts with /
|
|
213
|
-
|
|
214
|
-
})
|
|
215
|
-
.then(driveId => {
|
|
213
|
+
const driveId = yield this.getDriveId(logger, siteId, siteRelativeFileUrlChunks[1]);
|
|
216
214
|
const graphUrl = `${this.resource}/v1.0/sites/${siteId}/drives/${driveId}/root:${driveRelativeFileUrl}`;
|
|
217
215
|
if (this.debug) {
|
|
218
216
|
logger.logToStderr(`Resolved URL ${graphUrl}`);
|
|
@@ -228,10 +226,10 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
228
226
|
* @returns ID and server-relative URL of the site denoted by urlPath
|
|
229
227
|
*/
|
|
230
228
|
getGraphSiteInfoFromFullUrl(hostName, urlPath) {
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
this.getGraphSiteInfo(hostName, urlChunks, 0, siteId
|
|
229
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
230
|
+
const siteId = '';
|
|
231
|
+
const urlChunks = urlPath.split('/');
|
|
232
|
+
return yield this.getGraphSiteInfo(hostName, urlChunks, 0, siteId);
|
|
235
233
|
});
|
|
236
234
|
}
|
|
237
235
|
/**
|
|
@@ -248,40 +246,45 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
248
246
|
* @param reject Callback method to call when resolving site info failed
|
|
249
247
|
* @returns Graph site ID and server-relative URL of the site specified through chunks
|
|
250
248
|
*/
|
|
251
|
-
getGraphSiteInfo(hostName, urlChunks, currentChunk, lastSiteId
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
currentPath.endsWith('/
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
currentPath
|
|
260
|
-
|
|
261
|
-
const requestOptions = {
|
|
262
|
-
url: `${this.resource}/v1.0/sites/${hostName}:${currentPath}?$select=id`,
|
|
263
|
-
headers: {
|
|
264
|
-
accept: 'application/json;odata.metadata=none'
|
|
265
|
-
},
|
|
266
|
-
responseType: 'json'
|
|
267
|
-
};
|
|
268
|
-
request_1.default
|
|
269
|
-
.get(requestOptions)
|
|
270
|
-
.then((res) => {
|
|
271
|
-
this.getGraphSiteInfo(hostName, urlChunks, ++currentChunk, res.id, resolve, reject);
|
|
272
|
-
}, err => {
|
|
273
|
-
if (lastSiteId) {
|
|
274
|
-
let serverRelativeUrl = `${urlChunks.slice(0, currentChunk).join('/')}`;
|
|
275
|
-
if (!serverRelativeUrl.startsWith('/')) {
|
|
276
|
-
serverRelativeUrl = '/' + serverRelativeUrl;
|
|
277
|
-
}
|
|
278
|
-
resolve({
|
|
279
|
-
id: lastSiteId,
|
|
280
|
-
serverRelativeUrl: serverRelativeUrl
|
|
281
|
-
});
|
|
249
|
+
getGraphSiteInfo(hostName, urlChunks, currentChunk, lastSiteId) {
|
|
250
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
251
|
+
let currentPath = urlChunks.slice(0, currentChunk + 1).join('/');
|
|
252
|
+
if (currentPath.endsWith('/sites') ||
|
|
253
|
+
currentPath.endsWith('/teams') ||
|
|
254
|
+
currentPath.endsWith('/personal')) {
|
|
255
|
+
return yield this.getGraphSiteInfo(hostName, urlChunks, ++currentChunk, '');
|
|
256
|
+
}
|
|
257
|
+
if (!currentPath.startsWith('/')) {
|
|
258
|
+
currentPath = '/' + currentPath;
|
|
282
259
|
}
|
|
283
|
-
|
|
284
|
-
|
|
260
|
+
const requestOptions = {
|
|
261
|
+
url: `${this.resource}/v1.0/sites/${hostName}:${currentPath}?$select=id`,
|
|
262
|
+
headers: {
|
|
263
|
+
accept: 'application/json;odata.metadata=none'
|
|
264
|
+
},
|
|
265
|
+
responseType: 'json'
|
|
266
|
+
};
|
|
267
|
+
const getResult = (id, serverRelativeUrl) => {
|
|
268
|
+
return {
|
|
269
|
+
id,
|
|
270
|
+
serverRelativeUrl
|
|
271
|
+
};
|
|
272
|
+
};
|
|
273
|
+
try {
|
|
274
|
+
const res = yield request_1.default.get(requestOptions);
|
|
275
|
+
return yield this.getGraphSiteInfo(hostName, urlChunks, ++currentChunk, res.id);
|
|
276
|
+
}
|
|
277
|
+
catch (err) {
|
|
278
|
+
if (lastSiteId) {
|
|
279
|
+
let serverRelativeUrl = `${urlChunks.slice(0, currentChunk).join('/')}`;
|
|
280
|
+
if (!serverRelativeUrl.startsWith('/')) {
|
|
281
|
+
serverRelativeUrl = '/' + serverRelativeUrl;
|
|
282
|
+
}
|
|
283
|
+
return getResult(lastSiteId, serverRelativeUrl);
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
throw err;
|
|
287
|
+
}
|
|
285
288
|
}
|
|
286
289
|
});
|
|
287
290
|
}
|
|
@@ -292,24 +295,23 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
292
295
|
* @returns Graph drive ID of the specified document library
|
|
293
296
|
*/
|
|
294
297
|
getDriveId(logger, graphSiteId, siteRelativeListUrl) {
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
.get(requestOptions)
|
|
304
|
-
.then((res) => {
|
|
298
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
299
|
+
const requestOptions = {
|
|
300
|
+
url: `${this.resource}/v1.0/sites/${graphSiteId}/drives?$select=webUrl,id`,
|
|
301
|
+
headers: {
|
|
302
|
+
accept: 'application/json;odata.metadata=none'
|
|
303
|
+
},
|
|
304
|
+
responseType: 'json'
|
|
305
|
+
};
|
|
306
|
+
const res = yield request_1.default.get(requestOptions);
|
|
305
307
|
if (this.debug) {
|
|
306
308
|
logger.logToStderr(`Searching for drive with a URL ending with /${siteRelativeListUrl}...`);
|
|
307
309
|
}
|
|
308
310
|
const drive = res.value.find(d => d.webUrl.endsWith(`/${siteRelativeListUrl}`));
|
|
309
311
|
if (!drive) {
|
|
310
|
-
|
|
312
|
+
throw 'Drive not found';
|
|
311
313
|
}
|
|
312
|
-
return
|
|
314
|
+
return drive.id;
|
|
313
315
|
});
|
|
314
316
|
}
|
|
315
317
|
/**
|
|
@@ -320,17 +322,19 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
320
322
|
* the file converted to PDF. The URL must be called anonymously
|
|
321
323
|
*/
|
|
322
324
|
convertFile(logger, graphFileUrl) {
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
325
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
326
|
+
if (this.verbose) {
|
|
327
|
+
logger.logToStderr('Converting file...');
|
|
328
|
+
}
|
|
329
|
+
const requestOptions = {
|
|
330
|
+
url: `${graphFileUrl}:/content?format=pdf`,
|
|
331
|
+
headers: {
|
|
332
|
+
accept: 'application/json;odata.metadata=none'
|
|
333
|
+
},
|
|
334
|
+
responseType: 'stream'
|
|
335
|
+
};
|
|
336
|
+
return yield request_1.default.get(requestOptions);
|
|
337
|
+
});
|
|
334
338
|
}
|
|
335
339
|
/**
|
|
336
340
|
* Writes the contents of the specified file stream to a local file
|
|
@@ -339,18 +343,19 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
339
343
|
* @param localFilePath Local file path where to store the file
|
|
340
344
|
*/
|
|
341
345
|
writeFileToDisk(logger, fileResponse, localFilePath) {
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
346
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
347
|
+
if (this.verbose) {
|
|
348
|
+
logger.logToStderr(`Writing converted PDF file to ${localFilePath}...`);
|
|
349
|
+
}
|
|
350
|
+
yield new Promise((resolve, reject) => {
|
|
351
|
+
const writer = fs.createWriteStream(localFilePath);
|
|
352
|
+
fileResponse.data.pipe(writer);
|
|
353
|
+
writer.on('error', err => {
|
|
354
|
+
reject(err);
|
|
355
|
+
});
|
|
356
|
+
writer.on('close', () => {
|
|
357
|
+
resolve();
|
|
358
|
+
});
|
|
354
359
|
});
|
|
355
360
|
});
|
|
356
361
|
}
|
|
@@ -364,21 +369,21 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
364
369
|
* @param targetFileUrl Web URL of the file to upload
|
|
365
370
|
*/
|
|
366
371
|
uploadConvertedFileIfNecessary(logger, targetIsLocalFile, localFilePath, targetFileUrl) {
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
if (
|
|
371
|
-
|
|
372
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
373
|
+
// if the target was a local path, we're done.
|
|
374
|
+
// Otherwise, upload the file to the specified URL
|
|
375
|
+
if (targetIsLocalFile) {
|
|
376
|
+
if (this.debug) {
|
|
377
|
+
logger.logToStderr('Specified target is a local file. Not uploading.');
|
|
378
|
+
}
|
|
379
|
+
return;
|
|
372
380
|
}
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
.getGraphFileUrl(logger, targetFileUrl, undefined)
|
|
380
|
-
.then(targetGraphFileUrl => this.uploadFile(localFilePath, targetGraphFileUrl))
|
|
381
|
-
.then(_ => Promise.resolve());
|
|
381
|
+
if (this.verbose) {
|
|
382
|
+
logger.logToStderr(`Uploading converted PDF file to ${targetFileUrl}...`);
|
|
383
|
+
}
|
|
384
|
+
const targetGraphFileUrl = yield this.getGraphFileUrl(logger, targetFileUrl, undefined);
|
|
385
|
+
yield this.uploadFile(localFilePath, targetGraphFileUrl);
|
|
386
|
+
});
|
|
382
387
|
}
|
|
383
388
|
/**
|
|
384
389
|
* If the user specified local file to be converted to PDF, removes the file
|
|
@@ -389,20 +394,19 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
389
394
|
* @param sourceFileUrl Web URL of the temporary source file to delete
|
|
390
395
|
*/
|
|
391
396
|
deleteRemoteSourceFileIfNecessary(logger, sourceIsLocalFile, sourceFileUrl) {
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
if (
|
|
396
|
-
|
|
397
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
398
|
+
// if the source was a remote file, we're done,
|
|
399
|
+
// otherwise delete the temporary uploaded file
|
|
400
|
+
if (!sourceIsLocalFile) {
|
|
401
|
+
if (this.debug) {
|
|
402
|
+
logger.logToStderr('Source file was URL. Not removing.');
|
|
403
|
+
}
|
|
404
|
+
return;
|
|
397
405
|
}
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
}
|
|
403
|
-
return this
|
|
404
|
-
.getGraphFileUrl(logger, sourceFileUrl, this.sourceFileGraphUrl)
|
|
405
|
-
.then((graphFileUrl) => {
|
|
406
|
+
if (this.verbose) {
|
|
407
|
+
logger.logToStderr(`Deleting the temporary file at ${sourceFileUrl}...`);
|
|
408
|
+
}
|
|
409
|
+
const graphFileUrl = yield this.getGraphFileUrl(logger, sourceFileUrl, this.sourceFileGraphUrl);
|
|
406
410
|
const requestOptions = {
|
|
407
411
|
url: graphFileUrl,
|
|
408
412
|
headers: {
|
|
@@ -58,25 +58,23 @@ class FileAddCommand extends GraphCommand_1.default {
|
|
|
58
58
|
* @returns Absolute URL of the uploaded file
|
|
59
59
|
*/
|
|
60
60
|
uploadFile(localFilePath, targetGraphFileUrl) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
.put(requestOptions)
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
.then((res) => {
|
|
79
|
-
const requestOptions = {
|
|
61
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
const fileContents = fs.readFileSync(localFilePath);
|
|
63
|
+
const isEmptyFile = fileContents.length === 0;
|
|
64
|
+
const requestOptions = {
|
|
65
|
+
url: isEmptyFile ? `${targetGraphFileUrl}:/content` : `${targetGraphFileUrl}:/createUploadSession`,
|
|
66
|
+
headers: {
|
|
67
|
+
accept: 'application/json;odata.metadata=none'
|
|
68
|
+
},
|
|
69
|
+
responseType: 'json'
|
|
70
|
+
};
|
|
71
|
+
if (isEmptyFile) {
|
|
72
|
+
const res = yield request_1.default.put(requestOptions);
|
|
73
|
+
return res.webUrl;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
const res = yield request_1.default.post(requestOptions);
|
|
77
|
+
const requestOptionsPut = {
|
|
80
78
|
url: res.uploadUrl,
|
|
81
79
|
headers: {
|
|
82
80
|
'x-anonymous': true,
|
|
@@ -87,10 +85,10 @@ class FileAddCommand extends GraphCommand_1.default {
|
|
|
87
85
|
data: fileContents,
|
|
88
86
|
responseType: 'json'
|
|
89
87
|
};
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
88
|
+
const resPut = yield request_1.default.put(requestOptionsPut);
|
|
89
|
+
return resPut.webUrl;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
94
92
|
}
|
|
95
93
|
/**
|
|
96
94
|
* Gets Graph's drive item URL for the specified file. If the user specified
|
|
@@ -111,17 +109,16 @@ class FileAddCommand extends GraphCommand_1.default {
|
|
|
111
109
|
* @returns Graph's drive item URL for the specified file
|
|
112
110
|
*/
|
|
113
111
|
getGraphFileUrl(logger, fileWebUrl, siteUrl) {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
.getGraphSiteInfoFromFullUrl(_siteUrl.host, _siteUrl.path, isSiteUrl)
|
|
124
|
-
.then(siteInfo => {
|
|
112
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
113
|
+
if (this.debug) {
|
|
114
|
+
logger.logToStderr(`Resolving Graph drive item URL for ${fileWebUrl}`);
|
|
115
|
+
}
|
|
116
|
+
const _fileWebUrl = url.parse(fileWebUrl);
|
|
117
|
+
const _siteUrl = url.parse(siteUrl || fileWebUrl);
|
|
118
|
+
const isSiteUrl = typeof siteUrl !== 'undefined';
|
|
119
|
+
let siteId = '';
|
|
120
|
+
let driveRelativeFileUrl = '';
|
|
121
|
+
const siteInfo = yield this.getGraphSiteInfoFromFullUrl(_siteUrl.host, _siteUrl.path, isSiteUrl);
|
|
125
122
|
siteId = siteInfo.id;
|
|
126
123
|
let siteRelativeFileUrl = _fileWebUrl.path.replace(siteInfo.serverRelativeUrl, '');
|
|
127
124
|
// normalize site-relative URLs for root site collections and root sites
|
|
@@ -131,9 +128,7 @@ class FileAddCommand extends GraphCommand_1.default {
|
|
|
131
128
|
const siteRelativeFileUrlChunks = siteRelativeFileUrl.split('/');
|
|
132
129
|
driveRelativeFileUrl = `/${siteRelativeFileUrlChunks.slice(2).join('/')}`;
|
|
133
130
|
// chunk 0 is empty because the URL starts with /
|
|
134
|
-
|
|
135
|
-
})
|
|
136
|
-
.then(driveId => {
|
|
131
|
+
const driveId = yield this.getDriveId(logger, siteId, siteRelativeFileUrlChunks[1]);
|
|
137
132
|
const graphUrl = `${this.resource}/v1.0/sites/${siteId}/drives/${driveId}/root:${driveRelativeFileUrl}`;
|
|
138
133
|
if (this.debug) {
|
|
139
134
|
logger.logToStderr(`Resolved URL ${graphUrl}`);
|
|
@@ -150,10 +145,10 @@ class FileAddCommand extends GraphCommand_1.default {
|
|
|
150
145
|
* @returns ID and server-relative URL of the site denoted by urlPath
|
|
151
146
|
*/
|
|
152
147
|
getGraphSiteInfoFromFullUrl(hostName, urlPath, isSiteUrl) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
this.getGraphSiteInfo(hostName, urlChunks, isSiteUrl ? urlChunks.length - 1 : 0, siteId
|
|
148
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
149
|
+
const siteId = '';
|
|
150
|
+
const urlChunks = urlPath.split('/');
|
|
151
|
+
return yield this.getGraphSiteInfo(hostName, urlChunks, isSiteUrl ? urlChunks.length - 1 : 0, siteId);
|
|
157
152
|
});
|
|
158
153
|
}
|
|
159
154
|
/**
|
|
@@ -166,52 +161,52 @@ class FileAddCommand extends GraphCommand_1.default {
|
|
|
166
161
|
* @param urlChunks Array of chunks from server-relative URL, eg. ['sites', 'site', 'subsite', 'docs', 'file1.aspx']
|
|
167
162
|
* @param currentChunk Current chunk that's being tested, eg. sites
|
|
168
163
|
* @param lastSiteId Last correctly resolved Graph site ID
|
|
169
|
-
* @param resolve Callback method to call when resolving site info succeeded
|
|
170
|
-
* @param reject Callback method to call when resolving site info failed
|
|
171
164
|
* @returns Graph site ID and server-relative URL of the site specified through chunks
|
|
172
165
|
*/
|
|
173
|
-
getGraphSiteInfo(hostName, urlChunks, currentChunk, lastSiteId
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
currentPath.endsWith('/
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
if (!currentPath.startsWith('/')) {
|
|
181
|
-
currentPath = '/' + currentPath;
|
|
182
|
-
}
|
|
183
|
-
const requestOptions = {
|
|
184
|
-
url: `${this.resource}/v1.0/sites/${hostName}:${currentPath}?$select=id`,
|
|
185
|
-
headers: {
|
|
186
|
-
accept: 'application/json;odata.metadata=none'
|
|
187
|
-
},
|
|
188
|
-
responseType: 'json'
|
|
189
|
-
};
|
|
190
|
-
const getResult = (id, serverRelativeUrl) => {
|
|
191
|
-
return {
|
|
192
|
-
id,
|
|
193
|
-
serverRelativeUrl
|
|
194
|
-
};
|
|
195
|
-
};
|
|
196
|
-
request_1.default
|
|
197
|
-
.get(requestOptions)
|
|
198
|
-
.then((res) => {
|
|
199
|
-
if (currentChunk === urlChunks.length - 1) {
|
|
200
|
-
resolve(getResult(res.id, currentPath));
|
|
166
|
+
getGraphSiteInfo(hostName, urlChunks, currentChunk, lastSiteId) {
|
|
167
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
168
|
+
let currentPath = urlChunks.slice(0, currentChunk + 1).join('/');
|
|
169
|
+
if (currentPath.endsWith('/sites') ||
|
|
170
|
+
currentPath.endsWith('/teams') ||
|
|
171
|
+
currentPath.endsWith('/personal')) {
|
|
172
|
+
return yield this.getGraphSiteInfo(hostName, urlChunks, ++currentChunk, '');
|
|
201
173
|
}
|
|
202
|
-
|
|
203
|
-
|
|
174
|
+
if (!currentPath.startsWith('/')) {
|
|
175
|
+
currentPath = '/' + currentPath;
|
|
204
176
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
177
|
+
const requestOptions = {
|
|
178
|
+
url: `${this.resource}/v1.0/sites/${hostName}:${currentPath}?$select=id`,
|
|
179
|
+
headers: {
|
|
180
|
+
accept: 'application/json;odata.metadata=none'
|
|
181
|
+
},
|
|
182
|
+
responseType: 'json'
|
|
183
|
+
};
|
|
184
|
+
const getResult = (id, serverRelativeUrl) => {
|
|
185
|
+
return {
|
|
186
|
+
id,
|
|
187
|
+
serverRelativeUrl
|
|
188
|
+
};
|
|
189
|
+
};
|
|
190
|
+
try {
|
|
191
|
+
const res = yield request_1.default.get(requestOptions);
|
|
192
|
+
if (currentChunk === urlChunks.length - 1) {
|
|
193
|
+
return getResult(res.id, currentPath);
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
return yield this.getGraphSiteInfo(hostName, urlChunks, ++currentChunk, res.id);
|
|
210
197
|
}
|
|
211
|
-
resolve(getResult(lastSiteId, serverRelativeUrl));
|
|
212
198
|
}
|
|
213
|
-
|
|
214
|
-
|
|
199
|
+
catch (err) {
|
|
200
|
+
if (lastSiteId) {
|
|
201
|
+
let serverRelativeUrl = `${urlChunks.slice(0, currentChunk).join('/')}`;
|
|
202
|
+
if (!serverRelativeUrl.startsWith('/')) {
|
|
203
|
+
serverRelativeUrl = '/' + serverRelativeUrl;
|
|
204
|
+
}
|
|
205
|
+
return getResult(lastSiteId, serverRelativeUrl);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
throw err;
|
|
209
|
+
}
|
|
215
210
|
}
|
|
216
211
|
});
|
|
217
212
|
}
|
|
@@ -222,24 +217,23 @@ class FileAddCommand extends GraphCommand_1.default {
|
|
|
222
217
|
* @returns Graph drive ID of the specified document library
|
|
223
218
|
*/
|
|
224
219
|
getDriveId(logger, graphSiteId, siteRelativeListUrl) {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
.get(requestOptions)
|
|
234
|
-
.then((res) => {
|
|
220
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
221
|
+
const requestOptions = {
|
|
222
|
+
url: `${this.resource}/v1.0/sites/${graphSiteId}/drives?$select=webUrl,id`,
|
|
223
|
+
headers: {
|
|
224
|
+
accept: 'application/json;odata.metadata=none'
|
|
225
|
+
},
|
|
226
|
+
responseType: 'json'
|
|
227
|
+
};
|
|
228
|
+
const res = yield request_1.default.get(requestOptions);
|
|
235
229
|
if (this.debug) {
|
|
236
230
|
logger.logToStderr(`Searching for drive with a URL ending with /${siteRelativeListUrl}...`);
|
|
237
231
|
}
|
|
238
232
|
const drive = res.value.find(d => d.webUrl.endsWith(`/${siteRelativeListUrl}`));
|
|
239
233
|
if (!drive) {
|
|
240
|
-
|
|
234
|
+
throw 'Drive not found';
|
|
241
235
|
}
|
|
242
|
-
return
|
|
236
|
+
return drive.id;
|
|
243
237
|
});
|
|
244
238
|
}
|
|
245
239
|
}
|