@@ -7,15 +7,15 @@ import (
77 "fmt"
88 "net/http"
99 "os"
10+ "os/exec"
1011 "path/filepath"
1112 "pinata/internal/common"
1213 "pinata/internal/config"
1314 "pinata/internal/types"
1415 "pinata/internal/utils"
16+ "runtime"
1517 "strings"
1618 "time"
17-
18- "github.com/skratchdot/open-golang/open"
1919)
2020
2121func FindGatewayDomain () ([]byte , error ) {
@@ -174,38 +174,46 @@ func GetAccessLink(cid string, expires int, network string) (types.GetSignedURLR
174174 return response , nil
175175}
176176
177- func Convert (cid string ) ( string , error ) {
178- domain , err := FindGatewayDomain ( )
177+ func OpenCID (cid string , network string ) error {
178+ networkParam , err := config . GetNetworkParam ( network )
179179 if err != nil {
180- return " " , err
180+ return fmt . Errorf ( "problem getting network parameter: %w " , err )
181181 }
182182
183- url := fmt .Sprintf ("https://%s/ipfs/%s" , domain , cid )
184- fmt .Println (url )
185-
186- return url , nil
187- }
188-
189- func OpenCID (cid string , network string ) error {
190- if network == "public" {
191- url , err := Convert (cid )
192- if err != nil {
193- return fmt .Errorf ("problem creating URL: %w" , err )
194- }
195- err = open .Run (url )
183+ var url string
184+ if networkParam == "public" {
185+ domain , err := FindGatewayDomain ()
196186 if err != nil {
197- return fmt .Errorf ("problem opening URL : %w" , err )
187+ return fmt .Errorf ("problem finding gateway domain : %w" , err )
198188 }
199- return nil
189+ url = fmt . Sprintf ( "https://%s/ipfs/%s" , string ( domain ), cid )
200190 } else {
201- data , err := GetAccessLink (cid , 30 , network )
191+ resp , err := GetAccessLink (cid , 30 , networkParam )
202192 if err != nil {
203193 return fmt .Errorf ("problem creating URL: %w" , err )
204194 }
205- err = open .Run (data .Data )
206- if err != nil {
207- return fmt .Errorf ("problem opening URL: %w" , err )
208- }
209- return nil
195+
196+ url = resp .Data
197+ url = strings .ReplaceAll (url , "\\ u0026" , "&" )
198+ url = strings .Trim (url , "\" " )
199+ }
200+
201+ fmt .Printf ("Opening URL: %s\n " , url )
202+
203+ switch runtime .GOOS {
204+ case "darwin" :
205+ err = exec .Command ("open" , url ).Start ()
206+ case "windows" :
207+ err = exec .Command ("rundll32" , "url.dll,FileProtocolHandler" , url ).Start ()
208+ case "linux" :
209+ err = exec .Command ("xdg-open" , url ).Start ()
210+ default :
211+ err = fmt .Errorf ("unsupported platform" )
212+ }
213+
214+ if err != nil {
215+ return fmt .Errorf ("problem opening URL: %w" , err )
210216 }
217+
218+ return nil
211219}
0 commit comments