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

     1  package files_sdk
     2  
     3  import (
     4  	"encoding/json"
     5  	"time"
     6  
     7  	lib "github.com/Files-com/files-sdk-go/v3/lib"
     8  )
     9  
    10  type Automation struct {
    11  	Id                               int64                  `json:"id,omitempty" path:"id,omitempty" url:"id,omitempty"`
    12  	AlwaysOverwriteSizeMatchingFiles *bool                  `json:"always_overwrite_size_matching_files,omitempty" path:"always_overwrite_size_matching_files,omitempty" url:"always_overwrite_size_matching_files,omitempty"`
    13  	Automation                       string                 `json:"automation,omitempty" path:"automation,omitempty" url:"automation,omitempty"`
    14  	Deleted                          *bool                  `json:"deleted,omitempty" path:"deleted,omitempty" url:"deleted,omitempty"`
    15  	Description                      string                 `json:"description,omitempty" path:"description,omitempty" url:"description,omitempty"`
    16  	DestinationReplaceFrom           string                 `json:"destination_replace_from,omitempty" path:"destination_replace_from,omitempty" url:"destination_replace_from,omitempty"`
    17  	DestinationReplaceTo             string                 `json:"destination_replace_to,omitempty" path:"destination_replace_to,omitempty" url:"destination_replace_to,omitempty"`
    18  	Destinations                     []string               `json:"destinations,omitempty" path:"destinations,omitempty" url:"destinations,omitempty"`
    19  	Disabled                         *bool                  `json:"disabled,omitempty" path:"disabled,omitempty" url:"disabled,omitempty"`
    20  	FlattenDestinationStructure      *bool                  `json:"flatten_destination_structure,omitempty" path:"flatten_destination_structure,omitempty" url:"flatten_destination_structure,omitempty"`
    21  	GroupIds                         []int64                `json:"group_ids,omitempty" path:"group_ids,omitempty" url:"group_ids,omitempty"`
    22  	IgnoreLockedFolders              *bool                  `json:"ignore_locked_folders,omitempty" path:"ignore_locked_folders,omitempty" url:"ignore_locked_folders,omitempty"`
    23  	Interval                         string                 `json:"interval,omitempty" path:"interval,omitempty" url:"interval,omitempty"`
    24  	LastModifiedAt                   *time.Time             `json:"last_modified_at,omitempty" path:"last_modified_at,omitempty" url:"last_modified_at,omitempty"`
    25  	Name                             string                 `json:"name,omitempty" path:"name,omitempty" url:"name,omitempty"`
    26  	OverwriteFiles                   *bool                  `json:"overwrite_files,omitempty" path:"overwrite_files,omitempty" url:"overwrite_files,omitempty"`
    27  	Path                             string                 `json:"path,omitempty" path:"path,omitempty" url:"path,omitempty"`
    28  	PathTimeZone                     string                 `json:"path_time_zone,omitempty" path:"path_time_zone,omitempty" url:"path_time_zone,omitempty"`
    29  	RecurringDay                     int64                  `json:"recurring_day,omitempty" path:"recurring_day,omitempty" url:"recurring_day,omitempty"`
    30  	Schedule                         map[string]interface{} `json:"schedule,omitempty" path:"schedule,omitempty" url:"schedule,omitempty"`
    31  	HumanReadableSchedule            string                 `json:"human_readable_schedule,omitempty" path:"human_readable_schedule,omitempty" url:"human_readable_schedule,omitempty"`
    32  	ScheduleDaysOfWeek               []int64                `json:"schedule_days_of_week,omitempty" path:"schedule_days_of_week,omitempty" url:"schedule_days_of_week,omitempty"`
    33  	ScheduleTimesOfDay               []string               `json:"schedule_times_of_day,omitempty" path:"schedule_times_of_day,omitempty" url:"schedule_times_of_day,omitempty"`
    34  	ScheduleTimeZone                 string                 `json:"schedule_time_zone,omitempty" path:"schedule_time_zone,omitempty" url:"schedule_time_zone,omitempty"`
    35  	Source                           string                 `json:"source,omitempty" path:"source,omitempty" url:"source,omitempty"`
    36  	SyncIds                          []int64                `json:"sync_ids,omitempty" path:"sync_ids,omitempty" url:"sync_ids,omitempty"`
    37  	TriggerActions                   []string               `json:"trigger_actions,omitempty" path:"trigger_actions,omitempty" url:"trigger_actions,omitempty"`
    38  	Trigger                          string                 `json:"trigger,omitempty" path:"trigger,omitempty" url:"trigger,omitempty"`
    39  	UserId                           int64                  `json:"user_id,omitempty" path:"user_id,omitempty" url:"user_id,omitempty"`
    40  	UserIds                          []int64                `json:"user_ids,omitempty" path:"user_ids,omitempty" url:"user_ids,omitempty"`
    41  	Value                            map[string]interface{} `json:"value,omitempty" path:"value,omitempty" url:"value,omitempty"`
    42  	WebhookUrl                       string                 `json:"webhook_url,omitempty" path:"webhook_url,omitempty" url:"webhook_url,omitempty"`
    43  	Destination                      string                 `json:"destination,omitempty" path:"destination,omitempty" url:"destination,omitempty"`
    44  }
    45  
    46  func (a Automation) Identifier() interface{} {
    47  	return a.Id
    48  }
    49  
    50  type AutomationCollection []Automation
    51  
    52  type AutomationTriggerEnum string
    53  
    54  func (u AutomationTriggerEnum) String() string {
    55  	return string(u)
    56  }
    57  
    58  func (u AutomationTriggerEnum) Enum() map[string]AutomationTriggerEnum {
    59  	return map[string]AutomationTriggerEnum{
    60  		"daily":           AutomationTriggerEnum("daily"),
    61  		"custom_schedule": AutomationTriggerEnum("custom_schedule"),
    62  		"webhook":         AutomationTriggerEnum("webhook"),
    63  		"email":           AutomationTriggerEnum("email"),
    64  		"action":          AutomationTriggerEnum("action"),
    65  	}
    66  }
    67  
    68  type AutomationEnum string
    69  
    70  func (u AutomationEnum) String() string {
    71  	return string(u)
    72  }
    73  
    74  func (u AutomationEnum) Enum() map[string]AutomationEnum {
    75  	return map[string]AutomationEnum{
    76  		"create_folder": AutomationEnum("create_folder"),
    77  		"delete_file":   AutomationEnum("delete_file"),
    78  		"copy_file":     AutomationEnum("copy_file"),
    79  		"move_file":     AutomationEnum("move_file"),
    80  		"as2_send":      AutomationEnum("as2_send"),
    81  		"run_sync":      AutomationEnum("run_sync"),
    82  	}
    83  }
    84  
    85  type AutomationListParams struct {
    86  	SortBy      map[string]interface{} `url:"sort_by,omitempty" required:"false" json:"sort_by,omitempty" path:"sort_by"`
    87  	Filter      Automation             `url:"filter,omitempty" required:"false" json:"filter,omitempty" path:"filter"`
    88  	FilterGt    map[string]interface{} `url:"filter_gt,omitempty" required:"false" json:"filter_gt,omitempty" path:"filter_gt"`
    89  	FilterGteq  map[string]interface{} `url:"filter_gteq,omitempty" required:"false" json:"filter_gteq,omitempty" path:"filter_gteq"`
    90  	FilterLt    map[string]interface{} `url:"filter_lt,omitempty" required:"false" json:"filter_lt,omitempty" path:"filter_lt"`
    91  	FilterLteq  map[string]interface{} `url:"filter_lteq,omitempty" required:"false" json:"filter_lteq,omitempty" path:"filter_lteq"`
    92  	WithDeleted *bool                  `url:"with_deleted,omitempty" required:"false" json:"with_deleted,omitempty" path:"with_deleted"`
    93  	ListParams
    94  }
    95  
    96  type AutomationFindParams struct {
    97  	Id int64 `url:"-,omitempty" required:"false" json:"-,omitempty" path:"id"`
    98  }
    99  
   100  type AutomationCreateParams struct {
   101  	Source                           string                 `url:"source,omitempty" required:"false" json:"source,omitempty" path:"source"`
   102  	Destination                      string                 `url:"destination,omitempty" required:"false" json:"destination,omitempty" path:"destination"`
   103  	Destinations                     []string               `url:"destinations,omitempty" required:"false" json:"destinations,omitempty" path:"destinations"`
   104  	DestinationReplaceFrom           string                 `url:"destination_replace_from,omitempty" required:"false" json:"destination_replace_from,omitempty" path:"destination_replace_from"`
   105  	DestinationReplaceTo             string                 `url:"destination_replace_to,omitempty" required:"false" json:"destination_replace_to,omitempty" path:"destination_replace_to"`
   106  	Interval                         string                 `url:"interval,omitempty" required:"false" json:"interval,omitempty" path:"interval"`
   107  	Path                             string                 `url:"path,omitempty" required:"false" json:"path,omitempty" path:"path"`
   108  	SyncIds                          string                 `url:"sync_ids,omitempty" required:"false" json:"sync_ids,omitempty" path:"sync_ids"`
   109  	UserIds                          string                 `url:"user_ids,omitempty" required:"false" json:"user_ids,omitempty" path:"user_ids"`
   110  	GroupIds                         string                 `url:"group_ids,omitempty" required:"false" json:"group_ids,omitempty" path:"group_ids"`
   111  	ScheduleDaysOfWeek               []int64                `url:"schedule_days_of_week,omitempty" required:"false" json:"schedule_days_of_week,omitempty" path:"schedule_days_of_week"`
   112  	ScheduleTimesOfDay               []string               `url:"schedule_times_of_day,omitempty" required:"false" json:"schedule_times_of_day,omitempty" path:"schedule_times_of_day"`
   113  	ScheduleTimeZone                 string                 `url:"schedule_time_zone,omitempty" required:"false" json:"schedule_time_zone,omitempty" path:"schedule_time_zone"`
   114  	AlwaysOverwriteSizeMatchingFiles *bool                  `url:"always_overwrite_size_matching_files,omitempty" required:"false" json:"always_overwrite_size_matching_files,omitempty" path:"always_overwrite_size_matching_files"`
   115  	Description                      string                 `url:"description,omitempty" required:"false" json:"description,omitempty" path:"description"`
   116  	Disabled                         *bool                  `url:"disabled,omitempty" required:"false" json:"disabled,omitempty" path:"disabled"`
   117  	FlattenDestinationStructure      *bool                  `url:"flatten_destination_structure,omitempty" required:"false" json:"flatten_destination_structure,omitempty" path:"flatten_destination_structure"`
   118  	IgnoreLockedFolders              *bool                  `url:"ignore_locked_folders,omitempty" required:"false" json:"ignore_locked_folders,omitempty" path:"ignore_locked_folders"`
   119  	Name                             string                 `url:"name,omitempty" required:"false" json:"name,omitempty" path:"name"`
   120  	OverwriteFiles                   *bool                  `url:"overwrite_files,omitempty" required:"false" json:"overwrite_files,omitempty" path:"overwrite_files"`
   121  	PathTimeZone                     string                 `url:"path_time_zone,omitempty" required:"false" json:"path_time_zone,omitempty" path:"path_time_zone"`
   122  	Trigger                          AutomationTriggerEnum  `url:"trigger,omitempty" required:"false" json:"trigger,omitempty" path:"trigger"`
   123  	TriggerActions                   []string               `url:"trigger_actions,omitempty" required:"false" json:"trigger_actions,omitempty" path:"trigger_actions"`
   124  	Value                            map[string]interface{} `url:"value,omitempty" required:"false" json:"value,omitempty" path:"value"`
   125  	RecurringDay                     int64                  `url:"recurring_day,omitempty" required:"false" json:"recurring_day,omitempty" path:"recurring_day"`
   126  	Automation                       AutomationEnum         `url:"automation,omitempty" required:"true" json:"automation,omitempty" path:"automation"`
   127  }
   128  
   129  // Manually run automation
   130  type AutomationManualRunParams struct {
   131  	Id int64 `url:"-,omitempty" required:"false" json:"-,omitempty" path:"id"`
   132  }
   133  
   134  type AutomationUpdateParams struct {
   135  	Id                               int64                  `url:"-,omitempty" required:"false" json:"-,omitempty" path:"id"`
   136  	Source                           string                 `url:"source,omitempty" required:"false" json:"source,omitempty" path:"source"`
   137  	Destination                      string                 `url:"destination,omitempty" required:"false" json:"destination,omitempty" path:"destination"`
   138  	Destinations                     []string               `url:"destinations,omitempty" required:"false" json:"destinations,omitempty" path:"destinations"`
   139  	DestinationReplaceFrom           string                 `url:"destination_replace_from,omitempty" required:"false" json:"destination_replace_from,omitempty" path:"destination_replace_from"`
   140  	DestinationReplaceTo             string                 `url:"destination_replace_to,omitempty" required:"false" json:"destination_replace_to,omitempty" path:"destination_replace_to"`
   141  	Interval                         string                 `url:"interval,omitempty" required:"false" json:"interval,omitempty" path:"interval"`
   142  	Path                             string                 `url:"path,omitempty" required:"false" json:"path,omitempty" path:"path"`
   143  	SyncIds                          string                 `url:"sync_ids,omitempty" required:"false" json:"sync_ids,omitempty" path:"sync_ids"`
   144  	UserIds                          string                 `url:"user_ids,omitempty" required:"false" json:"user_ids,omitempty" path:"user_ids"`
   145  	GroupIds                         string                 `url:"group_ids,omitempty" required:"false" json:"group_ids,omitempty" path:"group_ids"`
   146  	ScheduleDaysOfWeek               []int64                `url:"schedule_days_of_week,omitempty" required:"false" json:"schedule_days_of_week,omitempty" path:"schedule_days_of_week"`
   147  	ScheduleTimesOfDay               []string               `url:"schedule_times_of_day,omitempty" required:"false" json:"schedule_times_of_day,omitempty" path:"schedule_times_of_day"`
   148  	ScheduleTimeZone                 string                 `url:"schedule_time_zone,omitempty" required:"false" json:"schedule_time_zone,omitempty" path:"schedule_time_zone"`
   149  	AlwaysOverwriteSizeMatchingFiles *bool                  `url:"always_overwrite_size_matching_files,omitempty" required:"false" json:"always_overwrite_size_matching_files,omitempty" path:"always_overwrite_size_matching_files"`
   150  	Description                      string                 `url:"description,omitempty" required:"false" json:"description,omitempty" path:"description"`
   151  	Disabled                         *bool                  `url:"disabled,omitempty" required:"false" json:"disabled,omitempty" path:"disabled"`
   152  	FlattenDestinationStructure      *bool                  `url:"flatten_destination_structure,omitempty" required:"false" json:"flatten_destination_structure,omitempty" path:"flatten_destination_structure"`
   153  	IgnoreLockedFolders              *bool                  `url:"ignore_locked_folders,omitempty" required:"false" json:"ignore_locked_folders,omitempty" path:"ignore_locked_folders"`
   154  	Name                             string                 `url:"name,omitempty" required:"false" json:"name,omitempty" path:"name"`
   155  	OverwriteFiles                   *bool                  `url:"overwrite_files,omitempty" required:"false" json:"overwrite_files,omitempty" path:"overwrite_files"`
   156  	PathTimeZone                     string                 `url:"path_time_zone,omitempty" required:"false" json:"path_time_zone,omitempty" path:"path_time_zone"`
   157  	Trigger                          AutomationTriggerEnum  `url:"trigger,omitempty" required:"false" json:"trigger,omitempty" path:"trigger"`
   158  	TriggerActions                   []string               `url:"trigger_actions,omitempty" required:"false" json:"trigger_actions,omitempty" path:"trigger_actions"`
   159  	Value                            map[string]interface{} `url:"value,omitempty" required:"false" json:"value,omitempty" path:"value"`
   160  	RecurringDay                     int64                  `url:"recurring_day,omitempty" required:"false" json:"recurring_day,omitempty" path:"recurring_day"`
   161  	Automation                       AutomationEnum         `url:"automation,omitempty" required:"false" json:"automation,omitempty" path:"automation"`
   162  }
   163  
   164  type AutomationDeleteParams struct {
   165  	Id int64 `url:"-,omitempty" required:"false" json:"-,omitempty" path:"id"`
   166  }
   167  
   168  func (a *Automation) UnmarshalJSON(data []byte) error {
   169  	type automation Automation
   170  	var v automation
   171  	if err := json.Unmarshal(data, &v); err != nil {
   172  		return lib.ErrorWithOriginalResponse{}.ProcessError(data, err, map[string]interface{}{})
   173  	}
   174  
   175  	*a = Automation(v)
   176  	return nil
   177  }
   178  
   179  func (a *AutomationCollection) UnmarshalJSON(data []byte) error {
   180  	type automations AutomationCollection
   181  	var v automations
   182  	if err := json.Unmarshal(data, &v); err != nil {
   183  		return lib.ErrorWithOriginalResponse{}.ProcessError(data, err, []map[string]interface{}{})
   184  	}
   185  
   186  	*a = AutomationCollection(v)
   187  	return nil
   188  }
   189  
   190  func (a *AutomationCollection) ToSlice() *[]interface{} {
   191  	ret := make([]interface{}, len(*a))
   192  	for i, v := range *a {
   193  		ret[i] = v
   194  	}
   195  
   196  	return &ret
   197  }