Skip to content

Commit e3a1548

Browse files
committed
work in progress - support for attachment
1 parent 10ff16b commit e3a1548

File tree

3 files changed

+92
-12
lines changed

3 files changed

+92
-12
lines changed

cmd/attachraw-demo/main.go

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"flag"
6+
"fmt"
7+
"log"
8+
"net/http"
9+
"os"
10+
"path/filepath"
11+
"time"
12+
13+
"github.com/koltyakov/gosip"
14+
edgeondemand "github.com/vba-excel/sp-edgeondemand"
15+
"github.com/vba-excel/spapi"
16+
)
17+
18+
func main() {
19+
var (
20+
cfgPath = flag.String("cfg", "private.json", "caminho para private.json")
21+
siteURL = flag.String("site", "", "override do Site URL (opcional)")
22+
list = flag.String("list", "", "nome da lista (título OU caminho server-relative)")
23+
itemID = flag.Int("id", 0, "ID do item")
24+
file = flag.String("file", "", "ficheiro a anexar")
25+
tout = flag.Int("t", 60, "timeout em segundos")
26+
)
27+
flag.Parse()
28+
29+
if *list == "" || *itemID <= 0 || *file == "" {
30+
log.Fatalf("uso: go run . -cfg private.json -site https://tenant.sharepoint.com/sites/XYZ -list MinhaLista -id 123 -file C:\\Temp\\teste.txt")
31+
}
32+
33+
auth := &edgeondemand.AuthCnfg{}
34+
if err := auth.ReadConfig(*cfgPath); err != nil {
35+
log.Fatalf("ler %s: %v", *cfgPath, err)
36+
}
37+
if *siteURL != "" {
38+
auth.SiteURL = *siteURL
39+
}
40+
41+
httpTransport := &http.Transport{
42+
Proxy: http.ProxyFromEnvironment,
43+
TLSHandshakeTimeout: 10 * time.Second,
44+
MaxIdleConns: 100,
45+
IdleConnTimeout: 90 * time.Second,
46+
ExpectContinueTimeout: 1 * time.Second,
47+
}
48+
httpClient := http.Client{
49+
Timeout: 30 * time.Second,
50+
Transport: httpTransport,
51+
}
52+
53+
spClient := &gosip.SPClient{
54+
Client: httpClient,
55+
AuthCnfg: auth,
56+
ConfigPath: *cfgPath,
57+
}
58+
svc := spapi.New(spClient)
59+
60+
fh, err := os.Open(*file)
61+
if err != nil {
62+
log.Fatalf("abrir ficheiro: %v", err)
63+
}
64+
defer fh.Close()
65+
66+
ctx, cancel := context.WithTimeout(context.Background(), time.Duration(*tout)*time.Second)
67+
defer cancel()
68+
69+
baseName := filepath.Base(*file)
70+
log.Printf("A anexar %q ao item %d da lista %q ...", baseName, *itemID, *list)
71+
72+
info, err := svc.AddAttachmentRaw(ctx, *list, *itemID, baseName, fh)
73+
if err != nil {
74+
log.Fatalf("AddAttachmentRaw falhou: %v", err)
75+
}
76+
77+
fmt.Println("✓ Anexo adicionado com sucesso:")
78+
fmt.Printf(" FileName: %s\n", info.FileName)
79+
fmt.Printf(" ServerRelativeURL: %s\n", info.ServerRelativeURL)
80+
}

go.mod

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ module sharepoint-go
33
go 1.25.3
44

55
require (
6-
github.com/koltyakov/gosip v0.0.0-20250809193426-13b579cbf9c5
7-
github.com/vba-excel/sp-edgeondemand v0.1.3
8-
github.com/vba-excel/spapi v0.1.3
6+
github.com/koltyakov/gosip v0.0.0-20251103153836-f65ddcd368b3
7+
github.com/vba-excel/sp-edgeondemand v0.1.4
8+
github.com/vba-excel/spapi v0.1.4
99
)
1010

1111
require (
@@ -19,6 +19,6 @@ require (
1919
github.com/gobwas/ws v1.4.0 // indirect
2020
github.com/google/uuid v1.6.0 // indirect
2121
github.com/patrickmn/go-cache v2.1.0+incompatible // indirect
22-
github.com/vba-excel/edgecookies v0.1.0 // indirect
22+
github.com/vba-excel/edgecookies v0.1.4 // indirect
2323
golang.org/x/sys v0.37.0 // indirect
2424
)

go.sum

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXe
3838
github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
3939
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
4040
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
41-
github.com/koltyakov/gosip v0.0.0-20250809193426-13b579cbf9c5 h1:A1VTCghodJgfDz8vHXBj2FjWcezOgXMU+ZjOpew6EVc=
42-
github.com/koltyakov/gosip v0.0.0-20250809193426-13b579cbf9c5/go.mod h1:iGa6Hztk2pu8iB71KSaQTUCJP8zn7V0VasbPrI6UxAw=
41+
github.com/koltyakov/gosip v0.0.0-20251103153836-f65ddcd368b3 h1:5DKFkozf3M6LXTjAekizplJNM+w6g6T4skDvIRLT9mM=
42+
github.com/koltyakov/gosip v0.0.0-20251103153836-f65ddcd368b3/go.mod h1:iGa6Hztk2pu8iB71KSaQTUCJP8zn7V0VasbPrI6UxAw=
4343
github.com/koltyakov/lorca v0.1.9-0.20230410140121-2f2b4c1ec5f4 h1:xGYaSsV0wouDcF1xWOHHYyfjdIoaxHD7IgGcgEpaRGc=
4444
github.com/koltyakov/lorca v0.1.9-0.20230410140121-2f2b4c1ec5f4/go.mod h1:+IUvlBJz7t189cEBL5r+17vOHhtTxVGBeeUcUq7uVZo=
4545
github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80 h1:6Yzfa6GP0rIo/kULo2bwGEkFvCePZ3qHDDTC3/J9Swo=
@@ -50,12 +50,12 @@ github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde h1:x0TT0RDC7UhA
5050
github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0=
5151
github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
5252
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
53-
github.com/vba-excel/edgecookies v0.1.0 h1:Ckj4H+tkXdh0vVAnxmxqE2hu1d3Q+5Btkl2HO5VJI6A=
54-
github.com/vba-excel/edgecookies v0.1.0/go.mod h1:2HMvHwUormyejaJSc95S92BJZEozKs1IUAxFJp4wbK8=
55-
github.com/vba-excel/sp-edgeondemand v0.1.3 h1:yht8mwmKRcj29pqF701hTnv5GKQAjnowEBIHwkZVf4Y=
56-
github.com/vba-excel/sp-edgeondemand v0.1.3/go.mod h1:hJ36XqzVPgjCrfZX+BI0TI/LSJU2GMCqHjow1Kuwj7o=
57-
github.com/vba-excel/spapi v0.1.3 h1:WaO1M4YoSoe3qx66a3AMkz+YGLBISq90ZnOShnUq8QQ=
58-
github.com/vba-excel/spapi v0.1.3/go.mod h1:yoZTLUH8rGUfe63D5G8xRw+A7/fTVCZFMpxteQeWmCw=
53+
github.com/vba-excel/edgecookies v0.1.4 h1:L8C7vfAcMY9yHEXva86JqeZ+5SD4sP4ZwRYu1pViYrM=
54+
github.com/vba-excel/edgecookies v0.1.4/go.mod h1:2HMvHwUormyejaJSc95S92BJZEozKs1IUAxFJp4wbK8=
55+
github.com/vba-excel/sp-edgeondemand v0.1.4 h1:DPQL3tJ4TrCiaflqCa0T2133XvEU3NN2nkh9fcZZkV0=
56+
github.com/vba-excel/sp-edgeondemand v0.1.4/go.mod h1:fa0XzzOya1E2t+eqYl1YBfxeelLq/d+qGuhIqO9ykkU=
57+
github.com/vba-excel/spapi v0.1.4 h1:Tr3c8Dv5VcSQgB37HMyMwRFQTV6ZefAepltnxizy39s=
58+
github.com/vba-excel/spapi v0.1.4/go.mod h1:yoZTLUH8rGUfe63D5G8xRw+A7/fTVCZFMpxteQeWmCw=
5959
golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
6060
golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
6161
golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=

0 commit comments

Comments
 (0)