Handle incoming TELA link requests and return params to be displayed in approval prompt
(linkParams TELALink_Params)
| 3818 | |
| 3819 | // Handle incoming TELA link requests and return params to be displayed in approval prompt |
| 3820 | func handleTELALinkRequest(linkParams TELALink_Params) (params string, err error) { |
| 3821 | var args []string |
| 3822 | var target string |
| 3823 | target, args, err = tela.ParseTELALink(linkParams.TelaLink) |
| 3824 | if err != nil { |
| 3825 | return |
| 3826 | } |
| 3827 | |
| 3828 | switch target { |
| 3829 | case "tela": |
| 3830 | switch args[0] { |
| 3831 | case "open": // open TELA content similar to a hyperlink |
| 3832 | if len(args) < 2 || len(args[1]) != 64 { |
| 3833 | err = fmt.Errorf("/open/ request has invalid scid argument") |
| 3834 | return |
| 3835 | } |
| 3836 | |
| 3837 | // Engram will check content rating and show it in prompt |
| 3838 | var rating tela.Rating_Result |
| 3839 | rating, err = tela.GetRating(args[1], session.Daemon, 0) |
| 3840 | if err != nil { |
| 3841 | return |
| 3842 | } |
| 3843 | |
| 3844 | var index tela.INDEX |
| 3845 | index, err = tela.GetINDEXInfo(args[1], session.Daemon) |
| 3846 | if err != nil { |
| 3847 | return |
| 3848 | } |
| 3849 | |
| 3850 | var linkDisplay TELALink_Display |
| 3851 | linkDisplay.Name = index.NameHdr |
| 3852 | linkDisplay.Descr = index.DescrHdr |
| 3853 | linkDisplay.DURL = index.DURL |
| 3854 | linkDisplay.TelaLink = linkParams.TelaLink |
| 3855 | rating.Ratings = nil // don't need to show each individual rating in prompt |
| 3856 | linkDisplay.Rating = &rating |
| 3857 | |
| 3858 | params = fmt.Sprintf("%+v", linkDisplay) |
| 3859 | if indentParams, err := json.MarshalIndent(linkDisplay, "", " "); err == nil { |
| 3860 | params = string(indentParams) |
| 3861 | } |
| 3862 | default: |
| 3863 | err = fmt.Errorf("invalid argument: %s", args[0]) |
| 3864 | return |
| 3865 | } |
| 3866 | case "engram": |
| 3867 | if len(args) < 3 { |
| 3868 | err = fmt.Errorf("invalid engram link format") |
| 3869 | return |
| 3870 | } |
| 3871 | |
| 3872 | switch args[0] { |
| 3873 | case "asset": |
| 3874 | switch args[1] { |
| 3875 | case "manager": // open asset manager module with scid data |
| 3876 | if len(args[2]) != 64 { |
| 3877 | err = fmt.Errorf("/manager/ request has invalid scid argument") |
no outgoing calls
no test coverage detected