G4G Release Notes

v1.00 - Original  

v1.01 - Fixed bugs in JSON parsing routine.

        Added Google Calendar as a new addon.   

v1.02 - G4GGCAL updated to v1.10.  

        New commands added:

         G4GADDEVT - Add a Google Calendar Event

         G4GDELEVT - Delete a Google Calendar Event

v1.03 - Changed the way that expiring tokens are handled.

v1.04 - Updated Google Cloud Print (G4GPRINT) command to use SSL 

         as required by Google.

v2.00 - Added ILE subprocedures for functions.  Please see the

         prototypes in the new QCOPYSRC source physical file for

         more information.

v2.10 - Updated Google Calendar to v1.20 which adds the functionality

         to add attendees to the calendar event.

v3.00 - Updated functions to use setters for values instead of parms to make

         things easier.  See documentation for examples.  The prototypes

for all the subprocedures have changed dramatically, so please be sure

to update your applications.

v3.01 - Made Error Message Output Parameters optional.

v3.02 - Added file G4GPARMPF to allow the overriding of certain parameters of the

         GETURI call.  See documentation for list.

v4.00 - Added the Google Contacts (G4GGCON) v1.00 API interface.

v5.00 - Added the Google Drive (G4GGDRV) v1.00 API interface.

v5.01 - Updates and fixes to G4GGDRV interface.  Updated to v1.01.

v5.02 - Updated upload function of G4GGDRV to include a replace option which is 

         *YES by default.

v5.03 - Update to G4GGCAL delete function.

v5.04 - Update to G4GGCAL and G4GGDRV functions to make sure API key is included 

         in requests.

v6.00 - Updated all aplications to use the newer JSON parser.

        Updated G4GCON to use JSON instead of XML.  Removed XML Parsing.

        Minor bug fixes and updates.

v6.01 - Updated F.G4GGCAL service program so that the data posted could be up

         up 65k instead of 4k.

v6.02 - Added *GMAILSMTP to list of services available (for MAILTOOL).

v6.03 - Updated registration screen to be a shorter URL and start at our site (BVSTools.com).

v7.00 - Added GMail (G4GGMAIL) Addon

         Updated upgrade instructions to include a single command call to copy control records

         (G4GUPDATE command)

v7.10 - All modules use new JSON parsing routing (JSONTOOL v3.00 or higher) for better performance.

        Updated F.G4GDRV to use a larger buffer for the JSON data.

        Updated G4GUPDATE to reorganize files and copy the G4GFID data area.

v7.11 - Updated G4GLSTFIL and F.G4GDRV so that you can set a parent ID of items to retrieve.  This 

         parent ID should be the ID of a folder that you want to retrieve items from.  

         Note: This will not recursivley retrieve items from subfolders of the parent folder.

v8.00 - Updated for SaaS (subscription) licensing.

         Minor updates to help text.

v8.10 - Updated G4GGMAIL to v3.0.

        Added option to move messages retrieve using the G4GLSTMM command to another folder.  When

         doing so you must also provide a folder label to retrieve messages from.

        Added #g4gmail_modifyLabel that allows you to remove or add lables to a message.

        Added option parameter to #g4gmail_getAttachment.  An attachment name can be passed

         in to use as a partial file name of downloaded attachments.

        Updated attachment file method when downloading attachments.  If an attachment filename

         is specified that will be used as the end of the filename.  Example:

          Example:

           #g4ggmail_setValue('attachment_name':'myfile.pdf');

           #g4ggmail_getAttachment();

           

           The retrieved filename will be g4gmail_att_<id>_myfile.pdf where <id> is a unique

            mail ID.

v8.11 - Added file reorganization when clearing out files.

        Added REDO option to G4GREGSVC which allows you to re-register a service that is already

         registered.  This comes in handy when for some reason the refresh token is no longer

         valid.

v8.20 - Updated F.G4GMAIL to v3.20.

        Required V5R4M0 as mimimum release level.

        Fixed bug where attachments were getting the body filename in the G4GMPPF file.

        Added error code field to G4GMPPF file.

        Added parameter to G4GLSTMM command to set the maximum size of parts to retrieve.

         If a part of the email is larger than this value the entry will not be downloaded

         but will still be logged in the G4GMPPF file with an error code of SIZE_LIMIT.

        Added parameter max_part_size for F.G4GMAIL subprocedures to set maximum part size

         (in bytes) of parts to download.

        Updated JSON processing to use YAJL Parser for F.G4GMAIL.  Included YAJL objects. 

v9.00 - Included GETURI v6.00 with G4G library for compatibility.

        Updated registration method to use web only.  Also removed the need to copy

         and paste the authorization code from the web page making setup easier. 

v10.00 - Made YAJLR4 bind by copy instead of by reference for compatibility with other

          applications using it.

         Changed default CCSID from 1252/819 to 1208 on all commands and functions 

          except for Google Drive and Google Cloud Print Functions.

         Fixed the G4GMHHPF file data column.  UTF-8 data was being place into the column

          and getting corrupted.

v10.01 - Updated applications so that the ID used is case insensitive.

v10.10 - Updated GETURI version to v6.10.

         Added #g4gdrv_moveFile() which allows you to move a file from one Google Drive folder

          to another.

         Added #g4gdrv_downloadFile() which allows you to download a file from Google Drive

          and store it in the IFS.

         Updated #g4gccp_print() to return the file ID of a file if the option to save the file

          to Google Docs is used.

v10.20 - Updated to include GETURI v6.20.

         Updated token refresh function to return the error message if it's encounted instead of nothing.

         Updated G4GPRINT command to return message to screen instead of the file ID.

         SP160722 - Added CONVERT option on the G4GUPLOAD command which allows

           the user to specify if they wish to automatically convert

           the file to it's Google Doc format when uploading.

          Added convert_file option to #g4g_setValue().

v10.30 - Updated G4GLSTMM so that if a message contains an attachment only it would be downloaded.  This was 

          an issue with one email client where it would not make the email multi-part. 

         SP160722 - Fixed issue when attachment filenames included a slash or

          backslash.  Replaced characters with underscore (_).  This

          fix updates G4GGMAIL to v4.11 and G4G v10.30 SP161208. 

v10.40 - Updated GETURI to version 7.00 which allows non-strict SSL. 

v10.50 - Updated G4GGMAIL to v4.20.  This fixed an issue when a message part

          of RFC822 (embedded message) was sent.

         Updated all the command interface programs to run in Activation

          Group G4G instead of *CALLER.

         Updated references to Google Apps to G Suite (per Google).

v10.60 - Updated G4GDRV to v4.00.

         G4GDRV updated to use YAJL.

         Added G4GCRTFLR command which is used to create a folder on your Google Drive.

         Added #g4gdrv_createFolder() ILE function.

         Updated #g4gdrv_getID() to return *ERR instead of blanks if a folder or file is not found.

         Added folder/file id to return parameters from #g4gdrv_upload().

         Added Create Parents (create_parents) option for the G4GUPLOAD command and the 

          #g4gdrv_upload() function which is used to tell G4GDRV to create any folders in the

          upload path if they do not exist and *YES is specified for this value.

         Added search by folder name on G4GLSTFIL command so you can use a fully qualified 

          folder path instead of a folder id.

         Added G4GDLOAD command which is used to download a file from Google Drive to your local

          IBM i IFS.

         Changed REPLACE parameter on G4GUPLOAD command and replace_file option on #g4gdrv_upload()

          function so *YES will replace the file if it exists, *NO will cancel the operation

          if the file exists and *ADD will add a new file with a different ID if the file exists.

         SP160722 - Fixed issue when attachments were larger than the max size 

          (16meg).  The size reported by Google was the normal file 

          size, but if the file was base 64 encoded it would be larger.

          So checking size vs the actual size of the base64 encoded data.

          if the file is too large the GGMPERR field in the G4GMPPF 

          file will contain the value SIZE_LIMIT indicating it was

          not downloaded.

         Created data area named G4GMAXSIZE that you can use to set the

          maximum size of attachments (in bytes) to download.  If this data area

          is zero or greater than 16m the max size will default to

          16m.

         SP170609 - Set create_parents default to *NO.  Was *YES.

          Updated error checking on getting folder/file ids.

          Updated /copy memeber so #g4gdrive_getID() shows it returns *ERR for an

           error, not blanks.

v10.65 - Added commands and ILE functions to trash and untrash files from Google 

          Drive.

         G4GTRASH - Trash a File (Function #g4gdrv_trashFile()).

         G4GUNTRASH - Untrasn a File (Function #g4gdrv_unTrashFile())

         SP160722 - Fixed issue when creating new folders.  Was saying folder

          name was required even though it was provided.

         SP160722 - Fixed issue with G4GGMAIL where if the message body was blank

          it would write a record to G4GMPPF without a file.  Updated

          so that no record will be written in this case. 

         SP160722 - Fixed authority issue with files created with G4GGMAIL.  When

          it created the parts of the email in the IFS the data

          autorities were being set to none.  Now they will be *RWX 

          for the owner.  

v10.70 - Updated GETURI to latest version (v8.21).

         Renamed YAJL so it wouldn't interfere with possible other versions

          installed on the system. 

10.80 -  Found bug in G4GDRV with JSON processing.  Fixed.

11.00 -  Updated HTTP requests to use 1.1 in G4GREGSVC.

         Updated callback URL from HTTP to HTTPS.

         Made GGTDEVID larger to handle larger confirmation codes when

          registering a service.  

         SP180330 - Updated F.G4GMAIL so files that are created will inherit 

          the authority of the directory they are created in. 

v11.10 - Updated GETURI to v8.30. 

v11.20 - Added #g4gdrv_deleteFile() function to the F.G4GDRV service program.

          This function can be used to delete a file from your Google Drive

          as well as empty the trash.  In order to empty the trash just

          set the file ID to "trash" (without quotes).   

v11.22 - Fixed bug in G4GCON (Contacts Addon) when retrieving contact groups.

v11.30 - Added licensing for G4G base product.  This is because in the future

          we will be allowing customers to purchase only the G4G product for

          use to create their own plugins allowing the base G4G product

          to handle the OAuth 2.0 authentication

         Fixed bug with Refreshing Token when a CCSID was not passed in.

v12.00 - Updated GETURI to v10.01.

         Included /copy member for G4G base functions such as #g4g_refreshToken().

         Included service program F.G4G so users can write their own functions.

         Required licensing for base G4G product.

v12.10 - Added #g4gmail_sendMail() function to send emails using the 

          GMail RESTful APIs.  Requires licensing of G4GSMAIL addon.

          This function can also be used through MAILTOOL using a 

          SENDWITH value of *G4GSMAIL.

v12.50 - Updated G4GGDRV to v5.00.  Updates include:

          - Updated API calls to V3

          - Added support for Shared Drives

          - Removed "in owners" in query when searching for files

         Updated GETURI to latest version.

         The Convert flag on the g4gdrv_upload() function and G4GUPLOAD

          command is no longer valid as it is deprecated by Google.

v12.60 - Updated G4GDRV to v5.10.

         Fixed upload with replace option.

         Updated G4GUPLOAD to allow a folder ID in the folder parameter as well as a path.

         Updated help text on G4GDLOAD to explain when you are downloading a Google type

          document that you do need to specify CONVERT(*YES) as well as a valid PC mime type

          to convert the file to.

         Removed CONVERT paramter from G4GUPLOAD and replaced it with MIMETYPE.  If you wish

          to convert the file you are uploaded specify a valid Google mime type.  A list 

          can be found here: https://developers.google.com/drive/api/v3/mime-types

         Replaced "convert_file" parameter in #g4gdrv_upload() with "mime_type" (see above).

         Added "parent_id" parameter to #g4gdrv_upload() so you can specify a folder ID in

          place of a folder name.

         If uploading a file and converting to a Google format you should specify a new file

          name as Google will automatically remove the extension from the file.

         Updated #g4gdrv_listFiles() so that it would also see shared drives.  In June 2020 this

          will be the default but for now it required a new flag.

         SP200206 - Updated F.G4GDRV so that when it is looking for a specific ID

            of a file it will search all drive types.

v12.60 - Updated G4GGCAL functions to use YAJL vs our older JSON parsing routines.

         Updated all service programs with SQL COMMIT = *NONE.

         Updated GETURI to v10.10.

         Removed G4GGCON functions.  Will be re-added if people find the functions useful but

          it will need to be updated to use the People APIs instead of the deprecated

          Contacts API.

v12.61 - Updated GETURI to v10.11.

         Updated G4GGDRV to 5.13 to work with files larger than 2GB.

         Updated G4GGDRV commands to accept *YES and *ALL for debug paramters.  *ALL will work

          as *YES used to with verbose debugging.  *YES will now work and leave out most

          read/write/select operations.

v12.62b - Updated service programs to not remove temp files when debug is set to *ALL.

          Updated GETURI to v10.11 sp200928

v13.00  - Updated GETURI to v11.00.

v13.01  - Added more detail to JSON parsing errors in F.G4GDRV.

          Updated G4GDRV so that the work files will remain in /tmp if there is an error.

v13.10  - Updated size of token fields stored in G4G001PF.

          SP210528 - Found issue when uploading large files that they were not being

           placed in the proper folder and always in the root.  Fixed.

v13.20  - Updated GETURI to v11.00 sp210713

          Added creation and modified date to information retrieved using G4GLSTFIL when  

           listing files from your Google Drive account.

v14.00  - Updated function/subprocedure names so they no longer start with the # (hashtag)

           symbol.  This is for better compatibility when working in different code pages.

          Updated GETURI to v12.00.

          Removed any remaining files for G4GGCON and G4GGCP as they are deprecated.

v15.00  - Added functions g4g_setValue(), g4g_resetValues(), g4g_getRegistrationURL() and

           g4g_exchangeCodeForToken().  These are used so that instead of using the 

           G4GREGSVC command, you can retrieve a URL that can be displayed in your own

           application that the user can follow to register a service.  See more details

           in the documentation at: 

           https://docs.bvstools.com/home/greentools-for-google-apps/docs/g4g-base-commands

          Updated the callback to ws.bvstools.com to retrieve the Google OAuth Code to use

           SSL.

          SP220702 - When uploading a file to Google Drive and performing conversion

            to a Google Drive File type and specifying the file name, if

            the file didn't exist a "Bad Request" error would be returned

            because the content type for the original file wasn't being

            specified.  Fixed.

v15.10  - Added functionality to use shared drives as well as your personal drives for 

           most functions (upload, download, list, get ID, etc).  Drive ID and Drive Name

           are avalailable on most commands, and can be set in the ILE functions using

           in_drive_id and in_drive_name.

          Updated GETURI to latest version.

          Added a few example programs in QRPGLESRC.  This is to show how to retrieve IDs

           for files, folders, etc in shared drives, and use functions that require IDs 

           instead of names for their functions.

          Added Drive ID column to G4GDRVPF file.  When G4GLSTFIL is run now, it will only 

           remove items for the user and specific drive before reloading the list.

          Changed the Download From Folder on G4GDLOAD command from blank to *ROOT.

v15.20  - Added ability to retrieve IDs for shortcuts.  When getting IDs for 

           shortcuts by default it will return the ID of the actual item.  If you

           want to retrieve the actual ID of the shortcut, set the 

           "shortcut_id_type" to "shortcut" before calling g4gdrv_getID();

           *NOTE: When retrieving and ID from objects using a full path, the path

            must NOT contain any shortcuts.  If a shortcut exists in your path you

            will need to retrieve them separately.

          Updated G4GDRVPF file to include the target ID for shortcuts.

          Updated G4GUPDATE to not copy the old G4GCTTPF (content type file)

           and use what is provided from the new version.  If you have any 

           special content types you will need to re-add them into this file.

          Allow the use of MIME types when searching for items so that you can

           be more specific and find the correct file if more than one exists

           with the same name.  The search type of "file" is still available

           as a generic search term.  The MIME type is specified when setting

           the "search_type".  drive, file, folder, pdf, generic, or any 

           value from the G4GCTTPF can be used.

          Allow setting of parent ID for g4gdrv_createFolder().  This can be 

           used if you want to create a folder using a shortcut as the parent.

          Updated and added more sample programs in QRPGLESRC source PF.

v15.21  - Added ability to specify parent ID when downloading a file.  The parent

           ID should be the ID of the folder the file resides in.

          Added search type to g4gdrv_downloadFile() as a settable variable.  

           This is so if you have multiple files with the same name but different

           types (ie, docs, sheets, etc) you can be more specific on which to 

           download.

          Added download example source code to QRPGLESRC.

          SP220812 - When sending an email using a MIME file, the MIME file would be

           deleted when complete.  Updated so the MIME file would not be 

           deleted as it could be something the end user wants to handle

           themselves in their own application.

          SP221216 - When uploading large files to a shared drive an error would be

           received about the file isn't found.  Updated request to

           include shared drives (which Google claims is deprecated)

           and it works now.

v15.50  - Updated g4gmail_sendMail() to return the unique g4g ID instead of just

           zero for success.  Also changed the size of the return variable from 

           10i to 20i.

          SP240928 - Updated debug file names for G4GDRV to help with debugging.

           Fixed issue downloading files from root.

           Fixed issue where if a drive operation errored not all variables

            were not being reset.