@@ -2,6 +2,7 @@ package coomer
22
33import (
44 "fmt"
5+ "maps"
56
67 "github.com/samber/lo"
78 "github.com/vegidio/go-sak/fetch"
@@ -12,10 +13,12 @@ var f = fetch.New(nil, 10)
1213var baseUrl string
1314var cssHeaders = map [string ]string {"Accept" : "text/css" }
1415
15- func getProfile (service string , user string ) (* Profile , error ) {
16+ func getProfile (service string , user string , headers map [string ]string ) (* Profile , error ) {
17+ maps .Copy (headers , cssHeaders )
18+
1619 var profile * Profile
1720 url := fmt .Sprintf (baseUrl + "/api/v1/%s/user/%s/profile" , service , user )
18- resp , err := f .GetResult (url , cssHeaders , & profile )
21+ resp , err := f .GetResult (url , headers , & profile )
1922
2023 if err != nil {
2124 return nil , err
@@ -26,16 +29,18 @@ func getProfile(service string, user string) (*Profile, error) {
2629 return profile , nil
2730}
2831
29- func getUser (profile Profile ) <- chan types.Result [Response ] {
32+ func getUser (profile Profile , headers map [ string ] string ) <- chan types.Result [Response ] {
3033 out := make (chan types.Result [Response ])
3134
35+ maps .Copy (headers , cssHeaders )
36+
3237 go func () {
3338 defer close (out )
3439
3540 for offset := 0 ; offset <= profile .PostCount ; offset += 50 {
3641 var posts []Post
3742 url := fmt .Sprintf (baseUrl + "/api/v1/%s/user/%s/posts?o=%d" , profile .Service , profile .Id , offset )
38- resp , err := f .GetResult (url , cssHeaders , & posts )
43+ resp , err := f .GetResult (url , headers , & posts )
3944
4045 if err != nil {
4146 out <- types.Result [Response ]{Err : err }
@@ -49,7 +54,7 @@ func getUser(profile Profile) <-chan types.Result[Response] {
4954 }
5055
5156 for _ , post := range posts {
52- result := <- getPost (profile , post .Id )
57+ result := <- getPost (profile , post .Id , headers )
5358 if result .Err != nil {
5459 out <- types.Result [Response ]{Err : result .Err }
5560 continue
@@ -65,15 +70,17 @@ func getUser(profile Profile) <-chan types.Result[Response] {
6570 return out
6671}
6772
68- func getPost (profile Profile , postId string ) <- chan types.Result [Response ] {
73+ func getPost (profile Profile , postId string , headers map [ string ] string ) <- chan types.Result [Response ] {
6974 out := make (chan types.Result [Response ])
7075
76+ maps .Copy (headers , cssHeaders )
77+
7178 go func () {
7279 defer close (out )
7380
7481 var response Response
7582 url := fmt .Sprintf (baseUrl + "/api/v1/%s/user/%s/post/%s" , profile .Service , profile .Id , postId )
76- resp , err := f .GetResult (url , cssHeaders , & response )
83+ resp , err := f .GetResult (url , headers , & response )
7784
7885 if err != nil {
7986 out <- types.Result [Response ]{Err : err }
@@ -91,7 +98,7 @@ func getPost(profile Profile, postId string) <-chan types.Result[Response] {
9198 })
9299
93100 if biggestRevision .Post .RevisionId > 0 && (len (response .Images )+ len (response .Videos )) < len (biggestRevision .Post .Attachments ) {
94- out <- getRevision (profile , postId , biggestRevision .Post .RevisionId )
101+ out <- getRevision (profile , postId , biggestRevision .Post .RevisionId , headers )
95102 return
96103 }
97104
@@ -101,10 +108,10 @@ func getPost(profile Profile, postId string) <-chan types.Result[Response] {
101108 return out
102109}
103110
104- func getRevision (profile Profile , postId string , revisionId int ) types.Result [Response ] {
111+ func getRevision (profile Profile , postId string , revisionId int , headers map [ string ] string ) types.Result [Response ] {
105112 var response ResponseRevision
106113 url := fmt .Sprintf (baseUrl + "/api/v1/%s/user/%s/post/%s/revision/%d" , profile .Service , profile .Id , postId , revisionId )
107- resp , err := f .GetResult (url , cssHeaders , & response )
114+ resp , err := f .GetResult (url , headers , & response )
108115
109116 if err != nil {
110117 return types.Result [Response ]{Err : err }
0 commit comments