Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vũ Hoàng Anh
canifa_note
Commits
b704c208
Unverified
Commit
b704c208
authored
Dec 19, 2022
by
boojack
Committed by
GitHub
Dec 19, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: return raw text for html (#782)
parent
6c17f94e
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
41 additions
and
42 deletions
+41
-42
resource.go
server/resource.go
+40
-40
db.go
store/db/db.go
+1
-2
No files found.
server/resource.go
View file @
b704c208
...
@@ -43,10 +43,6 @@ func (s *Server) registerResourceRoutes(g *echo.Group) {
...
@@ -43,10 +43,6 @@ func (s *Server) registerResourceRoutes(g *echo.Group) {
}
}
filename
:=
file
.
Filename
filename
:=
file
.
Filename
if
strings
.
HasSuffix
(
filename
,
".html"
)
{
return
echo
.
NewHTTPError
(
http
.
StatusBadRequest
,
"html file is not allowed"
)
}
filetype
:=
file
.
Header
.
Get
(
"Content-Type"
)
filetype
:=
file
.
Header
.
Get
(
"Content-Type"
)
size
:=
file
.
Size
size
:=
file
.
Size
src
,
err
:=
file
.
Open
()
src
,
err
:=
file
.
Open
()
...
@@ -169,7 +165,7 @@ func (s *Server) registerResourceRoutes(g *echo.Group) {
...
@@ -169,7 +165,7 @@ func (s *Server) registerResourceRoutes(g *echo.Group) {
return
nil
return
nil
})
})
g
.
DELETE
(
"/resource/:resourceId"
,
func
(
c
echo
.
Context
)
error
{
g
.
PATCH
(
"/resource/:resourceId"
,
func
(
c
echo
.
Context
)
error
{
ctx
:=
c
.
Request
()
.
Context
()
ctx
:=
c
.
Request
()
.
Context
()
userID
,
ok
:=
c
.
Get
(
getUserIDContextKey
())
.
(
int
)
userID
,
ok
:=
c
.
Get
(
getUserIDContextKey
())
.
(
int
)
if
!
ok
{
if
!
ok
{
...
@@ -181,31 +177,36 @@ func (s *Server) registerResourceRoutes(g *echo.Group) {
...
@@ -181,31 +177,36 @@ func (s *Server) registerResourceRoutes(g *echo.Group) {
return
echo
.
NewHTTPError
(
http
.
StatusBadRequest
,
fmt
.
Sprintf
(
"ID is not a number: %s"
,
c
.
Param
(
"resourceId"
)))
.
SetInternal
(
err
)
return
echo
.
NewHTTPError
(
http
.
StatusBadRequest
,
fmt
.
Sprintf
(
"ID is not a number: %s"
,
c
.
Param
(
"resourceId"
)))
.
SetInternal
(
err
)
}
}
resource
,
err
:=
s
.
Store
.
FindResource
(
ctx
,
&
api
.
ResourceFind
{
resource
Find
:=
&
api
.
ResourceFind
{
ID
:
&
resourceID
,
ID
:
&
resourceID
,
CreatorID
:
&
userID
,
CreatorID
:
&
userID
,
})
if
err
!=
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to find resource"
)
.
SetInternal
(
err
)
}
}
if
resource
=
=
nil
{
if
_
,
err
:=
s
.
Store
.
FindResource
(
ctx
,
resourceFind
);
err
!
=
nil
{
return
echo
.
NewHTTPError
(
http
.
Status
NotFound
,
"Not
find resource"
)
.
SetInternal
(
err
)
return
echo
.
NewHTTPError
(
http
.
Status
InternalServerError
,
"Failed to
find resource"
)
.
SetInternal
(
err
)
}
}
resourceDelete
:=
&
api
.
ResourceDelete
{
currentTs
:=
time
.
Now
()
.
Unix
()
resourcePatch
:=
&
api
.
ResourcePatch
{
ID
:
resourceID
,
ID
:
resourceID
,
UpdatedTs
:
&
currentTs
,
}
}
if
err
:=
s
.
Store
.
DeleteResource
(
ctx
,
resourceDelete
);
err
!=
nil
{
if
err
:=
json
.
NewDecoder
(
c
.
Request
()
.
Body
)
.
Decode
(
resourcePatch
);
err
!=
nil
{
if
common
.
ErrorCode
(
err
)
==
common
.
NotFound
{
return
echo
.
NewHTTPError
(
http
.
StatusBadRequest
,
"Malformatted patch resource request"
)
.
SetInternal
(
err
)
return
echo
.
NewHTTPError
(
http
.
StatusNotFound
,
fmt
.
Sprintf
(
"Resource ID not found: %d"
,
resourceID
))
}
}
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to delete resource"
)
.
SetInternal
(
err
)
resource
,
err
:=
s
.
Store
.
PatchResource
(
ctx
,
resourcePatch
)
if
err
!=
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to patch resource"
)
.
SetInternal
(
err
)
}
}
return
c
.
JSON
(
http
.
StatusOK
,
true
)
c
.
Response
()
.
Header
()
.
Set
(
echo
.
HeaderContentType
,
echo
.
MIMEApplicationJSONCharsetUTF8
)
if
err
:=
json
.
NewEncoder
(
c
.
Response
()
.
Writer
)
.
Encode
(
composeResponse
(
resource
));
err
!=
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to encode resource response"
)
.
SetInternal
(
err
)
}
return
nil
})
})
g
.
PATCH
(
"/resource/:resourceId"
,
func
(
c
echo
.
Context
)
error
{
g
.
DELETE
(
"/resource/:resourceId"
,
func
(
c
echo
.
Context
)
error
{
ctx
:=
c
.
Request
()
.
Context
()
ctx
:=
c
.
Request
()
.
Context
()
userID
,
ok
:=
c
.
Get
(
getUserIDContextKey
())
.
(
int
)
userID
,
ok
:=
c
.
Get
(
getUserIDContextKey
())
.
(
int
)
if
!
ok
{
if
!
ok
{
...
@@ -217,33 +218,28 @@ func (s *Server) registerResourceRoutes(g *echo.Group) {
...
@@ -217,33 +218,28 @@ func (s *Server) registerResourceRoutes(g *echo.Group) {
return
echo
.
NewHTTPError
(
http
.
StatusBadRequest
,
fmt
.
Sprintf
(
"ID is not a number: %s"
,
c
.
Param
(
"resourceId"
)))
.
SetInternal
(
err
)
return
echo
.
NewHTTPError
(
http
.
StatusBadRequest
,
fmt
.
Sprintf
(
"ID is not a number: %s"
,
c
.
Param
(
"resourceId"
)))
.
SetInternal
(
err
)
}
}
resource
Find
:=
&
api
.
ResourceFind
{
resource
,
err
:=
s
.
Store
.
FindResource
(
ctx
,
&
api
.
ResourceFind
{
ID
:
&
resourceID
,
ID
:
&
resourceID
,
CreatorID
:
&
userID
,
CreatorID
:
&
userID
,
}
}
)
if
_
,
err
:=
s
.
Store
.
FindResource
(
ctx
,
resourceFind
);
err
!=
nil
{
if
err
!=
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to find resource"
)
.
SetInternal
(
err
)
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to find resource"
)
.
SetInternal
(
err
)
}
}
if
resource
==
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusNotFound
,
"Not find resource"
)
.
SetInternal
(
err
)
}
currentTs
:=
time
.
Now
()
.
Unix
()
resourceDelete
:=
&
api
.
ResourceDelete
{
resourcePatch
:=
&
api
.
ResourcePatch
{
ID
:
resourceID
,
ID
:
resourceID
,
UpdatedTs
:
&
currentTs
,
}
}
if
err
:=
json
.
NewDecoder
(
c
.
Request
()
.
Body
)
.
Decode
(
resourcePatch
);
err
!=
nil
{
if
err
:=
s
.
Store
.
DeleteResource
(
ctx
,
resourceDelete
);
err
!=
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusBadRequest
,
"Malformatted patch resource request"
)
.
SetInternal
(
err
)
if
common
.
ErrorCode
(
err
)
==
common
.
NotFound
{
return
echo
.
NewHTTPError
(
http
.
StatusNotFound
,
fmt
.
Sprintf
(
"Resource ID not found: %d"
,
resourceID
))
}
}
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to delete resource"
)
.
SetInternal
(
err
)
resource
,
err
:=
s
.
Store
.
PatchResource
(
ctx
,
resourcePatch
)
if
err
!=
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to patch resource"
)
.
SetInternal
(
err
)
}
}
c
.
Response
()
.
Header
()
.
Set
(
echo
.
HeaderContentType
,
echo
.
MIMEApplicationJSONCharsetUTF8
)
return
c
.
JSON
(
http
.
StatusOK
,
true
)
if
err
:=
json
.
NewEncoder
(
c
.
Response
()
.
Writer
)
.
Encode
(
composeResponse
(
resource
));
err
!=
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to encode resource response"
)
.
SetInternal
(
err
)
}
return
nil
})
})
}
}
...
@@ -267,8 +263,12 @@ func (s *Server) registerResourcePublicRoutes(g *echo.Group) {
...
@@ -267,8 +263,12 @@ func (s *Server) registerResourcePublicRoutes(g *echo.Group) {
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
fmt
.
Sprintf
(
"Failed to fetch resource ID: %v"
,
resourceID
))
.
SetInternal
(
err
)
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
fmt
.
Sprintf
(
"Failed to fetch resource ID: %v"
,
resourceID
))
.
SetInternal
(
err
)
}
}
c
.
Response
()
.
Writer
.
WriteHeader
(
http
.
StatusOK
)
if
strings
.
HasPrefix
(
resource
.
Type
,
echo
.
MIMETextHTML
)
{
c
.
Response
()
.
Writer
.
Header
()
.
Set
(
"Content-Type"
,
echo
.
MIMETextPlain
)
}
else
{
c
.
Response
()
.
Writer
.
Header
()
.
Set
(
"Content-Type"
,
resource
.
Type
)
c
.
Response
()
.
Writer
.
Header
()
.
Set
(
"Content-Type"
,
resource
.
Type
)
}
c
.
Response
()
.
Writer
.
WriteHeader
(
http
.
StatusOK
)
c
.
Response
()
.
Writer
.
Header
()
.
Set
(
echo
.
HeaderCacheControl
,
"max-age=31536000, immutable"
)
c
.
Response
()
.
Writer
.
Header
()
.
Set
(
echo
.
HeaderCacheControl
,
"max-age=31536000, immutable"
)
if
_
,
err
:=
c
.
Response
()
.
Writer
.
Write
(
resource
.
Blob
);
err
!=
nil
{
if
_
,
err
:=
c
.
Response
()
.
Writer
.
Write
(
resource
.
Blob
);
err
!=
nil
{
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to write response"
)
.
SetInternal
(
err
)
return
echo
.
NewHTTPError
(
http
.
StatusInternalServerError
,
"Failed to write response"
)
.
SetInternal
(
err
)
...
...
store/db/db.go
View file @
b704c208
...
@@ -43,11 +43,10 @@ func (db *DB) Open(ctx context.Context) (err error) {
...
@@ -43,11 +43,10 @@ func (db *DB) Open(ctx context.Context) (err error) {
}
}
// Connect to the database without foreign_key.
// Connect to the database without foreign_key.
sqliteDB
,
err
:=
sql
.
Open
(
"sqlite3"
,
db
.
profile
.
DSN
+
"?
_foreign_keys=0
"
)
sqliteDB
,
err
:=
sql
.
Open
(
"sqlite3"
,
db
.
profile
.
DSN
+
"?
cache=shared&_foreign_keys=0&_busy_timeout=9999999
"
)
if
err
!=
nil
{
if
err
!=
nil
{
return
fmt
.
Errorf
(
"failed to open db with dsn: %s, err: %w"
,
db
.
profile
.
DSN
,
err
)
return
fmt
.
Errorf
(
"failed to open db with dsn: %s, err: %w"
,
db
.
profile
.
DSN
,
err
)
}
}
sqliteDB
.
SetMaxOpenConns
(
1
)
db
.
Db
=
sqliteDB
db
.
Db
=
sqliteDB
if
db
.
profile
.
Mode
==
"dev"
{
if
db
.
profile
.
Mode
==
"dev"
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment