feat(ModemAuthentication): add pin

This commit is contained in:
2025-09-29 13:47:55 +02:00
parent 73fe819c9c
commit 0e0ff22a46
3 changed files with 33 additions and 15 deletions

View File

@@ -5,6 +5,7 @@ type SetModemOptions struct {
Type *string
Username *string
Password *string
Pin *string
}
type SetModemOptionsFunc func(opts *SetModemOptions)
@@ -34,8 +35,15 @@ func WithUsername(value string) SetModemOptionsFunc {
opts.Username = &value
}
}
func WithPassword(value string) SetModemOptionsFunc {
return func(opts *SetModemOptions) {
opts.Password = &value
}
}
func WithPin(value string) SetModemOptionsFunc {
return func(opts *SetModemOptions) {
opts.Pin = &value
}
}

View File

@@ -3,12 +3,13 @@ package model
// type : null, pap_chap, pap, chap
// if type selected, username and password are mandatory
type ModemAuthentication struct {
Authentication struct {
Apn string `json:"apn"`
Authentication *struct {
Apn string `json:"apn,omitempty"`
Type string `json:"type,omitempty"`
Username string `json:"username,omitempty"`
Password string `json:"password,omitempty"`
} `json:"authentication"`
} `json:"authentication,omitempty"`
Pin string `json:"pin,omitempty"`
}
type ModemConfiguration struct {

View File

@@ -366,20 +366,29 @@ func (o *Operations) SetBaseCorrections(ctx context.Context, funcs ...protocol.S
func (o *Operations) SetModem(ctx context.Context, funcs ...protocol.SetModemOptionsFunc) error {
opts := protocol.NewSetModemOptions(funcs...)
modem := &model.ModemAuthentication{}
if opts.Apn != nil {
modem.Authentication.Apn = *opts.Apn
if opts.Pin != nil {
modem.Pin = *opts.Pin
}
if opts.Type != nil {
modem.Authentication.Type = *opts.Type
}
if opts.Password != nil {
modem.Authentication.Password = *opts.Password
}
if opts.Username != nil {
modem.Authentication.Username = *opts.Username
if opts.Apn != nil || opts.Type != nil || opts.Username != nil || opts.Password != nil {
modem.Authentication = &struct {
Apn string `json:"apn,omitempty"`
Type string `json:"type,omitempty"`
Username string `json:"username,omitempty"`
Password string `json:"password,omitempty"`
}{}
if opts.Apn != nil {
modem.Authentication.Apn = *opts.Apn
}
if opts.Type != nil {
modem.Authentication.Type = *opts.Type
}
if opts.Username != nil {
modem.Authentication.Username = *opts.Username
}
if opts.Password != nil {
modem.Authentication.Password = *opts.Password
}
}
if _, err := o.PostModem(ctx, modem); err != nil {