fbcrawl-colly 0.2.4 → 1.1.1

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.
@@ -0,0 +1,344 @@
1
+ // Code generated by protoc-gen-go-grpc. DO NOT EDIT.
2
+
3
+ package pb
4
+
5
+ import (
6
+ context "context"
7
+ grpc "google.golang.org/grpc"
8
+ codes "google.golang.org/grpc/codes"
9
+ status "google.golang.org/grpc/status"
10
+ )
11
+
12
+ // This is a compile-time assertion to ensure that this generated file
13
+ // is compatible with the grpc package it is being compiled against.
14
+ const _ = grpc.SupportPackageIsVersion6
15
+
16
+ // GrpcClient is the client API for Grpc service.
17
+ //
18
+ // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
19
+ type GrpcClient interface {
20
+ // Sends a greeting
21
+ Login(ctx context.Context, in *LoginRequest, opts ...grpc.CallOption) (*LoginResponse, error)
22
+ FetchMyGroups(ctx context.Context, in *FetchMyGroupsRequest, opts ...grpc.CallOption) (*FacebookGroupList, error)
23
+ FetchGroupInfo(ctx context.Context, in *FetchGroupInfoRequest, opts ...grpc.CallOption) (*FacebookGroup, error)
24
+ FetchUserInfo(ctx context.Context, in *FetchUserInfoRequest, opts ...grpc.CallOption) (*FacebookUser, error)
25
+ FetchGroupFeed(ctx context.Context, in *FetchGroupFeedRequest, opts ...grpc.CallOption) (*FacebookPostList, error)
26
+ FetchPost(ctx context.Context, in *FetchPostRequest, opts ...grpc.CallOption) (*FacebookPost, error)
27
+ FetchContentImages(ctx context.Context, in *FetchContentImagesRequest, opts ...grpc.CallOption) (*FacebookImageList, error)
28
+ FetchImageUrl(ctx context.Context, in *FetchImageUrlRequest, opts ...grpc.CallOption) (*FacebookImage, error)
29
+ }
30
+
31
+ type grpcClient struct {
32
+ cc grpc.ClientConnInterface
33
+ }
34
+
35
+ func NewGrpcClient(cc grpc.ClientConnInterface) GrpcClient {
36
+ return &grpcClient{cc}
37
+ }
38
+
39
+ func (c *grpcClient) Login(ctx context.Context, in *LoginRequest, opts ...grpc.CallOption) (*LoginResponse, error) {
40
+ out := new(LoginResponse)
41
+ err := c.cc.Invoke(ctx, "/fbcrawl_colly.Grpc/Login", in, out, opts...)
42
+ if err != nil {
43
+ return nil, err
44
+ }
45
+ return out, nil
46
+ }
47
+
48
+ func (c *grpcClient) FetchMyGroups(ctx context.Context, in *FetchMyGroupsRequest, opts ...grpc.CallOption) (*FacebookGroupList, error) {
49
+ out := new(FacebookGroupList)
50
+ err := c.cc.Invoke(ctx, "/fbcrawl_colly.Grpc/FetchMyGroups", in, out, opts...)
51
+ if err != nil {
52
+ return nil, err
53
+ }
54
+ return out, nil
55
+ }
56
+
57
+ func (c *grpcClient) FetchGroupInfo(ctx context.Context, in *FetchGroupInfoRequest, opts ...grpc.CallOption) (*FacebookGroup, error) {
58
+ out := new(FacebookGroup)
59
+ err := c.cc.Invoke(ctx, "/fbcrawl_colly.Grpc/FetchGroupInfo", in, out, opts...)
60
+ if err != nil {
61
+ return nil, err
62
+ }
63
+ return out, nil
64
+ }
65
+
66
+ func (c *grpcClient) FetchUserInfo(ctx context.Context, in *FetchUserInfoRequest, opts ...grpc.CallOption) (*FacebookUser, error) {
67
+ out := new(FacebookUser)
68
+ err := c.cc.Invoke(ctx, "/fbcrawl_colly.Grpc/FetchUserInfo", in, out, opts...)
69
+ if err != nil {
70
+ return nil, err
71
+ }
72
+ return out, nil
73
+ }
74
+
75
+ func (c *grpcClient) FetchGroupFeed(ctx context.Context, in *FetchGroupFeedRequest, opts ...grpc.CallOption) (*FacebookPostList, error) {
76
+ out := new(FacebookPostList)
77
+ err := c.cc.Invoke(ctx, "/fbcrawl_colly.Grpc/FetchGroupFeed", in, out, opts...)
78
+ if err != nil {
79
+ return nil, err
80
+ }
81
+ return out, nil
82
+ }
83
+
84
+ func (c *grpcClient) FetchPost(ctx context.Context, in *FetchPostRequest, opts ...grpc.CallOption) (*FacebookPost, error) {
85
+ out := new(FacebookPost)
86
+ err := c.cc.Invoke(ctx, "/fbcrawl_colly.Grpc/FetchPost", in, out, opts...)
87
+ if err != nil {
88
+ return nil, err
89
+ }
90
+ return out, nil
91
+ }
92
+
93
+ func (c *grpcClient) FetchContentImages(ctx context.Context, in *FetchContentImagesRequest, opts ...grpc.CallOption) (*FacebookImageList, error) {
94
+ out := new(FacebookImageList)
95
+ err := c.cc.Invoke(ctx, "/fbcrawl_colly.Grpc/FetchContentImages", in, out, opts...)
96
+ if err != nil {
97
+ return nil, err
98
+ }
99
+ return out, nil
100
+ }
101
+
102
+ func (c *grpcClient) FetchImageUrl(ctx context.Context, in *FetchImageUrlRequest, opts ...grpc.CallOption) (*FacebookImage, error) {
103
+ out := new(FacebookImage)
104
+ err := c.cc.Invoke(ctx, "/fbcrawl_colly.Grpc/FetchImageUrl", in, out, opts...)
105
+ if err != nil {
106
+ return nil, err
107
+ }
108
+ return out, nil
109
+ }
110
+
111
+ // GrpcServer is the server API for Grpc service.
112
+ // All implementations must embed UnimplementedGrpcServer
113
+ // for forward compatibility
114
+ type GrpcServer interface {
115
+ // Sends a greeting
116
+ Login(context.Context, *LoginRequest) (*LoginResponse, error)
117
+ FetchMyGroups(context.Context, *FetchMyGroupsRequest) (*FacebookGroupList, error)
118
+ FetchGroupInfo(context.Context, *FetchGroupInfoRequest) (*FacebookGroup, error)
119
+ FetchUserInfo(context.Context, *FetchUserInfoRequest) (*FacebookUser, error)
120
+ FetchGroupFeed(context.Context, *FetchGroupFeedRequest) (*FacebookPostList, error)
121
+ FetchPost(context.Context, *FetchPostRequest) (*FacebookPost, error)
122
+ FetchContentImages(context.Context, *FetchContentImagesRequest) (*FacebookImageList, error)
123
+ FetchImageUrl(context.Context, *FetchImageUrlRequest) (*FacebookImage, error)
124
+ mustEmbedUnimplementedGrpcServer()
125
+ }
126
+
127
+ // UnimplementedGrpcServer must be embedded to have forward compatible implementations.
128
+ type UnimplementedGrpcServer struct {
129
+ }
130
+
131
+ func (*UnimplementedGrpcServer) Login(context.Context, *LoginRequest) (*LoginResponse, error) {
132
+ return nil, status.Errorf(codes.Unimplemented, "method Login not implemented")
133
+ }
134
+ func (*UnimplementedGrpcServer) FetchMyGroups(context.Context, *FetchMyGroupsRequest) (*FacebookGroupList, error) {
135
+ return nil, status.Errorf(codes.Unimplemented, "method FetchMyGroups not implemented")
136
+ }
137
+ func (*UnimplementedGrpcServer) FetchGroupInfo(context.Context, *FetchGroupInfoRequest) (*FacebookGroup, error) {
138
+ return nil, status.Errorf(codes.Unimplemented, "method FetchGroupInfo not implemented")
139
+ }
140
+ func (*UnimplementedGrpcServer) FetchUserInfo(context.Context, *FetchUserInfoRequest) (*FacebookUser, error) {
141
+ return nil, status.Errorf(codes.Unimplemented, "method FetchUserInfo not implemented")
142
+ }
143
+ func (*UnimplementedGrpcServer) FetchGroupFeed(context.Context, *FetchGroupFeedRequest) (*FacebookPostList, error) {
144
+ return nil, status.Errorf(codes.Unimplemented, "method FetchGroupFeed not implemented")
145
+ }
146
+ func (*UnimplementedGrpcServer) FetchPost(context.Context, *FetchPostRequest) (*FacebookPost, error) {
147
+ return nil, status.Errorf(codes.Unimplemented, "method FetchPost not implemented")
148
+ }
149
+ func (*UnimplementedGrpcServer) FetchContentImages(context.Context, *FetchContentImagesRequest) (*FacebookImageList, error) {
150
+ return nil, status.Errorf(codes.Unimplemented, "method FetchContentImages not implemented")
151
+ }
152
+ func (*UnimplementedGrpcServer) FetchImageUrl(context.Context, *FetchImageUrlRequest) (*FacebookImage, error) {
153
+ return nil, status.Errorf(codes.Unimplemented, "method FetchImageUrl not implemented")
154
+ }
155
+ func (*UnimplementedGrpcServer) mustEmbedUnimplementedGrpcServer() {}
156
+
157
+ func RegisterGrpcServer(s *grpc.Server, srv GrpcServer) {
158
+ s.RegisterService(&_Grpc_serviceDesc, srv)
159
+ }
160
+
161
+ func _Grpc_Login_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
162
+ in := new(LoginRequest)
163
+ if err := dec(in); err != nil {
164
+ return nil, err
165
+ }
166
+ if interceptor == nil {
167
+ return srv.(GrpcServer).Login(ctx, in)
168
+ }
169
+ info := &grpc.UnaryServerInfo{
170
+ Server: srv,
171
+ FullMethod: "/fbcrawl_colly.Grpc/Login",
172
+ }
173
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
174
+ return srv.(GrpcServer).Login(ctx, req.(*LoginRequest))
175
+ }
176
+ return interceptor(ctx, in, info, handler)
177
+ }
178
+
179
+ func _Grpc_FetchMyGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
180
+ in := new(FetchMyGroupsRequest)
181
+ if err := dec(in); err != nil {
182
+ return nil, err
183
+ }
184
+ if interceptor == nil {
185
+ return srv.(GrpcServer).FetchMyGroups(ctx, in)
186
+ }
187
+ info := &grpc.UnaryServerInfo{
188
+ Server: srv,
189
+ FullMethod: "/fbcrawl_colly.Grpc/FetchMyGroups",
190
+ }
191
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
192
+ return srv.(GrpcServer).FetchMyGroups(ctx, req.(*FetchMyGroupsRequest))
193
+ }
194
+ return interceptor(ctx, in, info, handler)
195
+ }
196
+
197
+ func _Grpc_FetchGroupInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
198
+ in := new(FetchGroupInfoRequest)
199
+ if err := dec(in); err != nil {
200
+ return nil, err
201
+ }
202
+ if interceptor == nil {
203
+ return srv.(GrpcServer).FetchGroupInfo(ctx, in)
204
+ }
205
+ info := &grpc.UnaryServerInfo{
206
+ Server: srv,
207
+ FullMethod: "/fbcrawl_colly.Grpc/FetchGroupInfo",
208
+ }
209
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
210
+ return srv.(GrpcServer).FetchGroupInfo(ctx, req.(*FetchGroupInfoRequest))
211
+ }
212
+ return interceptor(ctx, in, info, handler)
213
+ }
214
+
215
+ func _Grpc_FetchUserInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
216
+ in := new(FetchUserInfoRequest)
217
+ if err := dec(in); err != nil {
218
+ return nil, err
219
+ }
220
+ if interceptor == nil {
221
+ return srv.(GrpcServer).FetchUserInfo(ctx, in)
222
+ }
223
+ info := &grpc.UnaryServerInfo{
224
+ Server: srv,
225
+ FullMethod: "/fbcrawl_colly.Grpc/FetchUserInfo",
226
+ }
227
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
228
+ return srv.(GrpcServer).FetchUserInfo(ctx, req.(*FetchUserInfoRequest))
229
+ }
230
+ return interceptor(ctx, in, info, handler)
231
+ }
232
+
233
+ func _Grpc_FetchGroupFeed_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
234
+ in := new(FetchGroupFeedRequest)
235
+ if err := dec(in); err != nil {
236
+ return nil, err
237
+ }
238
+ if interceptor == nil {
239
+ return srv.(GrpcServer).FetchGroupFeed(ctx, in)
240
+ }
241
+ info := &grpc.UnaryServerInfo{
242
+ Server: srv,
243
+ FullMethod: "/fbcrawl_colly.Grpc/FetchGroupFeed",
244
+ }
245
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
246
+ return srv.(GrpcServer).FetchGroupFeed(ctx, req.(*FetchGroupFeedRequest))
247
+ }
248
+ return interceptor(ctx, in, info, handler)
249
+ }
250
+
251
+ func _Grpc_FetchPost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
252
+ in := new(FetchPostRequest)
253
+ if err := dec(in); err != nil {
254
+ return nil, err
255
+ }
256
+ if interceptor == nil {
257
+ return srv.(GrpcServer).FetchPost(ctx, in)
258
+ }
259
+ info := &grpc.UnaryServerInfo{
260
+ Server: srv,
261
+ FullMethod: "/fbcrawl_colly.Grpc/FetchPost",
262
+ }
263
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
264
+ return srv.(GrpcServer).FetchPost(ctx, req.(*FetchPostRequest))
265
+ }
266
+ return interceptor(ctx, in, info, handler)
267
+ }
268
+
269
+ func _Grpc_FetchContentImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
270
+ in := new(FetchContentImagesRequest)
271
+ if err := dec(in); err != nil {
272
+ return nil, err
273
+ }
274
+ if interceptor == nil {
275
+ return srv.(GrpcServer).FetchContentImages(ctx, in)
276
+ }
277
+ info := &grpc.UnaryServerInfo{
278
+ Server: srv,
279
+ FullMethod: "/fbcrawl_colly.Grpc/FetchContentImages",
280
+ }
281
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
282
+ return srv.(GrpcServer).FetchContentImages(ctx, req.(*FetchContentImagesRequest))
283
+ }
284
+ return interceptor(ctx, in, info, handler)
285
+ }
286
+
287
+ func _Grpc_FetchImageUrl_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
288
+ in := new(FetchImageUrlRequest)
289
+ if err := dec(in); err != nil {
290
+ return nil, err
291
+ }
292
+ if interceptor == nil {
293
+ return srv.(GrpcServer).FetchImageUrl(ctx, in)
294
+ }
295
+ info := &grpc.UnaryServerInfo{
296
+ Server: srv,
297
+ FullMethod: "/fbcrawl_colly.Grpc/FetchImageUrl",
298
+ }
299
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
300
+ return srv.(GrpcServer).FetchImageUrl(ctx, req.(*FetchImageUrlRequest))
301
+ }
302
+ return interceptor(ctx, in, info, handler)
303
+ }
304
+
305
+ var _Grpc_serviceDesc = grpc.ServiceDesc{
306
+ ServiceName: "fbcrawl_colly.Grpc",
307
+ HandlerType: (*GrpcServer)(nil),
308
+ Methods: []grpc.MethodDesc{
309
+ {
310
+ MethodName: "Login",
311
+ Handler: _Grpc_Login_Handler,
312
+ },
313
+ {
314
+ MethodName: "FetchMyGroups",
315
+ Handler: _Grpc_FetchMyGroups_Handler,
316
+ },
317
+ {
318
+ MethodName: "FetchGroupInfo",
319
+ Handler: _Grpc_FetchGroupInfo_Handler,
320
+ },
321
+ {
322
+ MethodName: "FetchUserInfo",
323
+ Handler: _Grpc_FetchUserInfo_Handler,
324
+ },
325
+ {
326
+ MethodName: "FetchGroupFeed",
327
+ Handler: _Grpc_FetchGroupFeed_Handler,
328
+ },
329
+ {
330
+ MethodName: "FetchPost",
331
+ Handler: _Grpc_FetchPost_Handler,
332
+ },
333
+ {
334
+ MethodName: "FetchContentImages",
335
+ Handler: _Grpc_FetchContentImages_Handler,
336
+ },
337
+ {
338
+ MethodName: "FetchImageUrl",
339
+ Handler: _Grpc_FetchImageUrl_Handler,
340
+ },
341
+ },
342
+ Streams: []grpc.StreamDesc{},
343
+ Metadata: "fbcrawl.proto",
344
+ }
data/go.mod CHANGED
@@ -4,21 +4,14 @@ go 1.14
4
4
 
5
5
  require (
6
6
  github.com/PuerkitoBio/goquery v1.5.1
7
- github.com/andybalholm/cascadia v1.2.0 // indirect
8
- github.com/antchfx/htmlquery v1.2.3 // indirect
9
- github.com/antchfx/xmlquery v1.2.4 // indirect
10
- github.com/antchfx/xpath v1.1.9 // indirect
11
- github.com/gobwas/glob v0.2.3 // indirect
12
- github.com/gocolly/colly v1.2.0
7
+ github.com/gocolly/colly/v2 v2.1.0
13
8
  github.com/golang/protobuf v1.4.2
14
9
  github.com/google/logger v1.1.0
15
- github.com/kennygrant/sanitize v1.2.4 // indirect
10
+ github.com/hashicorp/golang-lru v0.5.4
16
11
  github.com/olebedev/when v0.0.0-20190311101825-c3b538a97254
17
- github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca // indirect
18
- github.com/temoto/robotstxt v1.1.1 // indirect
19
12
  github.com/thoas/go-funk v0.7.0
13
+ github.com/xlzd/gotp v0.0.0-20181030022105-c8557ba2c119
20
14
  golang.org/x/net v0.0.0-20200707034311-ab3426394381 // indirect
21
- golang.org/x/text v0.3.3 // indirect
22
- google.golang.org/appengine v1.6.6 // indirect
15
+ google.golang.org/grpc v1.27.0
23
16
  google.golang.org/protobuf v1.25.0
24
17
  )
data/go.sum CHANGED
@@ -4,7 +4,6 @@ github.com/AlekSi/pointer v1.0.0/go.mod h1:1kjywbfcPFCmncIxtk6fIEub6LKrfMz3gc5QK
4
4
  github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
5
5
  github.com/PuerkitoBio/goquery v1.5.1 h1:PSPBGne8NIUWw+/7vFBV+kG2J/5MOjbzc7154OaKCSE=
6
6
  github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
7
- github.com/andybalholm/cascadia v1.1.0 h1:BuuO6sSfQNFRu1LppgbD25Hr2vLYW25JvxHs5zzsLTo=
8
7
  github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
9
8
  github.com/andybalholm/cascadia v1.2.0 h1:vuRCkM5Ozh/BfmsaTm26kbjm0mIOM3yS5Ek/F5h18aE=
10
9
  github.com/andybalholm/cascadia v1.2.0/go.mod h1:YCyR8vOZT9aZ1CHEd8ap0gMVm2aFgxBp0T0eFw1RUQY=
@@ -12,13 +11,11 @@ github.com/antchfx/htmlquery v1.2.3 h1:sP3NFDneHx2stfNXCKbhHFo8XgNjCACnU/4AO5gWz
12
11
  github.com/antchfx/htmlquery v1.2.3/go.mod h1:B0ABL+F5irhhMWg54ymEZinzMSi0Kt3I2if0BLYa3V0=
13
12
  github.com/antchfx/xmlquery v1.2.4 h1:T/SH1bYdzdjTMoz2RgsfVKbM5uWh3gjDYYepFqQmFv4=
14
13
  github.com/antchfx/xmlquery v1.2.4/go.mod h1:KQQuESaxSlqugE2ZBcM/qn+ebIpt+d+4Xx7YcSGAIrM=
15
- github.com/antchfx/xpath v1.1.6 h1:6sVh6hB5T6phw1pFpHRQ+C4bd8sNI+O58flqtg7h0R0=
16
14
  github.com/antchfx/xpath v1.1.6/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=
17
- github.com/antchfx/xpath v1.1.9 h1:s3QDSTRoZMK6EqLajCUt/BJMUATPHvzwlRqKqg12yjU=
18
- github.com/antchfx/xpath v1.1.9/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=
15
+ github.com/antchfx/xpath v1.1.8 h1:PcL6bIX42Px5usSx6xRYw/wjB3wYGkj0MJ9MBzEKVgk=
16
+ github.com/antchfx/xpath v1.1.8/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=
19
17
  github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
20
18
  github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
21
- github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
22
19
  github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
23
20
  github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
24
21
  github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -28,12 +25,14 @@ github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
28
25
  github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
29
26
  github.com/gocolly/colly v1.2.0 h1:qRz9YAn8FIH0qzgNUw+HT9UN7wm1oF9OBAilwEWpyrI=
30
27
  github.com/gocolly/colly v1.2.0/go.mod h1:Hof5T3ZswNVsOHYmba1u03W65HDWgpV5HifSuueE0EA=
28
+ github.com/gocolly/colly/v2 v2.1.0 h1:k0DuZkDoCsx51bKpRJNEmcxcp+W5N8ziuwGaSDuFoGs=
29
+ github.com/gocolly/colly/v2 v2.1.0/go.mod h1:I2MuhsLjQ+Ex+IzK3afNS8/1qP3AedHOusRPcRdC5o0=
30
+ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
31
31
  github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
32
32
  github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY=
33
33
  github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
34
34
  github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
35
35
  github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
36
- github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg=
37
36
  github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
38
37
  github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
39
38
  github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
@@ -52,6 +51,9 @@ github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
52
51
  github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
53
52
  github.com/google/logger v1.1.0 h1:saB74Etb4EAJNH3z74CVbCKk75hld/8T0CsXKetWCwM=
54
53
  github.com/google/logger v1.1.0/go.mod h1:w7O8nrRr0xufejBlQMI83MXqRusvREoJdaAxV+CoAB4=
54
+ github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
55
+ github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
56
+ github.com/jawher/mow.cli v1.1.0/go.mod h1:aNaQlc7ozF3vw6IJ2dHjp2ZFiA4ozMIYY6PyuRJwlUg=
55
57
  github.com/kennygrant/sanitize v1.2.4 h1:gN25/otpP5vAsO2djbMhF/LQX6R7+O1TB4yv8NzpJ3o=
56
58
  github.com/kennygrant/sanitize v1.2.4/go.mod h1:LGsjYYtgxbetdg5owWB2mpgUL6e2nfw2eObZ0u0qvak=
57
59
  github.com/olebedev/when v0.0.0-20190311101825-c3b538a97254 h1:JYoQR67E1vv1WGoeW8DkdFs7vrIEe/5wP+qJItd5tUE=
@@ -64,7 +66,7 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:
64
66
  github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca h1:NugYot0LIVPxTvN8n+Kvkn6TrbMyxQiuvKdEwFdR9vI=
65
67
  github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU=
66
68
  github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
67
- github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
69
+ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
68
70
  github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
69
71
  github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
70
72
  github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
@@ -72,7 +74,10 @@ github.com/temoto/robotstxt v1.1.1 h1:Gh8RCs8ouX3hRSxxK7B1mO5RFByQ4CmJZDwgom++Ja
72
74
  github.com/temoto/robotstxt v1.1.1/go.mod h1:+1AmkuG3IYkh1kv0d2qEB9Le88ehNO0zwOr3ujewlOo=
73
75
  github.com/thoas/go-funk v0.7.0 h1:GmirKrs6j6zJbhJIficOsz2aAI7700KsU/5YrdHRM1Y=
74
76
  github.com/thoas/go-funk v0.7.0/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q=
77
+ github.com/xlzd/gotp v0.0.0-20181030022105-c8557ba2c119 h1:YyPWX3jLOtYKulBR6AScGIs74lLrJcgeKRwcbAuQOG4=
78
+ github.com/xlzd/gotp v0.0.0-20181030022105-c8557ba2c119/go.mod h1:/nuTSlK+okRfR/vnIPqR89fFKonnWPiZymN5ydRJkX8=
75
79
  golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
80
+ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
76
81
  golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
77
82
  golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
78
83
  golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
@@ -87,6 +92,7 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
87
92
  golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
88
93
  golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
89
94
  golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
95
+ golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
90
96
  golang.org/x/net v0.0.0-20200707034311-ab3426394381 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU=
91
97
  golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
92
98
  golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -101,13 +107,12 @@ golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7w
101
107
  golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
102
108
  golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
103
109
  golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
104
- golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
105
- golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
106
110
  golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
107
111
  golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
108
112
  golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
109
113
  golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
110
114
  golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
115
+ golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
111
116
  golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
112
117
  golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
113
118
  google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
@@ -116,9 +121,11 @@ google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuh
116
121
  google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
117
122
  google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
118
123
  google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
124
+ google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY=
119
125
  google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
120
126
  google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
121
127
  google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
128
+ google.golang.org/grpc v1.27.0 h1:rRYRFMVgRv6E0D70Skyfsr28tDXIuuPZyWGMPdMcnXg=
122
129
  google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
123
130
  google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
124
131
  google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
@@ -126,9 +133,9 @@ google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQ
126
133
  google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
127
134
  google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
128
135
  google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
129
- google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM=
130
136
  google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
131
137
  google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
138
+ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
132
139
  google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
133
140
  google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
134
141
  gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=