From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pbs-devel-bounces@lists.proxmox.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68])
	by lore.proxmox.com (Postfix) with ESMTPS id D1FE91FF2DA
	for <inbox@lore.proxmox.com>; Mon, 22 Jul 2024 11:50:27 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 7396B1F903;
	Mon, 22 Jul 2024 11:51:01 +0200 (CEST)
Mime-Version: 1.0
Date: Mon, 22 Jul 2024 11:50:57 +0200
Message-Id: <D2VZ3QT294RL.2P96JUSP6FNM8@proxmox.com>
To: "Lukas Wagner" <l.wagner@proxmox.com>, "Proxmox VE development
 discussion" <pve-devel@lists.proxmox.com>, "Proxmox Backup Server
 development discussion" <pbs-devel@lists.proxmox.com>
From: "Max Carrara" <m.carrara@proxmox.com>
X-Mailer: aerc 0.17.0-72-g6a84f1331f1c
References: <20240712112755.123630-1-l.wagner@proxmox.com>
 <20240712112755.123630-8-l.wagner@proxmox.com>
 <D2RXBG48RG67.34N70TQH567BQ@proxmox.com>
 <b1779060-cf93-407b-81d1-bd773150b4a5@proxmox.com>
In-Reply-To: <b1779060-cf93-407b-81d1-bd773150b4a5@proxmox.com>
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.030 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DMARC_MISSING             0.1 Missing DMARC policy
 KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment
 SPF_HELO_NONE           0.001 SPF: HELO does not publish an SPF Record
 SPF_PASS               -0.001 SPF: sender matches SPF record
Subject: Re: [pbs-devel] [pve-devel] [PATCH manager v2 07/12] api: add
 routes for webhook notification endpoints
X-BeenThere: pbs-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox Backup Server development discussion
 <pbs-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pbs-devel>, 
 <mailto:pbs-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pbs-devel/>
List-Post: <mailto:pbs-devel@lists.proxmox.com>
List-Help: <mailto:pbs-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel>, 
 <mailto:pbs-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox Backup Server development discussion
 <pbs-devel@lists.proxmox.com>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: pbs-devel-bounces@lists.proxmox.com
Sender: "pbs-devel" <pbs-devel-bounces@lists.proxmox.com>

On Mon Jul 22, 2024 at 9:37 AM CEST, Lukas Wagner wrote:
>
>
> On  2024-07-17 17:36, Max Carrara wrote:
> > On Fri Jul 12, 2024 at 1:27 PM CEST, Lukas Wagner wrote:
> >> These just call the API implementation via the perl-rs bindings.
> >>
> >> Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
> >> ---
> >>  PVE/API2/Cluster/Notifications.pm | 263 +++++++++++++++++++++++++++++-
> >>  1 file changed, 262 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/PVE/API2/Cluster/Notifications.pm b/PVE/API2/Cluster/Notifications.pm
> >> index 10b611c9..eae2d436 100644
> >> --- a/PVE/API2/Cluster/Notifications.pm
> >> +++ b/PVE/API2/Cluster/Notifications.pm
> >> @@ -108,6 +108,7 @@ __PACKAGE__->register_method ({
> >>  	    { name => 'gotify' },
> >>  	    { name => 'sendmail' },
> >>  	    { name => 'smtp' },
> >> +	    { name => 'webhook' },
> >>  	];
> >>  
> >>  	return $result;
> >> @@ -144,7 +145,7 @@ __PACKAGE__->register_method ({
> >>  		'type' => {
> >>  		    description => 'Type of the target.',
> >>  		    type  => 'string',
> >> -		    enum => [qw(sendmail gotify smtp)],
> >> +		    enum => [qw(sendmail gotify smtp webhook)],
> >>  		},
> >>  		'comment' => {
> >>  		    description => 'Comment',
> >> @@ -1094,6 +1095,266 @@ __PACKAGE__->register_method ({
> >>      }
> >>  });
> >>  
> >> +my $webhook_properties = {
> >> +    name => {
> >> +	description => 'The name of the endpoint.',
> >> +	type => 'string',
> >> +	format => 'pve-configid',
> >> +    },
> >> +    url => {
> >> +	description => 'Server URL',
> >> +	type => 'string',
> >> +    },
> >> +    method => {
> >> +	description => 'HTTP method',
> >> +	type => 'string',
> >> +	enum => [qw(post put get)],
> >> +    },
> >> +    header => {
> >> +	description => 'HTTP headers to set. These have to be formatted as'
> >> +	  . ' a property string in the format name=<name>,value=<base64 of value>',
> >> +	type => 'array',
> >> +	items => {
> >> +	    type => 'string',
> >> +	},
> >> +	optional => 1,
> >> +    },
> >> +    body => {
> >> +	description => 'HTTP body, base64 encoded',
> >> +	type => 'string',
> >> +	optional => 1,
> >> +    },
> >> +    secret => {
> >> +	description => 'Secrets to set. These have to be formatted as'
> >> +	  . ' a property string in the format name=<name>,value=<base64 of value>',
> >> +	type => 'array',
> >> +	items => {
> >> +	    type => 'string',
> >> +	},
> >> +	optional => 1,
> >> +    },
> >> +    comment => {
> >> +	description => 'Comment',
> >> +	type => 'string',
> >> +	optional => 1,
> >> +    },
> >> +    disable => {
> >> +	description => 'Disable this target',
> >> +	type => 'boolean',
> >> +	optional => 1,
> >> +	default => 0,
> >> +    },
> >> +};
> >> +
> >> +__PACKAGE__->register_method ({
> >> +    name => 'get_webhook_endpoints',
> >> +    path => 'endpoints/webhook',
> >> +    method => 'GET',
> >> +    description => 'Returns a list of all webhook endpoints',
> >> +    protected => 1,
> >> +    permissions => {
> >> +	check => ['perm', '/mapping/notifications', ['Mapping.Modify']],
> >> +	check => ['perm', '/mapping/notifications', ['Mapping.Audit']],
> >> +    },
> >> +    parameters => {
> >> +	additionalProperties => 0,
> >> +	properties => {},
> >> +    },
> >> +    returns => {
> >> +	type => 'array',
> >> +	items => {
> >> +	    type => 'object',
> >> +	    properties => {
> >> +		%$webhook_properties,
> > 
> > Would prefer `$webhook_properties->%*` here (postfix dereferencing) -
> > even though not explicitly stated in our style guide, we use that kind
> > of syntax for calling subroutines behind a reference, e.g.
> > `$foo->($arg)` instead of `&$foo($arg)`.
> > 
>
> I kinda prefer the brevity of the prefix variant in this case. Are there
> any pitfalls/problems with the prefix that I'm not aware of? If not, I'd prefer
> to keep this as is, I used the syntax in many other spots in this file ;)

I personally have no hard feelings if you keep it tbh. Postfix
dereference is mainly useful if you have e.g. a nested hash (or rather,
makes more sense) because of how the code is usually read. For example,

    %$foo->{bar}->{baz}

vs

    $foo->{bar}->{baz}->%*

I'd argue that the main benefit is that it's easier to read for people
who aren't as familiar with Perl, but before this gets too bikesheddy,
I'm personally fine if you keep it as-is for simple cases like the above
:P


_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel