Commit graph

2955 commits

Author SHA1 Message Date
Jon 529f0e4996
fix(LinkedIn Node): Remove unsupported description from image posts (#6446) 2023-06-16 10:13:54 +01:00
Jan Oberhauser ffd13f4541
fix(Split In Batches Node): Add "done" context to allow simple reset (#6437)
* fix(Split In Batches Nodes): Make "noItemsLeft" work as expected

*  Simplified things and just added "done" context
2023-06-16 11:06:46 +02:00
Michael Kret fddc69ee2c
feat(Gmail Node): Add reply to email (#6453)
Co-authored-by: Matthias Stallmann <feelgood.interface@gmail.com>
2023-06-16 11:44:37 +03:00
Michael Kret 1dbca44025
feat(Item Lists Node): Improvements (#6190) 2023-06-15 16:52:39 +03:00
agobrech 109442f38f
feat(AwsS3 Node): Small overhaul of the node with multipart uploading (#6017)
* Create new version for S3

* Update S3 to new aws s3 methods

* Switch from SAOP to Rest api

* Add multipart request

* Seperate stream into chunks and send the multipart

* Fix chunk into buffer

* Fix wrong sha256 mismatch

* Add abort multipart on error

* Complete multipart and list parts

* Change format to xml and add a minmum size of 5MB for each part

* Fix returned data for uploading a file

* Remove console.logs

* Seperate needed headers and multipart headers

* Throw error on aborting, remove console.logs

* Remove soap request from generic function

* Keep buffer

* Add unit test for V2

* fix upload file content body

* removed unused import

* Fix bug where the object was too smal and used only one part

* Fix naming for bucket name

* Fix issue with file name not returning data

* Add parent name

* Remove console.logs

* Add content type

* fix headears for other upload mode

---------

Co-authored-by: Marcus <marcus@n8n.io>
2023-06-15 13:19:22 +02:00
कारतोफ्फेलस्क्रिप्ट™ 004d38d82b
ci: Fix docs urls (no-changelog) (#6433) 2023-06-14 21:48:15 +02:00
Michael Kret 32fb419011
fix(Google Sheets Node): Return empty response if no rows updated (#6407) 2023-06-14 18:12:20 +03:00
Jon cc1b249d58
fix(Zulip Node): Remove trailing slash from the url (#6427) 2023-06-14 15:26:16 +01:00
agobrech 2aef9de148
fix(Schedule Trigger Node): Follow the correct Unix cron format for month and days of the week (#6401)
* Handle conversion to correct unix format

* Fix intervals, ranges for months

* fix regex to match 10, 11, 12

---------

Co-authored-by: Marcus <marcus@n8n.io>
2023-06-13 18:57:17 +02:00
Jon d041602754
fix(LinkedIn Node): Fix issue with posting as user or organization (#6414) 2023-06-13 15:44:35 +01:00
Deborah fecf62296b
docs: Fix Postgres trigger docs URL (#6403)
fix postgres trigger docs URL
2023-06-13 15:06:28 +01:00
greyliath 14fba6421e
fix: Fist name to First Name in certain nodes (no-changelog) (#6404)
* Update PersonDescription.ts

* Update LeadDescription.ts

* Update PersonDescription.ts
2023-06-08 15:45:47 +01:00
Jon 9396e7eb58
fix(Ldap Node): Add DN field to update operation (#6371) 2023-06-07 10:31:35 +01:00
agobrech 4488f93c39
feat: New trigger PostgreSQL (#5495)
* Boilerplate for PostgresTrigger

* Create trigger function as a query

* Add additional fields to customize trigger query

* Add customizable channel name && operation name

* Add concat () for function name

* Add hints and placeholders

* Add resource Locator to trigger postgres

* Add the ability for knowing trigger event

* Throw error for same function name

* Remove console.logs

* Remove schema from Chanel notifcation mode

* Add UUID and save trigger in workflow static data drop function

* Fix bug where wrongfully casted result in pgl

* Correctly drops the resources when manually executing the trigger

* Remove manual execution with special interaction

* Remove console.logs

* ♻️ Move related trigger functions to new file

* fix target using 'schema."tableName"' in quotes

To support targets with Uppercase table names

* Remove static Data and use node id for uuid

* Update deleting of the trigger and function

* Fix regex expression for channel name

* Change to drop cascade the trigger function

* Replace functions on restart if no name has been defined

* Parse payload result

* Improve handling with hyphens in names

* Remove duplicate code and clean up

* Add payload on delete

* Fix rlc

* fixing uppercase tableName

* fix multiple triggers/connections issues

* fixing rlc pgp.end() issues

* unify pgp init db method

* drop trigger only in createTrigger mode

---------

Co-authored-by: Marcus <marcus@n8n.io>
2023-06-07 11:01:57 +02:00
Michael Auerswald eaa8648f2b
fix(Date & Time Node): Reset responseData at end of loop (#6385)
reset responseData at end of loop
2023-06-06 20:58:15 +02:00
Michael Kret 05c4229cd7
refactor(core): Google service account remove duplicated functions (no-changelog) (#6368) 2023-06-06 19:19:24 +03:00
Jon 3a6af3b2a2
refactor(LoneScale List Node)!: Rename to LoneScale (#6337) 2023-06-06 16:13:58 +01:00
Iván Ovejero 62fc77363f
ci: Fix build (no-changelog) (#6391) 2023-06-06 15:08:29 +02:00
Deborah f5ac3f4fa9
docs: Fix trigger node link for Lonescale (#6376)
fix trigger node link
2023-06-05 10:30:25 +01:00
कारतोफ्फेलस्क्रिप्ट™ 968b733fd6
ci: Add support for Node.js 18 (#5793)
* ci: Start supporting Node.js 18

Node.js 18 became the active LTS on 2022-10-25, and Node.js 16 went into maintenance mode.
https://github.com/nodejs/Release#release-schedule

We should also slowly deprecate node 16 support, [as support for it is ends much earlier now, due to support for openssl 1.1.1 ending](https://nodejs.org/en/blog/announcements/nodejs16-eol).

* Remove hashing algorithms that are not available in newer node.js/openssl

- RSA-MD4
- RSA-MDC2
- md4
- md4WithRSAEncryption
- mdc2
- mdc2WithRSA

* in e2e tests, resolve `localhost` to ipv4 instead of ipv6
2023-06-02 15:23:28 +02:00
कारतोफ्फेलस्क्रिप्ट™ 406a405dd1
feat(Crypto Node): Add support for hash and hmac on binary data (#6359) 2023-06-02 11:22:21 +02:00
Milorad FIlipović 04cfa548af
feat(editor): Implement Resource Mapper component (#6207)
*  scaffolding
*  finished scaffolding
*  renamed types
*  updated subtitle
*  renamed functions file, UI updates
*  query parameters fixes, ui updates, refactoring
*  fixes for credentials test, setup for error parsing
*  rlc for schema and table, error handling tweaks
*  delete operation, new options
*  columns loader
*  linter fixes
*  where clauses setup
*  logic for processing where clauses
*  select operation
*  refactoring
*  data mode for insert and update, wip
*  data mapping, insert update, skip on conflict option
*  select columns with spaces fix
*  update operation update, wip
*  finished update operation
*  upsert operation
*  ui fixes
* Copy updates.
* Copy updates.
*  option to convert empty strings to nulls, schema checks
*  UI requested updates
*  ssh setup WIP
*  fixes, ssh WIP
*  ssh fixes, credentials
*  credentials testing update
*  uncaught error fix
*  clean up
*  address in use fix
*  improved error message
*  tests setup
*  unit tests wip
*  config files clean up
*  utils unit tests
*  refactoring
*  setup for testing operations, tests for deleteTable operation
*  executeQuery and insert operations tests
*  select, update, upsert operations tests
*  runQueries tests setup
*  hint to query
* Copy updates.
*  ui fixes
*  clean up
*  error message update
*  ui update
* Minor tweaks to query params decription.
* feat(Google Sheets Node): Implement Resource mapper in Google Sheets node (#5752)
*  Added initial resource mapping support in google sheets node
*  Wired mapping API endpoint with node-specific logic for fetching mapping fields
*  Implementing mapping fields logic for google sheets
*  Updating Google Sheets execute methods to support resource mapper fields
* 🚧 Added initial version of `ResourceLocator` component
* 👌 Added `update` mode to resource mapper modes
* 👌 Addressing PR feedback
* 👌 Removing leftover const reference
* 👕 Fixing lint errors
*  singlton for conections
*  credentials test fix, clean up
* feat(Postgres Node): Add resource mapper to new version of Postgres node (#5814)
*  scaffolding
*  finished scaffolding
*  renamed types
*  updated subtitle
*  renamed functions file, UI updates
*  query parameters fixes, ui updates, refactoring
*  fixes for credentials test, setup for error parsing
*  rlc for schema and table, error handling tweaks
*  delete operation, new options
*  columns loader
*  linter fixes
*  where clauses setup
*  logic for processing where clauses
*  select operation
*  refactoring
*  data mode for insert and update, wip
*  data mapping, insert update, skip on conflict option
*  select columns with spaces fix
*  update operation update, wip
*  finished update operation
*  upsert operation
*  ui fixes
* Copy updates.
* Copy updates.
*  option to convert empty strings to nulls, schema checks
*  UI requested updates
*  ssh setup WIP
*  fixes, ssh WIP
*  ssh fixes, credentials
*  credentials testing update
*  uncaught error fix
*  clean up
*  address in use fix
*  improved error message
*  tests setup
*  unit tests wip
*  config files clean up
*  utils unit tests
*  refactoring
*  setup for testing operations, tests for deleteTable operation
*  executeQuery and insert operations tests
*  select, update, upsert operations tests
*  runQueries tests setup
*  hint to query
* Copy updates.
*  ui fixes
*  clean up
*  error message update
*  ui update
* Minor tweaks to query params decription.
*  Updated Postgres node to use resource mapper component
*  Implemented postgres <-> resource mapper type mapping
*  Updated Postgres node execution to use resource mapper fields in v3
* 🔥 Removing unused import
---------
Co-authored-by: Michael Kret <michael.k@radency.com>
Co-authored-by: Giulio Andreini <g.andreini@gmail.com>

* feat(core): Resource editor componend P0 (#5970)
*  Added inital value of mapping mode dropdown
*  Finished mapping mode selector
*  Finished implementing mapping mode selector
*  Implemented 'Columns to match on' dropdown
*  Implemented `loadOptionsDependOn` support in resource mapper
*  Implemented initial version of mapping fields
*  Implementing dependant fields watcher in new component setup
*  Generating correct resource mapper field types. Added `supportAutoMap` to node specification and UI. Not showing fields with `display=false`. Pre-selecting matching columns if it's the only one
*  Handling matching columns correctly in UI
*  Saving and loading resourceMapper values in component
*  Implemented proper data saving and loading
*  ResourceMapper component refactor, fixing value save/load
*  Refactoring MatchingColumnSelect component. Updating Sheets node to use single key match and Postgres to use multi key
*  Updated Google Sheets node to work with the new UI
*  Updating Postgres Node to work with new UI
*  Additional loading indicator that shown if there is no mapping mode selector
*  Removing hard-coded values, fixing matching columns ordering, refactoring
*  Updating field names in nodes
*  Fixing minor UI issues
*  Implemented matching fields filter logic
*  Moving loading label outside of fields list
*  Added initial unit tests for resource mapper
*  Finished default rendering test
*  Test refactoring
*  Finished unit tests
* 🔨 Updating the way i18n is used in resource mapper components
* ✔️ Fixing value to match on logic for postgres node
*  Hiding mapping fields when auto-map mode is selected
*  Syncing selected mapping mode between components
*  Fixing dateTime input rendering and adding update check to Postgres node
*  Properly handling database connections. Sending null for empty string values.
* 💄 Updated wording in the error message for non-existing rows
*  Fixing issues with selected matching values
* ✔️ Updating unit tests after matching logic update
*  Updating matching columns when new fields are loaded
*  Defaulting to null for empty parameter values
*  Allowing zero as valid value for number imputs
*  Updated list of types that use datepicker as widger
*  Using text inputs for time types
*  Initial mapping field rework
*  Added new component for mapping fields, moved bit of logic from root component to matching selector, fixing some lint errors
*  Added tooltip for columns that cannot be deleted
*  Saving deleted values in parameter value
*  Implemented control to add/remove mapping fields
*  Syncing field list with add field dropdown when changing dependent values
*  Not showing removed fields in matching columns selector. Updating wording in matching columns selector description
*  Implementing disabled states for add/remove all fields options
*  Saving removed columns separately, updating copy
*  Implemented resource mapper values validation
*  Updated validation logic and error input styling
*  Validating resource mapper fields when new nodes are added
*  Using node field words in validation, refactoring resource mapper component
*  Implemented schema syncing and add/remove all fields
*  Implemented custom parameter actions
*  Implemented loading indicator in parameter options
* 🔨 Removing unnecessary constants and vue props
*  Handling default values properly
*  Fixing validation logic
* 👕 Fixing lint errors
*  Fixing type issues
*  Not showing fields by default if `addAllFields` is set to `false`
*  Implemented field type validation in resource mapper
*  Updated casing in copy, removed all/remove all option from bottom menu
*  Added auto mapping mode notice
*  Added support for more types in validation
*  Added support for enumerated values
*  Fixing imports after merging
*  Not showing removed fields in matching columns selector. Refactoring validation logic.
* 👕 Fixing imports
* ✔️ Updating unit tests
*  Added resource mapper schema tests
*  Removing `match` from resource mapper field definition, fixing matching columns loading
*  Fixed schema merging
*  update operation return data fix
*  review
* 🐛 Added missing import
* 💄 Updating parameter actions icon based on the ui review
* 💄 Updating word capitalisation in tooltips
* 💄 Added empty state to mapping fields list
* 💄 Removing asterisk from fields, updating tooltips for matching fields
*  Preventing matching fields from being removed by 'Remove All option'
*  Not showing hidden fields in the `Add field` dropdown
*  Added support for custom matching columns labels
*  query optimization
*  fix
*  Optimizing Postgres node enumeration logic
*  Added empty state for matching columns
*  Only fully loading fields if there is no schema fetched
*  Hiding mapping fields if there is no matching columns available in the schema
* ✔️ Fixing minor issues
*  Implemented runtime type validation
* 🔨 Refactoring validation logic
*  Implemented required check, added more custom messages
*  Skipping boolean type in required check
* Type check improvements
*  Only reloading fields if dependent values actually change
*  Adding item index to validation error title
*  Updating Postgres fetching logic, using resource mapper mode to determine if a field can be deleted
*  Resetting field values when adding them via the addAll option
*  Using minor version (2.2) for new Postgres node
*  Implemented proper date validation and type casting
* 👕 Consolidating typing
*  Added unit tests for type validations
* 👌 Addressing front-end review comments
*  More refactoring to address review changes
*  Updating leftover props
*  Added fallback for ISO dates with invalid timezones
* Added timestamp to datetime test cases
*  Reseting matching columns if operation changes
*  Not forcing auto-increment fields to be filled in in Postgres node. Handling null values
* 💄 Added a custom message for invalid dates
*  Better handling of JSON values
*  Updating codemirror readonly stauts based on component property, handling objects in json validation
* Deleting leftover console.log
*  Better time validation
*  Fixing build error after merging
* 👕 Fixing lint error
*  Updating node configuration values
*  Handling postgres arrays better
*  Handling SQL array syntax
*  Updating time validation rules to include timezone
*  Sending expressions that resolve to `null` or `undefined` by the resource mapper to delete cell content in Google Sheets
*  Allowing removed fields to be selected for match
*  Updated the query for fetching unique columns and primary keys
*  Optimizing the unique query
*  Setting timezone to all parsed dates
*  Addressing PR review feedback
*  Configuring Sheets node for production, minor vue component update
* New cases added to the TypeValidation test.
*  Tweaking validation rules for arrays/objects and updating test cases
---------
Co-authored-by: Michael Kret <michael.k@radency.com>
Co-authored-by: Giulio Andreini <g.andreini@gmail.com>
2023-05-31 11:56:09 +02:00
कारतोफ्फेलस्क्रिप्ट™ 54e3838dae
fix(Code Node): Fix item and items alias regression (#6331) 2023-05-30 12:56:55 +02:00
कारतोफ्फेलस्क्रिप्ट™ bcbec52552
fix(Code Node): Update vm2 to address CVE-2023-32313 (#6318)
GH advisory: https://github.com/advisories/GHSA-p5gc-c584-jj6v
2023-05-25 12:55:53 +02:00
कारतोफ्फेलस्क्रिप्ट™ 011d5778b1
fix(Execute Command Node): Block executions when command is empty (#6308) 2023-05-24 13:17:29 +02:00
Michael Kret 3f7c4f0ad4
feat(Execution Data Node): New node (#6247) 2023-05-24 14:00:10 +03:00
Yann ALEMAN 4b854333d4
feat(LoneScale Node): Add LoneScale node and Trigger node (#5146) 2023-05-23 12:52:54 +01:00
Jon ec393bc041
feat(Ldap Node): Add LDAP node (#4783) 2023-05-23 12:39:26 +01:00
Michael Kret d5c7e6f2cf
fix(SSH Node): Private key field as password and credential test (#6298) 2023-05-23 12:01:24 +03:00
Michael Kret bbe6d4c4db
fix(Strapi Node): Strapi credentials notice (#6289) 2023-05-23 12:00:02 +03:00
agobrech 4d9c8b07a9
fix(Wekan Node): Handle response correctly (#6296)
Fix bug when response wasn't array
2023-05-22 18:09:10 +02:00
agobrech f5950b201c
feat(RabbitMQ Node): Add mode for acknowledging and deleting from queue later in workflow (#6225)
* Add later in workflow mode

* Add new operation

* Acknowledge message in next node

* Add response and emit for responsePromiseHook

* Remove double success message, close channel correctly

* Answser messages correctly

* Remove option from delete operation

* move operation name to camelCase

* Fix versioning

* To remove: add action item in v1

* Add notice for delete from queue

* Correctly only execute only the delete operation

* Refactor delete from queue operator and add return last items

---------

Co-authored-by: Marcus <marcus@n8n.io>
2023-05-22 14:37:09 +02:00
Deborah 2d13b3f43f
fix(editor): UI copy fix for Date & Time node (no-changelog) (#6291)
* whether -> when

* lint fix

---------

Co-authored-by: Jonathan Bennetts <jonathan.bennetts@gmail.com>
2023-05-22 11:50:02 +01:00
Jon 2a2b6452dc
fix(ERPNext Node): Fix issue with credential test and add frappe cloud url (#6283) 2023-05-22 11:11:08 +01:00
Michael Kret be5d3264ad
fix(Postgres Node): Remove reusable connections (no-changelog) (#6259) 2023-05-19 16:42:24 +03:00
Jon 8a8fed0840
fix(Strava Trigger Node): Fix issue with delete events failing to display data (#6277) 2023-05-19 14:28:57 +01:00
Michael Kret 3569d53917
feat(SSH Node): Credentials test (#6279) 2023-05-19 16:03:23 +03:00
pemontto 8fe8aad6a7
feat(Send Email Node): Add content-id for email attachments (#3632) 2023-05-19 15:31:02 +03:00
Michael Kret 5bef91e3c8
fix(Google Calendar Node): All day option fix (#6274) 2023-05-19 10:39:39 +03:00
Bram Kn 401cffde57
feat(Gotify Node): Add support for self signed certificates (#6053) 2023-05-18 17:34:33 +01:00
Jon 000cacf736
docs: Remove missed beta text from Notion node (no-changelog) (#6166) 2023-05-18 17:33:08 +01:00
Michael Kret 8fdfa3b6b8
fix(OpenAI Node): Descriptive errors (#6270) 2023-05-18 17:20:56 +03:00
Michael Kret 421949067b
fix(SSH Node): Replace ~ with /home/username (#6269) 2023-05-18 14:56:51 +03:00
agobrech 8ae2d801d8
feat(Respond to Webhook Node): Move from Binary Buffer to Binary streaming (#5613)
* replace binary buffer with binary streaming

* Add binary assertion and remove duplicate code

* handle streams correctly

* fix binary response in `own` mode

* fix stream response missing headers

---------

Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <netroy@users.noreply.github.com>
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
Co-authored-by: Marcus <marcus@n8n.io>
2023-05-17 10:06:24 +02:00
Jon e72d564bf8
fix(Code Node): Restore help text (#6231) 2023-05-11 15:44:43 +01:00
Jon bd1bffcd53
feat(Google Ads Node): Update to support v13 (#6212) 2023-05-11 13:15:56 +01:00
कारतोफ्फेलस्क्रिप्ट™ f3bc6f19b6
feat: Create NPM node (#6177) 2023-05-10 12:37:26 +02:00
कारतोफ्फेलस्क्रिप्ट™ 18b60c4170
feat(Code Node): Set defaultVersion to 2 for V1 RC builds (no-changelog) (#6209)
This will enable python in the Code node.
2023-05-09 17:28:30 +02:00
agobrech 7d1d1f7872
feat(Date & Time Node): Overhaul of the node (#5904)
* Setup versionized node

* Fix node naming

* Set all possible actions

* Add Current Date operation

* Add timezone to current date

* feat add to date operator

* Change output field name to camel case

* Fix info box for luxons tip

* Feat subtract to date operation

* Feat format date operation

* Fix to node field for format date

* Feat rounding operation

* Feat get in between date operation

* Feat add extract date operation

* Add generic function for parsing date

* Remove moment methods from operations

* Change moment to luxon for the rest of the operations

* Fix Format date operation

* Fix format value

* Add timezone option for current date

* Add tests, improve workflow settings for testing, toString the results

* Change icon for V2

* Revert "Change icon for V2"

This reverts commit 46b59bea2e.

* Change workflow  test name

* Fix ui bug for custom format

* Fix default value for format operation

* Fix info box for rounding operation

* Change default for units for between time operation

* Inprove fields and resort time units

* Fix extract week number

* Resolve issue with formating and timezones

* Fix field name and unit order

*  restored removed test case, sync v1 with curent master

*  parseDate update to support timestamps, tests

* Keep same field for substract and add time

* Update unit test

* Improve visibility, add iso to string option

* Update option naming

---------

Co-authored-by: Michael Kret <michael.k@radency.com>
2023-05-08 17:34:14 +02:00
agobrech 2913e676e6
feat(HubSpot Node): Overhaul the HubSpot Node (#4337)
* 🎨 Change current defualt ressource to contact

* Change display name for list membership

* 🎨 Change display name for ressource properties

* 🔥 Remove Name & ID in Display name

* 🐛 Fix simplify data where behavior was wrong

* 🎨 Move simplfy output to additional fields

* Change data type from string to number for IDs

* Add tooltip for contact ID

* 🎨 Change tooltip for list of Id's

* Change name of fields and reorgaized options

* 🥅 Add clearer errors for some specific cases

* 🎨 changed filters in Deal get all

* Deprecate form ressource

*  add pipeline dropdown to auto fetch

* 🎨 Change direction's name

* 🎨 Change description of filter groups

* 🎨 Add validation and errors for maximum filters

*  Add ressource locator to all ressources

* 🎨 add tooltip for timestamp when using expressions

* add versioning

* 🐛 fixes small bugs and ui problems

* remove show options that was breaking custom prop

*  add ownership to deals

*  add notice for credential depreciation

* 🎨 Refactor names for RLC

* 🎨 Fixes to Deal

*  Inprove delete confirmation message

* 🎨 Fixe titles of fields

* 🎨 Fixe correct ressource hint

* 🎨 Improve error when requesting non existing ressource

* ️ Improve get deal

*  Improve search by domain for companies

*  Improve getting recently created deals

* 🎨 Improve versioning file structure

* 🥅 Improve error for unknown ids

*  Add filters to recently search for companies

*  Uniformize including properties for contact

*  Improve get all operation for Companies

* 🎨 Change filters name

* 🎨 Remove useless descriptions

* 🎨Improve description

*  Dynamically retrieve the correct operator for the properties

* 🥅 Improve error handeling

* 🥅 improve error when not finding the id

* ️Add searchable feature to Deal and contacts

* 🚨 Fix linting issues

* 🚨 Fix linting issues for V1 Hubspot

* 🐛 Fix pairedItem for v2 hubspot

* 🚨 Fix linting in HubSpot Description

* 🚨 More linting fixes

* Fix error handling

* Update endpoint for deleting object

* Fix label for recent actions

* 🐛 fix listMemberships typo in V1 and V2

* docs: Stop assuming the user's gender in code comments (after merge)

c87262a312

* fixing V1 GenericFunctions.ts api query limit as number

* Update description for ticket

* Add type to RLC

* Revert "Add type to RLC"

This reverts commit 578dacfb97.

* Add type to RLC engagement

---------

Co-authored-by: Marcus <marcus@n8n.io>
2023-05-08 15:15:13 +02:00