FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
parse-server/S3Adapter.js at testing · mabowgithub/parse-server · GitHub
mabowgithub
/
parse-server
Public
forked from
parse-community/parse-server
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
parse-server
/
S3Adapter.js
Copy path
More file actions
More file actions
Latest commit
History
History
History
77 lines (66 loc) · 2.25 KB
Breadcrumbs
parse-server
/
S3Adapter.js
Copy path
File metadata and controls
77 lines (66 loc) · 2.25 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// S3Adapter
//
// Stores Parse files in AWS S3.
var
AWS
=
require
(
'aws-sdk'
)
;
var
path
=
require
(
'path'
)
;
var
DEFAULT_REGION
=
"us-east-1"
;
var
DEFAULT_BUCKET
=
"parse-files"
;
// Creates an S3 session.
// Providing AWS access and secret keys is mandatory
// Region and bucket will use sane defaults if omitted
function
S3Adapter
(
accessKey
,
secretKey
,
options
)
{
options
=
options
||
{
}
;
this
.
region
=
options
.
region
||
DEFAULT_REGION
;
this
.
bucket
=
options
.
bucket
||
DEFAULT_BUCKET
;
this
.
bucketPrefix
=
options
.
bucketPrefix
||
""
;
this
.
directAccess
=
options
.
directAccess
||
false
;
s3Options
=
{
accessKeyId
:
accessKey
,
secretAccessKey
:
secretKey
,
params
:
{
Bucket
:
this
.
bucket
}
}
;
AWS
.
config
.
region
=
this
.
region
;
this
.
s3
=
new
AWS
.
S3
(
s3Options
)
;
}
// For a given config object, filename, and data, store a file in S3
// Returns a promise containing the S3 object creation response
S3Adapter
.
prototype
.
create
=
function
(
config
,
filename
,
data
)
{
var
params
=
{
Key
:
this
.
bucketPrefix
+
filename
,
Body
:
data
,
}
;
if
(
this
.
directAccess
)
{
params
.
ACL
=
"public-read"
}
return
new
Promise
(
(
resolve
,
reject
)
=>
{
this
.
s3
.
upload
(
params
,
(
err
,
data
)
=>
{
if
(
err
!==
null
)
return
reject
(
err
)
;
resolve
(
data
)
;
}
)
;
}
)
;
}
// Search for and return a file if found by filename
// Returns a promise that succeeds with the buffer result from S3
S3Adapter
.
prototype
.
get
=
function
(
config
,
filename
)
{
var
params
=
{
Key
:
this
.
bucketPrefix
+
filename
}
;
return
new
Promise
(
(
resolve
,
reject
)
=>
{
this
.
s3
.
getObject
(
params
,
(
err
,
data
)
=>
{
if
(
err
!==
null
)
return
reject
(
err
)
;
resolve
(
data
.
Body
)
;
}
)
;
}
)
;
}
// Generates and returns the location of a file stored in S3 for the given request and
// filename
// The location is the direct S3 link if the option is set, otherwise we serve
// the file through parse-server
S3Adapter
.
prototype
.
location
=
function
(
config
,
req
,
filename
)
{
if
(
this
.
directAccess
)
{
return
(
'https://'
+
this
.
bucket
+
'.s3.amazonaws.com'
+
'/'
+
this
.
bucketPrefix
+
filename
)
;
}
return
(
req
.
protocol
+
'://'
+
req
.
get
(
'host'
)
+
path
.
dirname
(
req
.
originalUrl
)
+
'/'
+
req
.
config
.
applicationId
+
'/'
+
encodeURIComponent
(
filename
)
)
;
}
module
.
exports
=
S3Adapter
;
Back
|
FazBrowse Home
|
New Git URL