feedx 0.5.2 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/feedx.gemspec +1 -1
- data/go.mod +1 -1
- data/go.sum +2 -2
- data/producer.go +18 -6
- data/producer_test.go +31 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a1ed7080e3ec08c76cba3676907b7946b72e3611a8abd32a7f61dcd0cb0df29a
|
4
|
+
data.tar.gz: f4d4aaa22f712c3c3e333c95e3a7b702ea2ceef7c4f7277aa8c26a6f474764ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 02a12dd77a8c89fe9f549d1bea0d2de675df7e39d67ea1b5c47edc64e6e9a03710b062c948e5c1a9842c6f54fc5b848177355a65be7a6eebfd15710931e05ba2
|
7
|
+
data.tar.gz: a61d6510fa25780f2a8157a18e5a73196c502b6d1ac792c1d0e11030d09bffb45f5a1ebb0decbfed74419c7f77c72f3d3bf2393237fe64fb0e98443647a4b3af
|
data/Gemfile.lock
CHANGED
data/feedx.gemspec
CHANGED
data/go.mod
CHANGED
@@ -7,5 +7,5 @@ require (
|
|
7
7
|
github.com/onsi/ginkgo v1.8.0
|
8
8
|
github.com/onsi/gomega v1.5.0
|
9
9
|
golang.org/x/net v0.0.0-20190514140710-3ec191127204 // indirect
|
10
|
-
golang.org/x/sys v0.0.0-
|
10
|
+
golang.org/x/sys v0.0.0-20190515120540-06a5c4944438 // indirect
|
11
11
|
)
|
data/go.sum
CHANGED
@@ -126,8 +126,8 @@ golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5h
|
|
126
126
|
golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
127
127
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
128
128
|
golang.org/x/sys v0.0.0-20190429094411-2cc0cad0ac78/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
129
|
-
golang.org/x/sys v0.0.0-
|
130
|
-
golang.org/x/sys v0.0.0-
|
129
|
+
golang.org/x/sys v0.0.0-20190515120540-06a5c4944438 h1:khxRGsvPk4n2y8I/mLLjp7e5dMTJmH75wvqS6nMwUtY=
|
130
|
+
golang.org/x/sys v0.0.0-20190515120540-06a5c4944438/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
131
131
|
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
132
132
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
133
133
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
data/producer.go
CHANGED
@@ -19,6 +19,10 @@ type ProducerOptions struct {
|
|
19
19
|
// Default: 1m
|
20
20
|
Interval time.Duration
|
21
21
|
|
22
|
+
// LastModCheck this function will be called before each push attempt
|
23
|
+
// to dynamically determine the last modified time.
|
24
|
+
LastModCheck func(context.Context) (time.Time, error)
|
25
|
+
|
22
26
|
// AfterPush callbacks are triggered after each push cycle, receiving
|
23
27
|
// an error (if occurred).
|
24
28
|
AfterPush func(error)
|
@@ -117,12 +121,20 @@ func (p *Producer) Close() error {
|
|
117
121
|
}
|
118
122
|
|
119
123
|
func (p *Producer) push() error {
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
+
start := time.Now()
|
125
|
+
atomic.StoreInt64(&p.lastPush, timestampFromTime(start).Millis())
|
126
|
+
|
127
|
+
wopt := p.opt.WriterOptions
|
128
|
+
wopt.LastMod = start
|
129
|
+
if p.opt.LastModCheck != nil {
|
130
|
+
modTime, err := p.opt.LastModCheck(p.ctx)
|
131
|
+
if err != nil {
|
132
|
+
return err
|
133
|
+
}
|
134
|
+
wopt.LastMod = modTime
|
135
|
+
}
|
124
136
|
|
125
|
-
writer, err := NewWriter(p.ctx, p.remote, &
|
137
|
+
writer, err := NewWriter(p.ctx, p.remote, &wopt)
|
126
138
|
if err != nil {
|
127
139
|
return err
|
128
140
|
}
|
@@ -141,7 +153,7 @@ func (p *Producer) push() error {
|
|
141
153
|
}
|
142
154
|
|
143
155
|
atomic.StoreInt64(&p.numWritten, int64(writer.NumWritten()))
|
144
|
-
atomic.StoreInt64(&p.lastMod,
|
156
|
+
atomic.StoreInt64(&p.lastMod, timestampFromTime(wopt.LastMod).Millis())
|
145
157
|
return nil
|
146
158
|
}
|
147
159
|
|
data/producer_test.go
CHANGED
@@ -15,11 +15,9 @@ var _ = Describe("Producer", func() {
|
|
15
15
|
var obj *bfs.Object
|
16
16
|
var ctx = context.Background()
|
17
17
|
|
18
|
-
|
19
|
-
obj = bfs.NewInMemObject("path/to/file.jsonz")
|
20
|
-
|
18
|
+
setup := func(o *feedx.ProducerOptions) {
|
21
19
|
var err error
|
22
|
-
subject, err = feedx.NewProducerForRemote(ctx, obj,
|
20
|
+
subject, err = feedx.NewProducerForRemote(ctx, obj, o, func(enc feedx.FormatPureEncoder) error {
|
23
21
|
for i := 0; i < 10; i++ {
|
24
22
|
fix := fixture
|
25
23
|
if err := enc.Encode(&fix); err != nil {
|
@@ -29,16 +27,43 @@ var _ = Describe("Producer", func() {
|
|
29
27
|
return nil
|
30
28
|
})
|
31
29
|
Expect(err).NotTo(HaveOccurred())
|
30
|
+
}
|
31
|
+
|
32
|
+
BeforeEach(func() {
|
33
|
+
obj = bfs.NewInMemObject("path/to/file.jsonz")
|
32
34
|
})
|
33
35
|
|
34
36
|
AfterEach(func() {
|
35
|
-
|
37
|
+
if subject != nil {
|
38
|
+
Expect(subject.Close()).To(Succeed())
|
39
|
+
}
|
36
40
|
})
|
37
41
|
|
38
42
|
It("should produce", func() {
|
43
|
+
setup(nil)
|
44
|
+
|
39
45
|
Expect(subject.LastPush()).To(BeTemporally("~", time.Now(), time.Second))
|
40
|
-
Expect(subject.LastModified()).To(
|
46
|
+
Expect(subject.LastModified()).To(BeTemporally("~", time.Now(), time.Second))
|
41
47
|
Expect(subject.NumWritten()).To(Equal(10))
|
42
48
|
Expect(subject.Close()).To(Succeed())
|
49
|
+
|
50
|
+
info, err := obj.Head(ctx)
|
51
|
+
Expect(err).NotTo(HaveOccurred())
|
52
|
+
Expect(info.Size).To(BeNumerically("~", 75, 10))
|
53
|
+
})
|
54
|
+
|
55
|
+
It("should produce with custom last-mod check", func() {
|
56
|
+
setup(&feedx.ProducerOptions{
|
57
|
+
LastModCheck: func(_ context.Context) (time.Time, error) { return time.Unix(1515151515, 0), nil },
|
58
|
+
})
|
59
|
+
|
60
|
+
Expect(subject.LastPush()).To(BeTemporally("~", time.Now(), time.Second))
|
61
|
+
Expect(subject.LastModified()).To(Equal(time.Unix(1515151515, 0)))
|
62
|
+
Expect(subject.NumWritten()).To(Equal(10))
|
63
|
+
|
64
|
+
info, err := obj.Head(ctx)
|
65
|
+
Expect(err).NotTo(HaveOccurred())
|
66
|
+
Expect(info.Size).To(BeNumerically("~", 75, 10))
|
67
|
+
Expect(info.Metadata).To(HaveKeyWithValue("x-feedx-last-modified", "1515151515000"))
|
43
68
|
})
|
44
69
|
})
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: feedx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Black Square Media Ltd
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-05-
|
11
|
+
date: 2019-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bfs
|