MCPcopy Create free account
hub / github.com/DEROFDN/Engram / handleTELALinkRequest

Function handleTELALinkRequest

functions.go:3820–3899  ·  view source on GitHub ↗

Handle incoming TELA link requests and return params to be displayed in approval prompt

(linkParams TELALink_Params)

Source from the content-addressed store, hash-verified

3818
3819// Handle incoming TELA link requests and return params to be displayed in approval prompt
3820func 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")

Callers 2

AskPermissionForRequestFunction · 0.85
AskPermissionForRequestEFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected