GetHomeNetwork returns the home network of an end device.
(ctx context.Context, joinEUI, devEUI types.EUI64, authorizer Authorizer)
| 817 | |
| 818 | // GetHomeNetwork returns the home network of an end device. |
| 819 | func (js *JoinServer) GetHomeNetwork(ctx context.Context, joinEUI, devEUI types.EUI64, authorizer Authorizer) (*EndDeviceHomeNetwork, error) { |
| 820 | if err := authorizer.RequireAuthorized(ctx); err != nil { |
| 821 | return nil, err |
| 822 | } |
| 823 | |
| 824 | dev, err := js.devices.GetByEUI(ctx, joinEUI, devEUI, |
| 825 | []string{ |
| 826 | "net_id", |
| 827 | "network_server_address", |
| 828 | }, |
| 829 | ) |
| 830 | if err != nil { |
| 831 | return nil, errRegistryOperation.WithCause(err) |
| 832 | } |
| 833 | ctx = dev.Context |
| 834 | if entityAuth, ok := authorizer.(EntityAuthorizer); ok { |
| 835 | if err := entityAuth.RequireEntityContext(ctx); err != nil { |
| 836 | return nil, err |
| 837 | } |
| 838 | } |
| 839 | netID := dev.NetId |
| 840 | |
| 841 | if netID == nil { |
| 842 | sets, err := js.applicationActivationSettings.GetByID(ctx, dev.Ids.ApplicationIds, []string{ |
| 843 | "home_net_id", |
| 844 | }) |
| 845 | if err != nil { |
| 846 | if !errors.IsNotFound(err) { |
| 847 | return nil, errGetApplicationActivationSettings.WithCause(err) |
| 848 | } |
| 849 | return nil, nil |
| 850 | } |
| 851 | netID = sets.HomeNetId |
| 852 | } |
| 853 | // TODO: Return NSID (https://github.com/TheThingsNetwork/lorawan-stack/issues/4741). |
| 854 | return &EndDeviceHomeNetwork{ |
| 855 | NetID: types.MustNetID(netID), |
| 856 | NetworkServerAddress: dev.NetworkServerAddress, |
| 857 | }, nil |
| 858 | } |
nothing calls this directly
no test coverage detected