Skip to content

Commit 369f71e

Browse files
authored
Merge pull request #82 from beclab/hertz_recons
feat: http hertz recons
2 parents 561313b + de1cd34 commit 369f71e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+1900
-2476
lines changed

pkg/drivers/base/handler.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,9 @@ package base
22

33
import (
44
"context"
5-
"net/http"
65
)
76

87
type HandlerParam struct {
9-
Ctx context.Context
10-
Owner string `json:"owner"`
11-
ResponseWriter http.ResponseWriter
12-
Request *http.Request
8+
Ctx context.Context
9+
Owner string `json:"owner"`
1310
}

pkg/drivers/clouds/cloud.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -502,7 +502,7 @@ func (s *CloudStorage) generateListingData(fileParam *models.FileParam,
502502
firstItem.FsType = fileParam.FileType
503503
firstItem.FsExtend = fileParam.Extend
504504
firstItem.FsPath = firstItem.Path
505-
dataChan <- fmt.Sprintf("data: %s\n\n", common.ToJson(firstItem))
505+
dataChan <- common.ToJson(firstItem)
506506
streamFiles = streamFiles[1:]
507507
}
508508

pkg/drivers/posix/posix/posix.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ func (s *PosixStorage) Raw(contextArgs *models.HttpContextArgs) (*models.RawHand
141141
FileName: fileData.Name,
142142
FileModified: fileData.ModTime,
143143
Reader: r,
144+
FileLength: fileData.Size,
144145
}, nil
145146
}
146147

@@ -457,7 +458,7 @@ func (s *PosixStorage) generateListingData(fs afero.Fs, fileParam *models.FilePa
457458
}
458459
streamFiles = append(nestedItems, streamFiles[1:]...)
459460
} else {
460-
dataChan <- fmt.Sprintf("data: %s\n\n", common.ToJson(firstItem))
461+
dataChan <- common.ToJson(firstItem)
461462
streamFiles = streamFiles[1:]
462463
}
463464

pkg/drivers/sync/seahub/callback.go

Lines changed: 3 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
package seahub
22

33
import (
4-
"encoding/json"
54
"errors"
65
"files/pkg/common"
76
"files/pkg/drivers/sync/seahub/seaserv"
87
"k8s.io/klog/v2"
9-
"net/http"
10-
"strings"
118
)
129

13-
func createDefaultLibrary(newUsername string) (string, error) {
10+
func CreateDefaultLibrary(newUsername string) (string, error) {
1411
username := newUsername
1512
if username == "" {
1613
return "", errors.New("username is empty")
@@ -55,45 +52,7 @@ func createDefaultLibrary(newUsername string) (string, error) {
5552
return defaultRepo, nil
5653
}
5754

58-
func CallbackCreateHandler(w http.ResponseWriter, r *http.Request) (int, error) {
59-
var data map[string]interface{}
60-
if err := json.NewDecoder(r.Body).Decode(&data); err != nil {
61-
klog.Infof("Error parsing request body: %v", err)
62-
return http.StatusBadRequest, err
63-
}
64-
klog.Infof("Received data: %v", data)
65-
66-
bflName, ok := data["name"].(string)
67-
if !ok {
68-
klog.Infoln("Name field is missing or not a string")
69-
return http.StatusBadRequest, nil
70-
}
71-
72-
bflName = strings.TrimSpace(bflName)
73-
if bflName != "" {
74-
newUsername := bflName + "@auth.local"
75-
klog.Infof("Try to create user for %s", newUsername)
76-
77-
isNew, err := createUser(newUsername)
78-
if err != nil {
79-
klog.Infof("Error creating user: %v", err)
80-
return http.StatusInternalServerError, err
81-
}
82-
83-
if isNew {
84-
repoId, err := createDefaultLibrary(newUsername)
85-
if err != nil {
86-
klog.Infof("Create default library for %s failed: %v", newUsername, err)
87-
} else {
88-
klog.Infof("Create default library %s for %s successfully!", repoId, newUsername)
89-
}
90-
}
91-
}
92-
93-
return 0, nil
94-
}
95-
96-
func createUser(username string) (bool, error) {
55+
func CreateUser(username string) (bool, error) {
9756
allUsers, err := seaserv.ListAllUsers()
9857
if err != nil {
9958
klog.Errorf("Error listing users: %v", err)
@@ -119,27 +78,7 @@ func createUser(username string) (bool, error) {
11978
return true, nil
12079
}
12180

122-
func CallbackDeleteHandler(w http.ResponseWriter, r *http.Request) (int, error) {
123-
var requestData map[string]string
124-
if err := json.NewDecoder(r.Body).Decode(&requestData); err != nil {
125-
return http.StatusBadRequest, err
126-
}
127-
defer r.Body.Close()
128-
129-
bflName, exists := requestData["name"]
130-
if !exists {
131-
return http.StatusBadRequest, errors.New("Missing name field")
132-
}
133-
username := bflName + "@auth.local"
134-
135-
err := removeUser(username)
136-
if err != nil {
137-
return http.StatusInternalServerError, err
138-
}
139-
return 0, nil
140-
}
141-
142-
func removeUser(username string) error {
81+
func RemoveUser(username string) error {
14382
allUsers, err := seaserv.ListAllUsers()
14483
if err != nil {
14584
klog.Errorf("Error listing users: %v", err)

pkg/drivers/sync/seahub/searpc/rpcclient.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ func (c *SeafServerThreadedRpcClient) SeafileGetCommitList(repoId string, offset
6262
repoId, offset, limit)
6363
}
6464

65-
func (c *SeafServerThreadedRpcClient) SeafileGanarateRepoToken(repoId, email string) (interface{}, error) {
66-
return CreateRPCMethod(c, "seafile_ganarate_repo_token", "string", []string{"string", "string"})(repoId, email)
65+
func (c *SeafServerThreadedRpcClient) SeafileGenerateRepoToken(repoId, email string) (interface{}, error) {
66+
return CreateRPCMethod(c, "seafile_generate_repo_token", "string", []string{"string", "string"})(repoId, email)
6767
}
6868

6969
func (c *SeafServerThreadedRpcClient) DeleteRepoTokensByEmail(email string) (interface{}, error) {

pkg/drivers/sync/seahub/seaserv/api.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ func (s *SeafileAPI) GetOwnedRepoList(username string, retCorrupted bool, start
183183
}
184184

185185
func (s *SeafileAPI) GenerateRepoToken(repoId, username string) (string, error) {
186-
ret, err := s.rpcClient.SeafileGanarateRepoToken(repoId, username)
186+
ret, err := s.rpcClient.SeafileGenerateRepoToken(repoId, username)
187187
if err != nil {
188188
return "", fmt.Errorf("generate repo token failed: %v", err)
189189
}

pkg/drivers/sync/service.go

Lines changed: 0 additions & 24 deletions
This file was deleted.

pkg/drivers/sync/sync.go

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"files/pkg/models"
1212
"fmt"
1313
"io"
14+
"io/ioutil"
1415
"mime/multipart"
1516
"net/http"
1617
"net/url"
@@ -23,7 +24,6 @@ import (
2324

2425
type SyncStorage struct {
2526
handler *base.HandlerParam
26-
service *Service
2727
paste *models.PasteParam
2828
}
2929

@@ -55,7 +55,6 @@ type File struct {
5555
func NewSyncStorage(handler *base.HandlerParam) *SyncStorage {
5656
return &SyncStorage{
5757
handler: handler,
58-
service: NewService(handler),
5958
}
6059
}
6160

@@ -177,14 +176,18 @@ func (s *SyncStorage) Raw(contextArgs *models.HttpContextArgs) (*models.RawHandl
177176
if err != nil {
178177
return nil, err
179178
}
180-
http.Redirect(s.service.ResponseWriter, s.service.Request, string(data), http.StatusFound)
179+
return &models.RawHandlerResponse{
180+
FileName: string(data),
181+
Redirect: true,
182+
}, nil
181183
}
182184
}
183185

184186
return &models.RawHandlerResponse{
185187
FileName: fileName,
186188
FileModified: time.Time{},
187189
Reader: bytes.NewReader(data),
190+
FileLength: int64(len(data)),
188191
}, nil
189192
}
190193

@@ -327,12 +330,40 @@ func (s *SyncStorage) Edit(contextArgs *models.HttpContextArgs) (*models.EditHan
327330
return nil, err
328331
}
329332

330-
postBody, err := s.service.Get(updateUrl, "POST", body.Bytes())
333+
client := &http.Client{}
334+
req, err := http.NewRequest("POST", updateUrl, bytes.NewReader(body.Bytes()))
335+
if err != nil {
336+
return nil, err
337+
}
338+
req.Header = contextArgs.QueryParam.Header.Clone()
339+
340+
resp, err := client.Do(req)
341+
if err != nil {
342+
return nil, err
343+
}
344+
345+
if resp == nil {
346+
klog.Errorf("not get response from %s", updateUrl)
347+
return nil, err
348+
}
349+
350+
respBody, err := ioutil.ReadAll(resp.Body)
351+
if err != nil {
352+
return nil, err
353+
}
354+
355+
var responseMap map[string]interface{}
356+
err = json.Unmarshal(respBody, &responseMap)
357+
if err != nil {
358+
return nil, err
359+
}
360+
defer resp.Body.Close()
361+
331362
if err != nil {
332363
klog.Errorf("Sync edit, path: %s, error: %v", fileParam.Path, err)
333364
return nil, err
334365
}
335-
klog.Infof("Sync edit, path: %s, resp: %s", fileParam.Path, string(postBody))
366+
klog.Infof("Sync edit, path: %s, resp: %s", fileParam.Path, string(respBody))
336367

337368
return nil, nil
338369
}
@@ -368,7 +399,7 @@ func (s *SyncStorage) generateDirentsData(fileParam *models.FileParam, filesData
368399

369400
streamFiles = append(nestFilesData.Items, streamFiles[1:]...)
370401
} else {
371-
dataChan <- fmt.Sprintf("data: %s\n\n", common.ToJson(firstItem))
402+
dataChan <- common.ToJson(firstItem)
372403
streamFiles = streamFiles[1:]
373404
}
374405

0 commit comments

Comments
 (0)