Skip to content

Commit 281bb59

Browse files
committed
Code refactor
1 parent 59a8cc5 commit 281bb59

23 files changed

Lines changed: 128 additions & 285 deletions

StartAPIServer.go

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,5 @@ func awaitExit(httpServer *services.APIService, db *gorm.DB) {
6969
log.Info("HTTPs server shutdown complete")
7070
}
7171

72-
// Close db connection
73-
if db != nil {
74-
// err := db.Close()
75-
// if err != nil {
76-
// log.Warn(err)
77-
// }
78-
log.Info("Database shutdown complete")
79-
}
80-
8172
log.Info("Shutting down complete")
82-
os.Exit(0)
8373
}

handlers/AuthHandler.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,12 @@ import (
77
)
88

99
/*
10-
The AuthHandler is a wrapper for supported Authorization mechanisms. Currently
11-
Only Bearer token are supported which are provided by an "Authorization" header inside the request
10+
A wrapper for supported Authorization mechanisms. Currently Only Bearer token
11+
are supported which are provided by an "Authorization" header inside the request
1212
*/
1313

14-
var (
15-
// ErrorTokenInvalid error if token is invalid
16-
ErrorTokenInvalid error = errors.New("Token invalid")
17-
)
14+
// ErrorTokenInvalid error if token is invalid
15+
var ErrorTokenInvalid error = errors.New("Token invalid")
1816

1917
// AuthHandler handler for http auth
2018
type AuthHandler struct {

handlers/Errors.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,31 @@ import (
55
"strings"
66
)
77

8+
const (
9+
// NotFoundError error from server
10+
NotFoundError string = "Not found"
11+
// ActionNotAllowed error from server
12+
ActionNotAllowed string = "Action not allowed"
13+
// WrongLength error from server
14+
WrongLength string = "Wrong length"
15+
// ServerError error from server
16+
ServerError string = "Server Error"
17+
// WrongInputFormatError wrong user input
18+
WrongInputFormatError string = "Wrong inputFormat!"
19+
// InvalidTokenError token is not valid
20+
InvalidTokenError string = "Token not valid"
21+
// InvalidCallbackURL token is not valid
22+
InvalidCallbackURL string = "Callback url is invalid"
23+
// BatchSizeTooLarge batch is too large
24+
BatchSizeTooLarge string = "BatchSize soo large!"
25+
// WrongIntegerFormat integer is probably no integer
26+
WrongIntegerFormat string = "Number is string"
27+
// MultipleSourceNameErr err name already exists
28+
MultipleSourceNameErr string = "You can't have multiple sources with the same name"
29+
// UserIsInvalidErr err if user is invalid
30+
UserIsInvalidErr string = "user is invalid"
31+
)
32+
833
var (
934
// RErrNotFound request error if something
1035
// was requested but wasn't found

handlers/FileAttrHandler.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,12 @@ func AttributeHandler(handlerData web.HandlerData, w http.ResponseWriter, r *htt
9797
case "get":
9898
{
9999
var tags []models.Tag
100-
err := handlerData.Db.Model(&models.Tag{}).Where("namespace_id=?", namespace.ID).Find(&tags).Error
100+
err := handlerData.Db.Model(&models.Tag{}).Distinct("Name").Where("namespace_id=?", namespace.ID).Find(&tags).Error
101101
if err != nil {
102102
return err
103103
}
104104

105-
sendResponse(w, models.ResponseSuccess, "", models.TagArrToStringArr(tags))
105+
sendResponse(w, libdm.ResponseSuccess, "", models.TagArrToStringArr(tags))
106106
return nil
107107
}
108108
case "create":
@@ -125,7 +125,7 @@ func AttributeHandler(handlerData web.HandlerData, w http.ResponseWriter, r *htt
125125
return err
126126
}
127127

128-
sendResponse(w, models.ResponseSuccess, "", nil)
128+
sendResponse(w, libdm.ResponseSuccess, "", nil)
129129
return nil
130130
}
131131
}
@@ -175,12 +175,12 @@ func AttributeHandler(handlerData web.HandlerData, w http.ResponseWriter, r *htt
175175
case "get":
176176
{
177177
var groups []models.Group
178-
err := handlerData.Db.Model(&models.Group{}).Where("namespace_id=?", namespace.ID).Find(&groups).Error
178+
err := handlerData.Db.Model(&models.Group{}).Distinct("Name").Where("namespace_id=?", namespace.ID).Find(&groups).Error
179179
if err != nil {
180180
return err
181181
}
182182

183-
sendResponse(w, models.ResponseSuccess, "", models.GroupArrToStringArr(groups))
183+
sendResponse(w, libdm.ResponseSuccess, "", models.GroupArrToStringArr(groups))
184184
return nil
185185
}
186186
case "create":
@@ -206,7 +206,7 @@ func AttributeHandler(handlerData web.HandlerData, w http.ResponseWriter, r *htt
206206
}
207207
}
208208

209-
sendResponse(w, models.ResponseSuccess, "", nil)
209+
sendResponse(w, libdm.ResponseSuccess, "", nil)
210210
return nil
211211
}
212212

@@ -242,13 +242,13 @@ func UserAttributeHandler(handlerData web.HandlerData, w http.ResponseWriter, r
242242
nsMap[groups[i].Namespace.Name] = append(t, groups[i])
243243
}
244244

245-
var response models.UserAttributeDataResponse
246-
response.Namespace = make([]models.Namespaceinfo, len(nsMap))
245+
var response libdm.UserAttributeDataResponse
246+
response.Namespace = make([]libdm.Namespaceinfo, len(nsMap))
247247

248-
i := 0
249248
// Loop map and build response
249+
var i int
250250
for ns, groups := range nsMap {
251-
respItem := models.Namespaceinfo{Name: ns}
251+
respItem := libdm.Namespaceinfo{Name: ns}
252252
respItem.Groups = make([]string, len(groups))
253253
for i := range groups {
254254
respItem.Groups[i] = groups[i].Name
@@ -267,13 +267,13 @@ func UserAttributeHandler(handlerData web.HandlerData, w http.ResponseWriter, r
267267
for i := range nss {
268268
_, ok := nsMap[nss[i].Name]
269269
if !ok {
270-
response.Namespace = append(response.Namespace, models.Namespaceinfo{
270+
response.Namespace = append(response.Namespace, libdm.Namespaceinfo{
271271
Name: nss[i].Name,
272272
})
273273
}
274274
}
275275

276276
// Send response
277-
sendResponse(w, models.ResponseSuccess, "", response)
277+
sendResponse(w, libdm.ResponseSuccess, "", response)
278278
return nil
279279
}

handlers/FileHandler.go

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func UploadfileHandler(handlerData web.HandlerData, w http.ResponseWriter, r *ht
2626
var request libdm.UploadRequestStruct
2727

2828
// Get data from header
29-
requestData := r.Header.Get(models.HeaderRequest)
29+
requestData := r.Header.Get(libdm.HeaderRequest)
3030
if len(requestData) == 0 {
3131
return RErrBadRequest
3232
}
@@ -229,7 +229,7 @@ func UploadfileHandler(handlerData web.HandlerData, w http.ResponseWriter, r *ht
229229
return err
230230
}
231231

232-
sendResponse(w, models.ResponseSuccess, "", models.UploadResponse{
232+
sendResponse(w, libdm.ResponseSuccess, "", libdm.UploadResponse{
233233
FileID: file.ID,
234234
Filename: file.Name,
235235
PublicFilename: file.PublicFilename.String,
@@ -296,13 +296,13 @@ func ListFilesHandler(handlerData web.HandlerData, w http.ResponseWriter, r *htt
296296
}
297297

298298
// Convert to ResponseFile
299-
var retFiles []models.FileResponseItem
299+
var retFiles []libdm.FileResponseItem
300300
for _, file := range foundFiles {
301301
// Filter tags
302302
if (len(request.Attributes.Tags) == 0 || (len(request.Attributes.Tags) > 0 && file.IsInTagList(request.Attributes.Tags))) &&
303303
// Filter groups
304304
(len(request.Attributes.Groups) == 0 || (len(request.Attributes.Groups) > 0 && file.IsInGroupList(request.Attributes.Groups))) {
305-
respItem := models.FileResponseItem{
305+
respItem := libdm.FileResponseItem{
306306
ID: file.ID,
307307
Name: file.Name,
308308
CreationDate: file.CreatedAt,
@@ -331,7 +331,7 @@ func ListFilesHandler(handlerData web.HandlerData, w http.ResponseWriter, r *htt
331331
}
332332
}
333333

334-
sendResponse(w, models.ResponseSuccess, "", models.ListFileResponse{
334+
sendResponse(w, libdm.ResponseSuccess, "", libdm.FileListResponse{
335335
Files: retFiles,
336336
})
337337

@@ -430,7 +430,7 @@ func FileHandler(handlerData web.HandlerData, w http.ResponseWriter, r *http.Req
430430
}
431431

432432
// Send response
433-
sendResponse(w, models.ResponseSuccess, "", models.IDsResponse{
433+
sendResponse(w, libdm.ResponseSuccess, "", libdm.IDsResponse{
434434
IDs: ids,
435435
})
436436
}
@@ -537,7 +537,7 @@ func FileHandler(handlerData web.HandlerData, w http.ResponseWriter, r *http.Req
537537
}
538538

539539
// Send response
540-
sendResponse(w, models.ResponseSuccess, "", models.CountResponse{
540+
sendResponse(w, libdm.ResponseSuccess, "", libdm.CountResponse{
541541
Count: count,
542542
})
543543
}
@@ -559,24 +559,24 @@ func FileHandler(handlerData web.HandlerData, w http.ResponseWriter, r *http.Req
559559

560560
// Set ContentType header
561561
if len(file.FileType) > 0 && filetype.IsMIMESupported(file.FileType) {
562-
w.Header().Set(models.HeaderContentType, file.FileType)
562+
w.Header().Set(libdm.HeaderContentType, file.FileType)
563563
}
564564

565565
// Set filename header
566-
w.Header().Set(models.HeaderFileName, file.Name)
566+
w.Header().Set(libdm.HeaderFileName, file.Name)
567567

568568
// Set checksum header
569-
w.Header().Set(models.HeaderChecksum, file.Checksum)
569+
w.Header().Set(libdm.HeaderChecksum, file.Checksum)
570570

571571
// Set fileID header
572-
w.Header().Set(models.HeaderFileID, strconv.FormatUint(uint64(file.ID), 10))
572+
w.Header().Set(libdm.HeaderFileID, strconv.FormatUint(uint64(file.ID), 10))
573573

574574
// Set ContentLength header
575-
w.Header().Set(models.HeaderContentLength, strconv.FormatInt(file.FileSize, 10))
575+
w.Header().Set(libdm.HeaderContentLength, strconv.FormatInt(file.FileSize, 10))
576576

577577
// Set encryption cipher header
578578
if file.Encryption.Valid {
579-
w.Header().Set(models.HeaderEncryption, libdm.ChiperToString(file.Encryption.Int32))
579+
w.Header().Set(libdm.HeaderEncryption, libdm.ChiperToString(file.Encryption.Int32))
580580
}
581581

582582
// Write contents to responsewriter
@@ -592,8 +592,8 @@ func FileHandler(handlerData web.HandlerData, w http.ResponseWriter, r *http.Req
592592
// Publish a file
593593
case "publish":
594594
{
595-
publishResponse := models.PublishResponse{}
596-
bulkPublishResponse := models.BulkPublishResponse{}
595+
publishResponse := libdm.PublishResponse{}
596+
bulkPublishResponse := libdm.BulkPublishResponse{}
597597

598598
for _, file := range files {
599599
// Ignore if already public
@@ -617,24 +617,24 @@ func FileHandler(handlerData web.HandlerData, w http.ResponseWriter, r *http.Req
617617

618618
// Use bulk response if requested "all"
619619
if request.All {
620-
bulkPublishResponse.Files = append(bulkPublishResponse.Files, models.UploadResponse{
620+
bulkPublishResponse.Files = append(bulkPublishResponse.Files, libdm.UploadResponse{
621621
FileID: file.ID,
622622
Filename: file.Name,
623623
PublicFilename: file.PublicFilename.String,
624624
})
625625
} else {
626626
// Otherwise respond with a single item
627-
publishResponse = models.PublishResponse{
627+
publishResponse = libdm.PublishResponse{
628628
PublicFilename: file.PublicFilename.String,
629629
}
630630
}
631631
}
632632

633633
// Send success
634634
if request.All {
635-
sendResponse(w, models.ResponseSuccess, "", bulkPublishResponse)
635+
sendResponse(w, libdm.ResponseSuccess, "", bulkPublishResponse)
636636
} else {
637-
sendResponse(w, models.ResponseSuccess, "", publishResponse)
637+
sendResponse(w, libdm.ResponseSuccess, "", publishResponse)
638638
}
639639
}
640640
}

handlers/NamespaceHandler.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ func NamespaceActionHandler(handlerData web.HandlerData, w http.ResponseWriter,
101101
return err
102102
}
103103

104-
sendResponse(w, models.ResponseSuccess, "", models.StringResponse{
104+
sendResponse(w, libdm.ResponseSuccess, "", libdm.StringResponse{
105105
String: namespace.Name,
106106
})
107107

@@ -120,7 +120,7 @@ func NamespaceListHandler(handlerData web.HandlerData, w http.ResponseWriter, r
120120
snamespaces = append(snamespaces, namespace.Name)
121121
}
122122

123-
sendResponse(w, models.ResponseSuccess, "", models.StringSliceResponse{
123+
sendResponse(w, libdm.ResponseSuccess, "", libdm.StringSliceResponse{
124124
Slice: snamespaces,
125125
})
126126

handlers/PingHandler.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"net/http"
55

66
"github.com/DataManager-Go/DataManagerServer/handlers/web"
7-
"github.com/DataManager-Go/DataManagerServer/models"
87
libdm "github.com/DataManager-Go/libdatamanager"
98
)
109

@@ -22,10 +21,10 @@ func Ping(handlerData web.HandlerData, w http.ResponseWriter, r *http.Request) e
2221
payload = "Authorized pong"
2322
}
2423

25-
response := models.StringResponse{
24+
response := libdm.StringResponse{
2625
String: payload,
2726
}
28-
sendResponse(w, models.ResponseSuccess, "", response)
27+
sendResponse(w, libdm.ResponseSuccess, "", response)
2928

3029
return nil
3130
}

handlers/Responses.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,48 +6,49 @@ import (
66
"net/http"
77

88
"github.com/DataManager-Go/DataManagerServer/models"
9+
libdm "github.com/DataManager-Go/libdatamanager"
910
)
1011

1112
func handleAndSendError(err error, w http.ResponseWriter, message string, statusCode int) bool {
1213
if !LogError(err) {
1314
return false
1415
}
1516

16-
sendResponse(w, models.ResponseError, message, nil, statusCode)
17+
sendResponse(w, libdm.ResponseError, message, nil, statusCode)
1718
return true
1819
}
1920

2021
func sendServerError(w http.ResponseWriter) {
21-
sendResponse(w, models.ResponseError, "internal server error", nil, http.StatusInternalServerError)
22+
sendResponse(w, libdm.ResponseError, "internal server error", nil, http.StatusInternalServerError)
2223
}
2324

2425
//Return true on success
2526
func handleNamespaceErorrs(namespace *models.Namespace, user *models.User, w http.ResponseWriter) bool {
2627
// Check if namespace was found
2728
if !namespace.IsValid() {
28-
sendResponse(w, models.ResponseError, "Namespace not found", nil, http.StatusNotFound)
29+
sendResponse(w, libdm.ResponseError, "Namespace not found", nil, http.StatusNotFound)
2930
return false
3031
}
3132

3233
// Check if user can access this namespace
3334
if !user.HasAccess(namespace) {
3435
fmt.Println("no access", user.ID, namespace.UserID)
35-
sendResponse(w, models.ResponseError, "Write permission denied for this namespace", nil, http.StatusForbidden)
36+
sendResponse(w, libdm.ResponseError, "Write permission denied for this namespace", nil, http.StatusForbidden)
3637
return false
3738
}
3839

3940
return true
4041
}
4142

42-
func sendResponse(w http.ResponseWriter, status models.ResponseStatus, message string, payload interface{}, params ...int) {
43+
func sendResponse(w http.ResponseWriter, status libdm.ResponseStatus, message string, payload interface{}, params ...int) {
4344
statusCode := http.StatusOK
4445
s := "0"
4546
if status == 1 {
4647
s = "1"
4748
}
4849

49-
w.Header().Set(models.HeaderStatus, s)
50-
w.Header().Set(models.HeaderStatusMessage, message)
50+
w.Header().Set(libdm.HeaderStatus, s)
51+
w.Header().Set(libdm.HeaderStatusMessage, message)
5152
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
5253

5354
if len(params) > 0 {

0 commit comments

Comments
 (0)