github.com/Files-com/files-sdk-go/v3@v3.1.81/bundle.go (about)

     1  package files_sdk
     2  
     3  import (
     4  	"encoding/json"
     5  	"io"
     6  	"time"
     7  
     8  	lib "github.com/Files-com/files-sdk-go/v3/lib"
     9  )
    10  
    11  type Bundle struct {
    12  	Code                            string                 `json:"code,omitempty" path:"code,omitempty" url:"code,omitempty"`
    13  	ColorLeft                       string                 `json:"color_left,omitempty" path:"color_left,omitempty" url:"color_left,omitempty"`
    14  	ColorLink                       string                 `json:"color_link,omitempty" path:"color_link,omitempty" url:"color_link,omitempty"`
    15  	ColorText                       string                 `json:"color_text,omitempty" path:"color_text,omitempty" url:"color_text,omitempty"`
    16  	ColorTop                        string                 `json:"color_top,omitempty" path:"color_top,omitempty" url:"color_top,omitempty"`
    17  	ColorTopText                    string                 `json:"color_top_text,omitempty" path:"color_top_text,omitempty" url:"color_top_text,omitempty"`
    18  	Url                             string                 `json:"url,omitempty" path:"url,omitempty" url:"url,omitempty"`
    19  	Description                     string                 `json:"description,omitempty" path:"description,omitempty" url:"description,omitempty"`
    20  	ExpiresAt                       *time.Time             `json:"expires_at,omitempty" path:"expires_at,omitempty" url:"expires_at,omitempty"`
    21  	PasswordProtected               *bool                  `json:"password_protected,omitempty" path:"password_protected,omitempty" url:"password_protected,omitempty"`
    22  	Permissions                     string                 `json:"permissions,omitempty" path:"permissions,omitempty" url:"permissions,omitempty"`
    23  	PreviewOnly                     *bool                  `json:"preview_only,omitempty" path:"preview_only,omitempty" url:"preview_only,omitempty"`
    24  	RequireRegistration             *bool                  `json:"require_registration,omitempty" path:"require_registration,omitempty" url:"require_registration,omitempty"`
    25  	RequireShareRecipient           *bool                  `json:"require_share_recipient,omitempty" path:"require_share_recipient,omitempty" url:"require_share_recipient,omitempty"`
    26  	RequireLogout                   *bool                  `json:"require_logout,omitempty" path:"require_logout,omitempty" url:"require_logout,omitempty"`
    27  	ClickwrapBody                   string                 `json:"clickwrap_body,omitempty" path:"clickwrap_body,omitempty" url:"clickwrap_body,omitempty"`
    28  	FormFieldSet                    FormFieldSet           `json:"form_field_set,omitempty" path:"form_field_set,omitempty" url:"form_field_set,omitempty"`
    29  	SkipName                        *bool                  `json:"skip_name,omitempty" path:"skip_name,omitempty" url:"skip_name,omitempty"`
    30  	SkipEmail                       *bool                  `json:"skip_email,omitempty" path:"skip_email,omitempty" url:"skip_email,omitempty"`
    31  	StartAccessOnDate               *time.Time             `json:"start_access_on_date,omitempty" path:"start_access_on_date,omitempty" url:"start_access_on_date,omitempty"`
    32  	SkipCompany                     *bool                  `json:"skip_company,omitempty" path:"skip_company,omitempty" url:"skip_company,omitempty"`
    33  	Id                              int64                  `json:"id,omitempty" path:"id,omitempty" url:"id,omitempty"`
    34  	CreatedAt                       *time.Time             `json:"created_at,omitempty" path:"created_at,omitempty" url:"created_at,omitempty"`
    35  	DontSeparateSubmissionsByFolder *bool                  `json:"dont_separate_submissions_by_folder,omitempty" path:"dont_separate_submissions_by_folder,omitempty" url:"dont_separate_submissions_by_folder,omitempty"`
    36  	MaxUses                         int64                  `json:"max_uses,omitempty" path:"max_uses,omitempty" url:"max_uses,omitempty"`
    37  	Note                            string                 `json:"note,omitempty" path:"note,omitempty" url:"note,omitempty"`
    38  	PathTemplate                    string                 `json:"path_template,omitempty" path:"path_template,omitempty" url:"path_template,omitempty"`
    39  	PathTemplateTimeZone            string                 `json:"path_template_time_zone,omitempty" path:"path_template_time_zone,omitempty" url:"path_template_time_zone,omitempty"`
    40  	SendEmailReceiptToUploader      *bool                  `json:"send_email_receipt_to_uploader,omitempty" path:"send_email_receipt_to_uploader,omitempty" url:"send_email_receipt_to_uploader,omitempty"`
    41  	SnapshotId                      int64                  `json:"snapshot_id,omitempty" path:"snapshot_id,omitempty" url:"snapshot_id,omitempty"`
    42  	UserId                          int64                  `json:"user_id,omitempty" path:"user_id,omitempty" url:"user_id,omitempty"`
    43  	Username                        string                 `json:"username,omitempty" path:"username,omitempty" url:"username,omitempty"`
    44  	ClickwrapId                     int64                  `json:"clickwrap_id,omitempty" path:"clickwrap_id,omitempty" url:"clickwrap_id,omitempty"`
    45  	InboxId                         int64                  `json:"inbox_id,omitempty" path:"inbox_id,omitempty" url:"inbox_id,omitempty"`
    46  	WatermarkAttachment             Image                  `json:"watermark_attachment,omitempty" path:"watermark_attachment,omitempty" url:"watermark_attachment,omitempty"`
    47  	WatermarkValue                  map[string]interface{} `json:"watermark_value,omitempty" path:"watermark_value,omitempty" url:"watermark_value,omitempty"`
    48  	HasInbox                        *bool                  `json:"has_inbox,omitempty" path:"has_inbox,omitempty" url:"has_inbox,omitempty"`
    49  	Paths                           []string               `json:"paths,omitempty" path:"paths,omitempty" url:"paths,omitempty"`
    50  	Bundlepaths                     []string               `json:"bundlepaths,omitempty" path:"bundlepaths,omitempty" url:"bundlepaths,omitempty"`
    51  	Password                        string                 `json:"password,omitempty" path:"password,omitempty" url:"password,omitempty"`
    52  	FormFieldSetId                  int64                  `json:"form_field_set_id,omitempty" path:"form_field_set_id,omitempty" url:"form_field_set_id,omitempty"`
    53  	CreateSnapshot                  *bool                  `json:"create_snapshot,omitempty" path:"create_snapshot,omitempty" url:"create_snapshot,omitempty"`
    54  	FinalizeSnapshot                *bool                  `json:"finalize_snapshot,omitempty" path:"finalize_snapshot,omitempty" url:"finalize_snapshot,omitempty"`
    55  	WatermarkAttachmentFile         io.Reader              `json:"watermark_attachment_file,omitempty" path:"watermark_attachment_file,omitempty" url:"watermark_attachment_file,omitempty"`
    56  	WatermarkAttachmentDelete       *bool                  `json:"watermark_attachment_delete,omitempty" path:"watermark_attachment_delete,omitempty" url:"watermark_attachment_delete,omitempty"`
    57  }
    58  
    59  func (b Bundle) Identifier() interface{} {
    60  	return b.Id
    61  }
    62  
    63  type BundleCollection []Bundle
    64  
    65  type BundlePermissionsEnum string
    66  
    67  func (u BundlePermissionsEnum) String() string {
    68  	return string(u)
    69  }
    70  
    71  func (u BundlePermissionsEnum) Enum() map[string]BundlePermissionsEnum {
    72  	return map[string]BundlePermissionsEnum{
    73  		"read":         BundlePermissionsEnum("read"),
    74  		"write":        BundlePermissionsEnum("write"),
    75  		"read_write":   BundlePermissionsEnum("read_write"),
    76  		"full":         BundlePermissionsEnum("full"),
    77  		"none":         BundlePermissionsEnum("none"),
    78  		"preview_only": BundlePermissionsEnum("preview_only"),
    79  	}
    80  }
    81  
    82  type BundleListParams struct {
    83  	UserId     int64                  `url:"user_id,omitempty" required:"false" json:"user_id,omitempty" path:"user_id"`
    84  	SortBy     map[string]interface{} `url:"sort_by,omitempty" required:"false" json:"sort_by,omitempty" path:"sort_by"`
    85  	Filter     Bundle                 `url:"filter,omitempty" required:"false" json:"filter,omitempty" path:"filter"`
    86  	FilterGt   map[string]interface{} `url:"filter_gt,omitempty" required:"false" json:"filter_gt,omitempty" path:"filter_gt"`
    87  	FilterGteq map[string]interface{} `url:"filter_gteq,omitempty" required:"false" json:"filter_gteq,omitempty" path:"filter_gteq"`
    88  	FilterLt   map[string]interface{} `url:"filter_lt,omitempty" required:"false" json:"filter_lt,omitempty" path:"filter_lt"`
    89  	FilterLteq map[string]interface{} `url:"filter_lteq,omitempty" required:"false" json:"filter_lteq,omitempty" path:"filter_lteq"`
    90  	ListParams
    91  }
    92  
    93  type BundleFindParams struct {
    94  	Id int64 `url:"-,omitempty" required:"false" json:"-,omitempty" path:"id"`
    95  }
    96  
    97  type BundleCreateParams struct {
    98  	UserId                          int64                 `url:"user_id,omitempty" required:"false" json:"user_id,omitempty" path:"user_id"`
    99  	Paths                           []string              `url:"paths,omitempty" required:"true" json:"paths,omitempty" path:"paths"`
   100  	Password                        string                `url:"password,omitempty" required:"false" json:"password,omitempty" path:"password"`
   101  	FormFieldSetId                  int64                 `url:"form_field_set_id,omitempty" required:"false" json:"form_field_set_id,omitempty" path:"form_field_set_id"`
   102  	CreateSnapshot                  *bool                 `url:"create_snapshot,omitempty" required:"false" json:"create_snapshot,omitempty" path:"create_snapshot"`
   103  	DontSeparateSubmissionsByFolder *bool                 `url:"dont_separate_submissions_by_folder,omitempty" required:"false" json:"dont_separate_submissions_by_folder,omitempty" path:"dont_separate_submissions_by_folder"`
   104  	ExpiresAt                       *time.Time            `url:"expires_at,omitempty" required:"false" json:"expires_at,omitempty" path:"expires_at"`
   105  	FinalizeSnapshot                *bool                 `url:"finalize_snapshot,omitempty" required:"false" json:"finalize_snapshot,omitempty" path:"finalize_snapshot"`
   106  	MaxUses                         int64                 `url:"max_uses,omitempty" required:"false" json:"max_uses,omitempty" path:"max_uses"`
   107  	Description                     string                `url:"description,omitempty" required:"false" json:"description,omitempty" path:"description"`
   108  	Note                            string                `url:"note,omitempty" required:"false" json:"note,omitempty" path:"note"`
   109  	Code                            string                `url:"code,omitempty" required:"false" json:"code,omitempty" path:"code"`
   110  	PathTemplate                    string                `url:"path_template,omitempty" required:"false" json:"path_template,omitempty" path:"path_template"`
   111  	PathTemplateTimeZone            string                `url:"path_template_time_zone,omitempty" required:"false" json:"path_template_time_zone,omitempty" path:"path_template_time_zone"`
   112  	Permissions                     BundlePermissionsEnum `url:"permissions,omitempty" required:"false" json:"permissions,omitempty" path:"permissions"`
   113  	PreviewOnly                     *bool                 `url:"preview_only,omitempty" required:"false" json:"preview_only,omitempty" path:"preview_only"`
   114  	RequireRegistration             *bool                 `url:"require_registration,omitempty" required:"false" json:"require_registration,omitempty" path:"require_registration"`
   115  	ClickwrapId                     int64                 `url:"clickwrap_id,omitempty" required:"false" json:"clickwrap_id,omitempty" path:"clickwrap_id"`
   116  	InboxId                         int64                 `url:"inbox_id,omitempty" required:"false" json:"inbox_id,omitempty" path:"inbox_id"`
   117  	RequireShareRecipient           *bool                 `url:"require_share_recipient,omitempty" required:"false" json:"require_share_recipient,omitempty" path:"require_share_recipient"`
   118  	SendEmailReceiptToUploader      *bool                 `url:"send_email_receipt_to_uploader,omitempty" required:"false" json:"send_email_receipt_to_uploader,omitempty" path:"send_email_receipt_to_uploader"`
   119  	SkipEmail                       *bool                 `url:"skip_email,omitempty" required:"false" json:"skip_email,omitempty" path:"skip_email"`
   120  	SkipName                        *bool                 `url:"skip_name,omitempty" required:"false" json:"skip_name,omitempty" path:"skip_name"`
   121  	SkipCompany                     *bool                 `url:"skip_company,omitempty" required:"false" json:"skip_company,omitempty" path:"skip_company"`
   122  	StartAccessOnDate               *time.Time            `url:"start_access_on_date,omitempty" required:"false" json:"start_access_on_date,omitempty" path:"start_access_on_date"`
   123  	SnapshotId                      int64                 `url:"snapshot_id,omitempty" required:"false" json:"snapshot_id,omitempty" path:"snapshot_id"`
   124  	WatermarkAttachmentFile         io.Writer             `url:"watermark_attachment_file,omitempty" required:"false" json:"watermark_attachment_file,omitempty" path:"watermark_attachment_file"`
   125  }
   126  
   127  // Send email(s) with a link to bundle
   128  type BundleShareParams struct {
   129  	Id         int64                    `url:"-,omitempty" required:"false" json:"-,omitempty" path:"id"`
   130  	To         []string                 `url:"to,omitempty" required:"false" json:"to,omitempty" path:"to"`
   131  	Note       string                   `url:"note,omitempty" required:"false" json:"note,omitempty" path:"note"`
   132  	Recipients []map[string]interface{} `url:"recipients,omitempty" required:"false" json:"recipients,omitempty" path:"recipients"`
   133  }
   134  
   135  type BundleUpdateParams struct {
   136  	Id                              int64                 `url:"-,omitempty" required:"false" json:"-,omitempty" path:"id"`
   137  	Paths                           []string              `url:"paths,omitempty" required:"false" json:"paths,omitempty" path:"paths"`
   138  	Password                        string                `url:"password,omitempty" required:"false" json:"password,omitempty" path:"password"`
   139  	FormFieldSetId                  int64                 `url:"form_field_set_id,omitempty" required:"false" json:"form_field_set_id,omitempty" path:"form_field_set_id"`
   140  	ClickwrapId                     int64                 `url:"clickwrap_id,omitempty" required:"false" json:"clickwrap_id,omitempty" path:"clickwrap_id"`
   141  	Code                            string                `url:"code,omitempty" required:"false" json:"code,omitempty" path:"code"`
   142  	CreateSnapshot                  *bool                 `url:"create_snapshot,omitempty" required:"false" json:"create_snapshot,omitempty" path:"create_snapshot"`
   143  	Description                     string                `url:"description,omitempty" required:"false" json:"description,omitempty" path:"description"`
   144  	DontSeparateSubmissionsByFolder *bool                 `url:"dont_separate_submissions_by_folder,omitempty" required:"false" json:"dont_separate_submissions_by_folder,omitempty" path:"dont_separate_submissions_by_folder"`
   145  	ExpiresAt                       *time.Time            `url:"expires_at,omitempty" required:"false" json:"expires_at,omitempty" path:"expires_at"`
   146  	FinalizeSnapshot                *bool                 `url:"finalize_snapshot,omitempty" required:"false" json:"finalize_snapshot,omitempty" path:"finalize_snapshot"`
   147  	InboxId                         int64                 `url:"inbox_id,omitempty" required:"false" json:"inbox_id,omitempty" path:"inbox_id"`
   148  	MaxUses                         int64                 `url:"max_uses,omitempty" required:"false" json:"max_uses,omitempty" path:"max_uses"`
   149  	Note                            string                `url:"note,omitempty" required:"false" json:"note,omitempty" path:"note"`
   150  	PathTemplate                    string                `url:"path_template,omitempty" required:"false" json:"path_template,omitempty" path:"path_template"`
   151  	PathTemplateTimeZone            string                `url:"path_template_time_zone,omitempty" required:"false" json:"path_template_time_zone,omitempty" path:"path_template_time_zone"`
   152  	Permissions                     BundlePermissionsEnum `url:"permissions,omitempty" required:"false" json:"permissions,omitempty" path:"permissions"`
   153  	PreviewOnly                     *bool                 `url:"preview_only,omitempty" required:"false" json:"preview_only,omitempty" path:"preview_only"`
   154  	RequireRegistration             *bool                 `url:"require_registration,omitempty" required:"false" json:"require_registration,omitempty" path:"require_registration"`
   155  	RequireShareRecipient           *bool                 `url:"require_share_recipient,omitempty" required:"false" json:"require_share_recipient,omitempty" path:"require_share_recipient"`
   156  	SendEmailReceiptToUploader      *bool                 `url:"send_email_receipt_to_uploader,omitempty" required:"false" json:"send_email_receipt_to_uploader,omitempty" path:"send_email_receipt_to_uploader"`
   157  	SkipCompany                     *bool                 `url:"skip_company,omitempty" required:"false" json:"skip_company,omitempty" path:"skip_company"`
   158  	StartAccessOnDate               *time.Time            `url:"start_access_on_date,omitempty" required:"false" json:"start_access_on_date,omitempty" path:"start_access_on_date"`
   159  	SkipEmail                       *bool                 `url:"skip_email,omitempty" required:"false" json:"skip_email,omitempty" path:"skip_email"`
   160  	SkipName                        *bool                 `url:"skip_name,omitempty" required:"false" json:"skip_name,omitempty" path:"skip_name"`
   161  	WatermarkAttachmentDelete       *bool                 `url:"watermark_attachment_delete,omitempty" required:"false" json:"watermark_attachment_delete,omitempty" path:"watermark_attachment_delete"`
   162  	WatermarkAttachmentFile         io.Writer             `url:"watermark_attachment_file,omitempty" required:"false" json:"watermark_attachment_file,omitempty" path:"watermark_attachment_file"`
   163  }
   164  
   165  type BundleDeleteParams struct {
   166  	Id int64 `url:"-,omitempty" required:"false" json:"-,omitempty" path:"id"`
   167  }
   168  
   169  func (b *Bundle) UnmarshalJSON(data []byte) error {
   170  	type bundle Bundle
   171  	var v bundle
   172  	if err := json.Unmarshal(data, &v); err != nil {
   173  		return lib.ErrorWithOriginalResponse{}.ProcessError(data, err, map[string]interface{}{})
   174  	}
   175  
   176  	*b = Bundle(v)
   177  	return nil
   178  }
   179  
   180  func (b *BundleCollection) UnmarshalJSON(data []byte) error {
   181  	type bundles BundleCollection
   182  	var v bundles
   183  	if err := json.Unmarshal(data, &v); err != nil {
   184  		return lib.ErrorWithOriginalResponse{}.ProcessError(data, err, []map[string]interface{}{})
   185  	}
   186  
   187  	*b = BundleCollection(v)
   188  	return nil
   189  }
   190  
   191  func (b *BundleCollection) ToSlice() *[]interface{} {
   192  	ret := make([]interface{}, len(*b))
   193  	for i, v := range *b {
   194  		ret[i] = v
   195  	}
   196  
   197  	return &ret
   198  }