{"id":4654,"date":"2016-07-07T08:22:33","date_gmt":"2016-07-07T08:22:33","guid":{"rendered":"http:\/\/evolphin.com\/help\/?p=4654"},"modified":"2020-05-18T09:07:50","modified_gmt":"2020-05-18T13:07:50","slug":"perl-sdk-module-zoomserver","status":"publish","type":"post","link":"https:\/\/evolphin.com\/help\/deployment\/perl-sdk\/perl-sdk-module-zoomserver\/","title":{"rendered":"Perl SDK Module: ZoomServer"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Name<\/h3>\n\n\n\n<p>ZoomServer &#8211;&nbsp;Construct common Zoom operations without the low-level REST\/Java\/CLI syntax<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Dependencies<\/h3>\n\n\n\n<p>Ensure the <a href=\"\/docs\/v5\/api-5-x\/perl-sdk\/perl-sdk\/\">Perl SDK<\/a> is setup.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Synopsis<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">use ZoomServer;\nmy $cfg = $ZoomServer::cfg ;\nmy $logger = $ZoomServer::logger;\nmy ($files_aref, $authors_aref, $lastMod_aref) = ZoomServer::listPath(1,$d);<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Methods<\/h3>\n\n\n\n<h2 class=\"wp-block-heading\">zoomImport<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage: zoomImport($srcDir, $bulkMetaFile)<\/h4>\n\n\n\n<p>Will import everything under the srcDir including subdirs while applying bulk metadata CSV file&nbsp;if supplied. <br>Will skip files already imported.<\/p>\n\n\n\n<div class=\"note\">Run this with a superadmin account to allow files to be imported at root \/ folder without a project or destination sub-folder.<\/div>\n\n\n\n<pre class=\"wp-block-preformatted\">zoomImport(\"c:\/Videos\/To Import\/\", \"m:\/Docs\/meta.properties\");\nzoomImport(\"c:\/Videos\/To Import\/\");<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">SendEmail<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage: SendEmail($to, $cc, $subject, $body)<\/h4>\n\n\n\n<p>Utlity function that sends HTML email supports SSL\/SMTP Authentication. The configuration is specified in the <span class=\"command\">config.ini\/[SMTP]<\/span> section.<br>cc: CSV list of emails<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> ZoomServer::SendEmail($email, $cc, $subject, $report);<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">uploadToFTP<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">uploadToFTP($ftpServer,$ftpUsername,$ftpPassword,$inFile,$ftpServerPath)<\/h4>\n\n\n\n<p>Will upload the specified file to the specified FTP server in the specified path, authenticating&nbsp;with the specified username and password credentials.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">getWorkflowDetails<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage: getWorkflowDetails($wfid)<\/h4>\n\n\n\n<p>Get Workflow task details along with their task id, task name, status, owners<\/p>\n\n\n\n<p>Input argument: workflow id<br>Output: taskId2Details hashmap<\/p>\n\n\n\n<p>For instance the following output hashmap shows the workflow task details:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&nbsp;2 =&gt; { 'name' =&gt; 'Review Retouched Files'; 'type' =&gt; 'Approval Work'; 'status' =&gt; 'Not Started'; 'owners' = ('joe', 'mike'..) }\n&nbsp;1 =&gt; { 'name' =&gt; 'Retouch'; 'type' =&gt; 'Assigned Work'; 'status' =&gt; 'Review Pending'; 'owners' = ('kate') }<\/pre>\n\n\n\n<p>Wrapper around the zm mytasks command:<\/p>\n\n\n\n<div class=\"example\"><span class=\"command\">zm mytasks -w <\/span><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">getTaskFiles<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage: getTaskFiles($wfid, $taskid)<\/h4>\n\n\n\n<p>Get&nbsp;a&nbsp;workflow job&#8217;s associated&nbsp;task&nbsp;file&nbsp;paths.<\/p>\n\n\n\n<p>Input: workflow id, task id<br>Output: Returns an Array reference to a list of Zoom Paths<\/p>\n\n\n\n<p>Wrapper around the zm taskfiles&nbsp;command:<\/p>\n\n\n\n<div class=\"example\">&nbsp;zm taskfiles -w 141 -t 147<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">getPathAndRRN<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage:&nbsp;my($path,$rrn) = getPathAndRRN($assetId);<\/h4>\n\n\n\n<p>Get the fully qualified Zoom File Path and repository revision number of an asset specified by a file asset id.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">getPaths<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage:&nbsp;$paths_aref = getPaths(@assetIds);<\/h4>\n\n\n\n<p>Ger File Paths given an array of Asset IDs<\/p>\n\n\n\n<p>Input:&nbsp;array of&nbsp;asset ids<\/p>\n\n\n\n<p>Output:&nbsp;Array ref to a list of paths that map 1:1 to the asset id array (in the same order as the asset id)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">getFuids<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage&nbsp;&nbsp;$fuids_aref = getFuids((&#8220;\/path1&#8221;, &#8220;path2&#8221;,..));<\/h4>\n\n\n\n<p>Get Fuids\/Asset IDs given an array of Zoom Paths<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">getUserInfo<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage:&nbsp;$user2info_href = getUserInfo(@users)<\/h4>\n\n\n\n<p>Input: A list of Zoom users<\/p>\n\n\n\n<p>Output: Reference to a hashmap with the user property name, value pairs.<\/p>\n\n\n\n<p>Get user profile&nbsp;for an array of Zoom users. The User profile is a hashmap with user attributes such as email address specified with as key,value pair.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">zoomVersion<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage: $ver = ZoomServer::zoomVersion()<\/h4>\n\n\n\n<p>Get Zoom Distribution&#8217;s client version string.&nbsp;String can be passed to commands like JSON calls that need Zoom client version.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">find<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage: find($findByFields_href, $searchPaths_href, $fileNamePattern)<\/h4>\n\n\n\n<p>Find Assets in Zoom based on a search criteria specified.&nbsp;<\/p>\n\n\n\n<p>Input:&nbsp;<br>&nbsp;Find by Metadata: $findByFields_href -&gt; { &#8220;IPTC_Title&#8221; =&gt; &#8220;Title X..&#8221;, &#8220;FIPR_Size&#8221; : &#8220;..&#8221;}<br>&nbsp;Find within folder or projects: $searchPaths_href -&gt; { &#8221; &#8221; =&gt; [&#8220;\/repo\/path1&#8221;, &#8220;\/repo\/path2&#8243;,..], &#8221; &#8221; =&gt; [&#8220;\/repoB\/path1&#8221;, &#8220;\/repoB\/path2&#8221;,..]..<br>&nbsp;Find by file name\/type: $fileNamePattern -&gt; &#8220;*mov&#8221;<\/p>\n\n\n\n<p>Output<br>&nbsp;find JSON response string as documented on https:\/\/evolphin.com\/help\/docs\/zoom-find-web-api\/<br>The string can be passed to helper methods in this module to further extract the metadata.<\/p>\n\n\n\n<p>Maximum matched records returned is determined by the server settings.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">findWithLimit<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage: find($findByFields_href, $searchPaths_href, $fileNamePattern, $limit)<\/h4>\n\n\n\n<p>Same usage as find() except $limit parameter can be used to constrain the maximum number of matched results<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">parseFindResponse<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage: parseFindResponse($findjson_href,$skipDeleted)<\/h4>\n\n\n\n<p>Parse the JSON response returned by Find command.<\/p>\n\n\n\n<p>Input: Json string returned by find command. For instance:<\/p>\n\n\n\n<p>Output: A reference to a hashmap with asset id as key and value a nested hashmap reference with the metadata name\/value pair. For example:<\/p>\n\n\n\n<div class=\"example\">$aid2zoom2val_href -&gt; { &#8220;123&#8221; =&gt; {&#8220;IPTC_Title&#8221; =&gt; &#8220;foo&#8221;, &#8220;VDEO_FPS&#8221; =&gt; &#8220;29&#8221;&#8230;}, &#8220;3414&#8221; =&gt; {}&#8230;<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">matchedAssetIDs<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage:&nbsp;matchedAssetIDs($findjson_href)<\/h4>\n\n\n\n<p>Return an array of reference to a list of Asset IDs &amp; file names from the find response JSON map<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">setMetadata<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage: setMetadata($aid2zoom2val_href)<\/h4>\n\n\n\n<p>Set&nbsp;Metadata for a set&nbsp;of Zoom Asset&nbsp;IDs.<\/p>\n\n\n\n<p>Inputs<br>&nbsp; Hashmap reference %aid2zoom2val = Map of Asset ID -&gt; ( Map of Metadata Key -&gt; Value pair)<\/p>\n\n\n\n<p>&nbsp;For e.g.<\/p>\n\n\n\n<div class=\"example\">&nbsp; &#8216;191&#8217; =&gt; {&nbsp;&nbsp;&#8216;CCSP_FPS&#8217; =&gt; &#8217;12&#8217;,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#8216;CSRP_Price&#8217; =&gt; &#8216;7.65&#8217;<\/div>\n\n\n\n<p>&#8216;191&#8217; is the asset id, &#8221;CCSP_FPS&#8217; is the property name in the above example.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">getJobMetadata<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage:&nbsp;getJobMetadata($jobid)<\/h4>\n\n\n\n<p>returns job metadata using the Config:IniFiles section format.<\/p>\n\n\n\n<p>$jobCfg = getJobMetadata(12);<\/p>\n\n\n\n<p>$jobCfg-&gt;val(&#8220;FTP Form&#8221;,&#8217;ftpServer&#8217;) #&nbsp;&#8216;ftp.evolphin.com&#8217;<\/p>\n\n\n\n<p>The method is used in conjunction with the job metadata form to capture custom job metadata from the create Job UI and pass it to an auto-task.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">getZmMetaXmp<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage:&nbsp;$xmpMetaData = getZmMetaXmp($AssetId, $ZoomRepoID)<\/h4>\n\n\n\n<p>Get Zoom Metadata in XMP format.<\/p>\n\n\n\n<p>Input: AssetID, ZoomRepoId<br>Output: Zoom meta data in XMP format<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">move<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage:&nbsp;&nbsp;$rv = move($src,$dest)<\/h4>\n\n\n\n<p>Move&nbsp;a Zoom Path to new Path.<\/p>\n\n\n\n<p>Inputs<br>&nbsp;$srcPath in Zoom<br>&nbsp;$dest Path in Zoom<\/p>\n\n\n\n<p>Output<br>&nbsp;1: success, 0: failed<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">newFolder<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage:&nbsp;newFolder($parent,@dirs)<\/h4>\n\n\n\n<p>Add a list of paths as new folders in Zoom under a $parent folder<\/p>\n\n\n\n<p>Inputs<br>&nbsp;$parent &#8211; Under which parent folder to add<br>@newFolders &#8211; list of new folders to add<\/p>\n\n\n\n<p>Output<br>&nbsp;1: success, 0: failed<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">listPath<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage: listPath($doLongList,$inDir)<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\"> $outAssets_aref = @{listPath(0, \"\/Project\/Dir\");\n($outAssets_aref, @outAuthors_aref, @outLastMod_aref) = listPath(1, \"\/Project\/Dir\"); # Get file, Author attribute per file, last Modified time per file<\/pre>\n\n\n\n<p>This method is non-recursive.&nbsp;<\/p>\n\n\n\n<p>Inputs<br>&nbsp;$inDir:&nbsp;Path on Zoom server to list files from<br>&nbsp;#doLongList: If flag is set to 1 perform a long listing with more file attribute,&nbsp;<\/p>\n\n\n\n<p>Output<br>&nbsp;$outAssets_aref : Reference to a List of files or folders in the $inDir on Zoom (non-recursive)<br>&nbsp;$outAuthors_aref :&nbsp;Reference to a List of author corresponding to the file list above<br>&nbsp;$outLastMod_aref :&nbsp;Reference to a List of last modification time in milliseconds&nbsp;corresponding to the file list above<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">getRepoId<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage: $repoId = getRepoId()<\/h4>\n\n\n\n<p>Uses the zm getcredentails commands to return the repository id to which the command is connecting.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">generatePreview<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage:&nbsp;generatePreview($fuid,$bid);<\/h4>\n\n\n\n<p>Trigger&nbsp;a fresh&nbsp;preview for a given asset id and delete the original copy from cache.<\/p>\n\n\n\n<p>Input<br>&nbsp;$fuid &#8211; Asset Id<br>&nbsp;$bid &#8211; &nbsp;Branch Id. Please set to 1.<\/p>\n\n\n\n<p>Resolution is set to default resolution configured in settings specified in server XML.<\/p>\n\n\n\n<p>For assets with multiple pages, pageNumber is set to -1 to generate preview for all pages.<\/p>\n\n\n\n<p>Output:<\/p>\n\n\n\n<p>&nbsp;0: Preview failed<br>&nbsp;1: Success<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">exportAsset<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage: exportAsset($outDir, $file)<\/h4>\n\n\n\n<p>Exports asset from server to specified directory such as a NAS folder.<\/p>\n\n\n\n<p>Input:<br>&nbsp;$outDir = Path asset will be exported to<br>&nbsp;$file = Fully qualified path on Zoom Server<\/p>\n\n\n\n<p>Output:<\/p>\n\n\n\n<p>&nbsp;0: If success<br>&nbsp;Non-zero: failure<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">mergeMetadataValues<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage:&nbsp;mergeMetadataValues($oldValues, $newVal)<\/h4>\n\n\n\n<p>Utility method to merge metadata value for multi-valued fields.<\/p>\n\n\n\n<p>For example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">oldValues = (shoe1;chair2) &amp; newVal = shoe1 =&gt; mergedVal = (shoe1;chair2)\noldValues = (shoe1;chair2) &amp; newVal = shoe2 =&gt; mergedVal = (shoe1;chair2;shoe2)<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">getCookie<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage: getCookie()<\/h4>\n\n\n\n<p>Utility method to fetch zoom cookie.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">getFuidAndRrn<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage: getFuidAndRrn($zoomPath)<\/h4>\n\n\n\n<p>Given a zoom path, returns the respective asset id and repository revision number<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">my($assetId,$rrn) = getFuidAndRrn($zoomPath);<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">setSingleAssetMetadata<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage: setSingleAssetMetadata($fuid, $bid, $rrn, $metaMap_href, $timeCodeMap_href, $zmCookie)<\/h4>\n\n\n\n<p>Given an asset id, applies the supplied metadata along with timecode metadata for the asset<\/p>\n\n\n\n<div class=\"example\">%$metaMap_href = Map of TimeCode ID -&gt; ( Map of Metadata Key -&gt; Value pair)<br>%$timeCodeMap_href = Map of TimeCode ID -&gt; TimeCode<br>i.e { start =&gt; , end =&gt; }<\/div>\n\n\n\n<div class=\"note\">For non-timeCode metadata, use timeCodeID = 0.<\/div>\n\n\n\n<p>For e.g,<\/p>\n\n\n\n<div class=\"example\">&nbsp;&#8216;0&#8217; =&gt; {&nbsp;&#8216;CCSP_FPS&#8217; =&gt; &#8217;12&#8217;,&nbsp;&#8216;FIPR_Print Size Y&#8217; =&gt; &#8216;7.65&#8217;}<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">appendMapInJson<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage:appendMapInJson($meta_href)<\/h4>\n\n\n\n<p>Given a map of key,value pairs returns the data in json format<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">runHttpRequest<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Usage:runHttpRequest($commandName, $queryData, $url, $zmCookie)<\/h4>\n\n\n\n<p>Given a command, url and data to be queried, returns a http response<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">my ($rv, $decodedResponse) = runHttpRequest (\"SetMetadata\", $data, \"\/internal\", $zmCookie);<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Name ZoomServer &#8211;&nbsp;Construct common Zoom operations without the low-level REST\/Java\/CLI syntax Dependencies Ensure the Perl SDK is setup. Synopsis use ZoomServer; my $cfg = $ZoomServer::cfg ; my $logger = $ZoomServer::logger; my ($files_aref, $authors_aref, $lastMod_aref) = ZoomServer::listPath(1,$d); Methods zoomImport Usage: zoomImport($srcDir, $bulkMetaFile) Will import everything under the srcDir including subdirs while applying bulk metadata CSV file&nbsp;if [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[140],"tags":[],"class_list":["post-4654","post","type-post","status-publish","format-standard","hentry","category-perl-sdk"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Perl SDK Module: ZoomServer - Evolphin Documentation<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/evolphin.com\/help\/deployment\/perl-sdk\/perl-sdk-module-zoomserver\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Perl SDK Module: ZoomServer - Evolphin Documentation\" \/>\n<meta property=\"og:description\" content=\"Name ZoomServer &#8211;&nbsp;Construct common Zoom operations without the low-level REST\/Java\/CLI syntax Dependencies Ensure the Perl SDK is setup. Synopsis use ZoomServer; my $cfg = $ZoomServer::cfg ; my $logger = $ZoomServer::logger; my ($files_aref, $authors_aref, $lastMod_aref) = ZoomServer::listPath(1,$d); Methods zoomImport Usage: zoomImport($srcDir, $bulkMetaFile) Will import everything under the srcDir including subdirs while applying bulk metadata CSV file&nbsp;if [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/evolphin.com\/help\/deployment\/perl-sdk\/perl-sdk-module-zoomserver\/\" \/>\n<meta property=\"og:site_name\" content=\"Evolphin Documentation\" \/>\n<meta property=\"article:published_time\" content=\"2016-07-07T08:22:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-05-18T13:07:50+00:00\" \/>\n<meta name=\"author\" content=\"Rahul Bhargava\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rahul Bhargava\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/evolphin.com\\\/help\\\/deployment\\\/perl-sdk\\\/perl-sdk-module-zoomserver\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/evolphin.com\\\/help\\\/deployment\\\/perl-sdk\\\/perl-sdk-module-zoomserver\\\/\"},\"author\":{\"name\":\"Rahul Bhargava\",\"@id\":\"https:\\\/\\\/evolphin.com\\\/help\\\/#\\\/schema\\\/person\\\/e5f3dc53ac5f026ed258e224e75447f7\"},\"headline\":\"Perl SDK Module: ZoomServer\",\"datePublished\":\"2016-07-07T08:22:33+00:00\",\"dateModified\":\"2020-05-18T13:07:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/evolphin.com\\\/help\\\/deployment\\\/perl-sdk\\\/perl-sdk-module-zoomserver\\\/\"},\"wordCount\":1239,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/evolphin.com\\\/help\\\/#organization\"},\"articleSection\":[\"Perl SDK\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/evolphin.com\\\/help\\\/deployment\\\/perl-sdk\\\/perl-sdk-module-zoomserver\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/evolphin.com\\\/help\\\/deployment\\\/perl-sdk\\\/perl-sdk-module-zoomserver\\\/\",\"url\":\"https:\\\/\\\/evolphin.com\\\/help\\\/deployment\\\/perl-sdk\\\/perl-sdk-module-zoomserver\\\/\",\"name\":\"Perl SDK Module: ZoomServer - Evolphin Documentation\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/evolphin.com\\\/help\\\/#website\"},\"datePublished\":\"2016-07-07T08:22:33+00:00\",\"dateModified\":\"2020-05-18T13:07:50+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/evolphin.com\\\/help\\\/deployment\\\/perl-sdk\\\/perl-sdk-module-zoomserver\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/evolphin.com\\\/help\\\/deployment\\\/perl-sdk\\\/perl-sdk-module-zoomserver\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/evolphin.com\\\/help\\\/deployment\\\/perl-sdk\\\/perl-sdk-module-zoomserver\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/evolphin.com\\\/help\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Perl SDK Module: ZoomServer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/evolphin.com\\\/help\\\/#website\",\"url\":\"https:\\\/\\\/evolphin.com\\\/help\\\/\",\"name\":\"Evolphin Documentation\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/evolphin.com\\\/help\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/evolphin.com\\\/help\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/evolphin.com\\\/help\\\/#organization\",\"name\":\"Evolphin Documentation\",\"url\":\"https:\\\/\\\/evolphin.com\\\/help\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/evolphin.com\\\/help\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/evolphin.com\\\/help\\\/wp-content\\\/uploads\\\/2020\\\/04\\\/cropped-evolphin-logo-dolphin_sm.png\",\"contentUrl\":\"https:\\\/\\\/evolphin.com\\\/help\\\/wp-content\\\/uploads\\\/2020\\\/04\\\/cropped-evolphin-logo-dolphin_sm.png\",\"width\":200,\"height\":200,\"caption\":\"Evolphin Documentation\"},\"image\":{\"@id\":\"https:\\\/\\\/evolphin.com\\\/help\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/evolphin.com\\\/help\\\/#\\\/schema\\\/person\\\/e5f3dc53ac5f026ed258e224e75447f7\",\"name\":\"Rahul Bhargava\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/952acf4ec94a228ca32ed9b65cee4cc97a33509ea04500e768b71da346e58971?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/952acf4ec94a228ca32ed9b65cee4cc97a33509ea04500e768b71da346e58971?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/952acf4ec94a228ca32ed9b65cee4cc97a33509ea04500e768b71da346e58971?s=96&d=mm&r=g\",\"caption\":\"Rahul Bhargava\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Perl SDK Module: ZoomServer - Evolphin Documentation","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/evolphin.com\/help\/deployment\/perl-sdk\/perl-sdk-module-zoomserver\/","og_locale":"en_US","og_type":"article","og_title":"Perl SDK Module: ZoomServer - Evolphin Documentation","og_description":"Name ZoomServer &#8211;&nbsp;Construct common Zoom operations without the low-level REST\/Java\/CLI syntax Dependencies Ensure the Perl SDK is setup. Synopsis use ZoomServer; my $cfg = $ZoomServer::cfg ; my $logger = $ZoomServer::logger; my ($files_aref, $authors_aref, $lastMod_aref) = ZoomServer::listPath(1,$d); Methods zoomImport Usage: zoomImport($srcDir, $bulkMetaFile) Will import everything under the srcDir including subdirs while applying bulk metadata CSV file&nbsp;if [&hellip;]","og_url":"https:\/\/evolphin.com\/help\/deployment\/perl-sdk\/perl-sdk-module-zoomserver\/","og_site_name":"Evolphin Documentation","article_published_time":"2016-07-07T08:22:33+00:00","article_modified_time":"2020-05-18T13:07:50+00:00","author":"Rahul Bhargava","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Rahul Bhargava","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/evolphin.com\/help\/deployment\/perl-sdk\/perl-sdk-module-zoomserver\/#article","isPartOf":{"@id":"https:\/\/evolphin.com\/help\/deployment\/perl-sdk\/perl-sdk-module-zoomserver\/"},"author":{"name":"Rahul Bhargava","@id":"https:\/\/evolphin.com\/help\/#\/schema\/person\/e5f3dc53ac5f026ed258e224e75447f7"},"headline":"Perl SDK Module: ZoomServer","datePublished":"2016-07-07T08:22:33+00:00","dateModified":"2020-05-18T13:07:50+00:00","mainEntityOfPage":{"@id":"https:\/\/evolphin.com\/help\/deployment\/perl-sdk\/perl-sdk-module-zoomserver\/"},"wordCount":1239,"commentCount":0,"publisher":{"@id":"https:\/\/evolphin.com\/help\/#organization"},"articleSection":["Perl SDK"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/evolphin.com\/help\/deployment\/perl-sdk\/perl-sdk-module-zoomserver\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/evolphin.com\/help\/deployment\/perl-sdk\/perl-sdk-module-zoomserver\/","url":"https:\/\/evolphin.com\/help\/deployment\/perl-sdk\/perl-sdk-module-zoomserver\/","name":"Perl SDK Module: ZoomServer - Evolphin Documentation","isPartOf":{"@id":"https:\/\/evolphin.com\/help\/#website"},"datePublished":"2016-07-07T08:22:33+00:00","dateModified":"2020-05-18T13:07:50+00:00","breadcrumb":{"@id":"https:\/\/evolphin.com\/help\/deployment\/perl-sdk\/perl-sdk-module-zoomserver\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/evolphin.com\/help\/deployment\/perl-sdk\/perl-sdk-module-zoomserver\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/evolphin.com\/help\/deployment\/perl-sdk\/perl-sdk-module-zoomserver\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/evolphin.com\/help\/"},{"@type":"ListItem","position":2,"name":"Perl SDK Module: ZoomServer"}]},{"@type":"WebSite","@id":"https:\/\/evolphin.com\/help\/#website","url":"https:\/\/evolphin.com\/help\/","name":"Evolphin Documentation","description":"","publisher":{"@id":"https:\/\/evolphin.com\/help\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/evolphin.com\/help\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/evolphin.com\/help\/#organization","name":"Evolphin Documentation","url":"https:\/\/evolphin.com\/help\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/evolphin.com\/help\/#\/schema\/logo\/image\/","url":"https:\/\/evolphin.com\/help\/wp-content\/uploads\/2020\/04\/cropped-evolphin-logo-dolphin_sm.png","contentUrl":"https:\/\/evolphin.com\/help\/wp-content\/uploads\/2020\/04\/cropped-evolphin-logo-dolphin_sm.png","width":200,"height":200,"caption":"Evolphin Documentation"},"image":{"@id":"https:\/\/evolphin.com\/help\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/evolphin.com\/help\/#\/schema\/person\/e5f3dc53ac5f026ed258e224e75447f7","name":"Rahul Bhargava","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/952acf4ec94a228ca32ed9b65cee4cc97a33509ea04500e768b71da346e58971?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/952acf4ec94a228ca32ed9b65cee4cc97a33509ea04500e768b71da346e58971?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/952acf4ec94a228ca32ed9b65cee4cc97a33509ea04500e768b71da346e58971?s=96&d=mm&r=g","caption":"Rahul Bhargava"}}]}},"_links":{"self":[{"href":"https:\/\/evolphin.com\/help\/wp-json\/wp\/v2\/posts\/4654","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/evolphin.com\/help\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/evolphin.com\/help\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/evolphin.com\/help\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/evolphin.com\/help\/wp-json\/wp\/v2\/comments?post=4654"}],"version-history":[{"count":1,"href":"https:\/\/evolphin.com\/help\/wp-json\/wp\/v2\/posts\/4654\/revisions"}],"predecessor-version":[{"id":14787,"href":"https:\/\/evolphin.com\/help\/wp-json\/wp\/v2\/posts\/4654\/revisions\/14787"}],"wp:attachment":[{"href":"https:\/\/evolphin.com\/help\/wp-json\/wp\/v2\/media?parent=4654"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/evolphin.com\/help\/wp-json\/wp\/v2\/categories?post=4654"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/evolphin.com\/help\/wp-json\/wp\/v2\/tags?post=4654"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}