Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Vladimir Barsukov
zGo
Commits
287a9acb
Commit
287a9acb
authored
Dec 11, 2023
by
Vladimir Barsukov
Browse files
s3
parent
01dc2569
Changes
4
Hide whitespace changes
Inline
Side-by-side
go.mod
View file @
287a9acb
...
...
@@ -3,14 +3,15 @@ module git.barsukov.pro/barsukov/zgo
go 1.21
require (
github.com/aws/aws-sdk-go
v1.48.16
github.com/georgysavva/scany/v2
v2.0.0
github.com/gin-gonic/gin
v1.9.1
github.com/go-co-op/gocron
v1.36.
0
github.com/go-co-op/gocron
v1.36.
1
github.com/goccy/go-json
v0.10.2
github.com/google/uuid
v1.4.0
github.com/jackc/pgx/v5
v5.5.
0
github.com/jackc/pgx/v5
v5.5.
1
github.com/patrickmn/go-cache
v2.1.0+incompatible
golang.org/x/exp
v0.0.0-20231
110203233-9a3e6036ecaa
golang.org/x/exp
v0.0.0-20231
206192017-f3f8817b8deb
)
require (
...
...
@@ -23,8 +24,9 @@ require (
github.com/go-playground/universal-translator
v0.18.1 // indirect
github.com/go-playground/validator/v10
v10.16.0 // indirect
github.com/jackc/pgpassfile
v1.0.0 // indirect
github.com/jackc/pgservicefile
v0.0.0-202
2
12
27161230-091c0ba34f0a
// indirect
github.com/jackc/pgservicefile
v0.0.0-202
3
12
01235250-de7065d80cb9
// indirect
github.com/jackc/puddle/v2
v2.2.1 // indirect
github.com/jmespath/go-jmespath
v0.4.0 // indirect
github.com/json-iterator/go
v1.1.12 // indirect
github.com/klauspost/cpuid/v2
v2.2.6 // indirect
github.com/leodido/go-urn
v1.2.4 // indirect
...
...
@@ -34,13 +36,13 @@ require (
github.com/pelletier/go-toml/v2
v2.1.0 // indirect
github.com/robfig/cron/v3
v3.0.1 // indirect
github.com/twitchyliquid64/golang-asm
v0.15.1 // indirect
github.com/ugorji/go/codec
v1.2.1
1
// indirect
github.com/ugorji/go/codec
v1.2.1
2
// indirect
go.uber.org/atomic
v1.11.0 // indirect
golang.org/x/arch
v0.6.0 // indirect
golang.org/x/crypto
v0.1
5
.0 // indirect
golang.org/x/net
v0.1
8
.0 // indirect
golang.org/x/crypto
v0.1
6
.0 // indirect
golang.org/x/net
v0.1
9
.0 // indirect
golang.org/x/sync
v0.5.0 // indirect
golang.org/x/sys
v0.1
4
.0 // indirect
golang.org/x/sys
v0.1
5
.0 // indirect
golang.org/x/text
v0.14.0 // indirect
google.golang.org/protobuf
v1.31.0 // indirect
gopkg.in/yaml.v3
v3.0.1 // indirect
...
...
go.sum
View file @
287a9acb
github.com/aws/aws-sdk-go
v1.48.16 h1:
mcj2/9J/MJ55Dov+ocMevhR8Jv6jW/fAxbrn4a1JFc8=
github.com/aws/aws-sdk-go
v1.48.16/go.mod h1:
LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
github.com/bytedance/sonic
v1.5.0/go.mod h1:
ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
github.com/bytedance/sonic
v1.10.0-rc/go.mod h1:
ElCzW+ufi8qKqNW0FY314xriJhyJhuoJ3gFZdAHF7NM=
github.com/bytedance/sonic
v1.10.2 h1:
GQebETVBxYB7JGWJtLBi07OVzWwt+8dWA00gEVW2ZFE=
...
...
@@ -23,8 +25,8 @@ github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE
github.com/gin-contrib/sse
v0.1.0/go.mod h1:
RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-gonic/gin
v1.9.1 h1:
4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg=
github.com/gin-gonic/gin
v1.9.1/go.mod h1:
hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
github.com/go-co-op/gocron
v1.36.
0
h1:
sEmAwg57l4JWQgzaVWYfKZ+w13uHOqeOtwjo72Ll5Wc
=
github.com/go-co-op/gocron
v1.36.
0
/go.mod h1:
3L/n6BkO7ABj+TrfSVXLRzsP26zmikL4ISkLQ0O8iNY=
github.com/go-co-op/gocron
v1.36.
1
h1:
BnyJ7kOixY/oGW/hkUvuLYOmAHBiY8Mr6kadX2DN1hE
=
github.com/go-co-op/gocron
v1.36.
1
/go.mod h1:
3L/n6BkO7ABj+TrfSVXLRzsP26zmikL4ISkLQ0O8iNY=
github.com/go-playground/assert/v2
v2.2.0 h1:
JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
github.com/go-playground/assert/v2
v2.2.0/go.mod h1:
VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/locales
v0.14.1 h1:
EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
...
...
@@ -46,12 +48,16 @@ github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
github.com/google/uuid
v1.4.0/go.mod h1:
TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/jackc/pgpassfile
v1.0.0 h1:
/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgpassfile
v1.0.0/go.mod h1:
CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgservicefile
v0.0.0-202
2
12
27161230-091c0ba34f0a h1:
bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk
=
github.com/jackc/pgservicefile
v0.0.0-202
2
12
27161230-091c0ba34f0a
/go.mod h1:
5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
github.com/jackc/pgx/v5
v5.5.
0
h1:
NxstgwndsTRy7eq9/kqYc/BZh5w2hHJV86wjvO+1xPw
=
github.com/jackc/pgx/v5
v5.5.
0
/go.mod h1:
Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA=
github.com/jackc/pgservicefile
v0.0.0-202
3
12
01235250-de7065d80cb9 h1:
L0QtFUgDarD7Fpv9jeVMgy/+Ec0mtnmYuImjTz6dtDA
=
github.com/jackc/pgservicefile
v0.0.0-202
3
12
01235250-de7065d80cb9
/go.mod h1:
5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
github.com/jackc/pgx/v5
v5.5.
1
h1:
5I9etrGkLrN+2XPCsi6XLlV5DITbSL/xBZdmAxFcXPI
=
github.com/jackc/pgx/v5
v5.5.
1
/go.mod h1:
Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA=
github.com/jackc/puddle/v2
v2.2.1 h1:
RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk=
github.com/jackc/puddle/v2
v2.2.1/go.mod h1:
vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
github.com/jmespath/go-jmespath
v0.4.0 h1:
BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath
v0.4.0/go.mod h1:
T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify
v1.5.1 h1:
shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
github.com/jmespath/go-jmespath/internal/testify
v1.5.1/go.mod h1:
L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/json-iterator/go
v1.1.12 h1:
PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go
v1.1.12/go.mod h1:
e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/klauspost/cpuid/v2
v2.0.9/go.mod h1:
FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
...
...
@@ -106,26 +112,26 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU
github.com/stretchr/testify
v1.8.4/go.mod h1:
sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/twitchyliquid64/golang-asm
v0.15.1 h1:
SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
github.com/twitchyliquid64/golang-asm
v0.15.1/go.mod h1:
a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
github.com/ugorji/go/codec
v1.2.1
1
h1:
BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU
=
github.com/ugorji/go/codec
v1.2.1
1
/go.mod h1:
UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
github.com/ugorji/go/codec
v1.2.1
2
h1:
9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE
=
github.com/ugorji/go/codec
v1.2.1
2
/go.mod h1:
UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
go.uber.org/atomic
v1.9.0/go.mod h1:
fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/atomic
v1.11.0 h1:
ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
go.uber.org/atomic
v1.11.0/go.mod h1:
LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
golang.org/x/arch
v0.0.0-20210923205945-b76863e36670/go.mod h1:
5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
golang.org/x/arch
v0.6.0 h1:
S0JTfE48HbRj80+4tbvZDYsJ3tGv6BUU3XxyZ7CirAc=
golang.org/x/arch
v0.6.0/go.mod h1:
FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
golang.org/x/crypto
v0.1
5
.0 h1:
frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA
=
golang.org/x/crypto
v0.1
5
.0/go.mod h1:
4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g
=
golang.org/x/exp
v0.0.0-20231
110203233-9a3e6036ecaa h1:
FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ
=
golang.org/x/exp
v0.0.0-20231
110203233-9a3e6036ecaa/go.mod h1:
zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE
=
golang.org/x/net
v0.1
8
.0 h1:
mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg
=
golang.org/x/net
v0.1
8
.0/go.mod h1:
/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ
=
golang.org/x/crypto
v0.1
6
.0 h1:
mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY
=
golang.org/x/crypto
v0.1
6
.0/go.mod h1:
gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4
=
golang.org/x/exp
v0.0.0-20231
206192017-f3f8817b8deb h1:
c0vyKkb6yr3KR7jEfJaOSv4lG7xPkbN6r52aJz1d8a8
=
golang.org/x/exp
v0.0.0-20231
206192017-f3f8817b8deb/go.mod h1:
iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI
=
golang.org/x/net
v0.1
9
.0 h1:
zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c
=
golang.org/x/net
v0.1
9
.0/go.mod h1:
CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U
=
golang.org/x/sync
v0.5.0 h1:
60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE=
golang.org/x/sync
v0.5.0/go.mod h1:
Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys
v0.5.0/go.mod h1:
oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys
v0.6.0/go.mod h1:
oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys
v0.1
4
.0 h1:
Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q
=
golang.org/x/sys
v0.1
4
.0/go.mod h1:
/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys
v0.1
5
.0 h1:
h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc
=
golang.org/x/sys
v0.1
5
.0/go.mod h1:
/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text
v0.14.0 h1:
ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text
v0.14.0/go.mod h1:
18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/xerrors
v0.0.0-20191204190536-9bdfabe68543/go.mod h1:
I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
...
...
@@ -137,6 +143,8 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/check.v1
v1.0.0-20201130134442-10cb98267c6c h1:
Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1
v1.0.0-20201130134442-10cb98267c6c/go.mod h1:
JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/errgo.v2
v2.1.0/go.mod h1:
hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/yaml.v2
v2.2.8 h1:
obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
gopkg.in/yaml.v2
v2.2.8/go.mod h1:
hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3
v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:
K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3
v3.0.1 h1:
fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3
v3.0.1/go.mod h1:
K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
...
...
zgo.go
View file @
287a9acb
...
...
@@ -10,6 +10,7 @@ import (
_
"git.barsukov.pro/barsukov/zgo/zjson"
_
"git.barsukov.pro/barsukov/zgo/zq"
_
"git.barsukov.pro/barsukov/zgo/zquit"
_
"git.barsukov.pro/barsukov/zgo/zs3"
_
"git.barsukov.pro/barsukov/zgo/zutils"
_
"git.barsukov.pro/barsukov/zgo/zwg"
)
...
...
zs3/zs3.go
0 → 100644
View file @
287a9acb
package
zs3
import
(
"bytes"
"fmt"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
"io"
)
type
ZS3
struct
{
Buket
string
*
s3
.
S3
}
type
Object
struct
{
Name
string
Reader
io
.
ReadSeeker
Bytes
[]
byte
ContentType
string
ACL
string
}
func
(
z
*
ZS3
)
ZPutObject
(
o
*
Object
)
error
{
var
body
io
.
ReadSeeker
if
len
(
o
.
Name
)
==
0
{
return
fmt
.
Errorf
(
"name empty"
)
}
if
o
.
Reader
!=
nil
{
body
=
o
.
Reader
}
else
if
len
(
o
.
Bytes
)
>
0
{
body
=
bytes
.
NewReader
(
o
.
Bytes
)
}
else
{
return
fmt
.
Errorf
(
"empty body"
)
}
s3Object
:=
&
s3
.
PutObjectInput
{
Bucket
:
aws
.
String
(
z
.
Buket
),
Key
:
aws
.
String
(
o
.
Name
),
Body
:
body
,
}
if
len
(
o
.
ContentType
)
>
0
{
s3Object
.
ContentType
=
aws
.
String
(
o
.
ContentType
)
}
if
len
(
o
.
ACL
)
>
0
{
s3Object
.
ACL
=
aws
.
String
(
o
.
ACL
)
}
if
_
,
err
:=
z
.
PutObject
(
s3Object
);
err
!=
nil
{
return
err
}
return
nil
}
func
(
z
*
ZS3
)
ZDeleteObject
(
name
string
)
error
{
if
_
,
err
:=
z
.
DeleteObject
(
&
s3
.
DeleteObjectInput
{
Bucket
:
aws
.
String
(
z
.
Buket
),
Key
:
aws
.
String
(
name
),
});
err
!=
nil
{
return
err
}
return
nil
}
func
New
(
region
,
host
,
buket
,
key
,
secret
string
)
*
ZS3
{
return
&
ZS3
{
Buket
:
buket
,
S3
:
NewNative
(
region
,
host
,
key
,
secret
),
}
}
func
NewNative
(
region
,
host
,
key
,
secret
string
)
*
s3
.
S3
{
return
s3
.
New
(
session
.
Must
(
session
.
NewSession
()),
aws
.
NewConfig
()
.
WithCredentials
(
credentials
.
NewStaticCredentials
(
key
,
secret
,
""
))
.
WithEndpoint
(
host
)
.
WithRegion
(
region
)
.
WithS3ForcePathStyle
(
true
),
)
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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