fbcrawl-colly 0.2.4 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1 @@
1
-
2
- module FbcrawlColly
3
-
4
- end
1
+ require_relative './fbcrawl_colly'
@@ -0,0 +1,5 @@
1
+ require 'fbcrawl_services_pb'
2
+ require 'fbcrawl_colly/client'
3
+ module FbCrawlColly
4
+
5
+ end
@@ -0,0 +1,54 @@
1
+ module FbcrawlColly
2
+ class Client
3
+
4
+ def initialize(host_and_port)
5
+ @host_and_port = host_and_port
6
+ @client = new_grpc_client
7
+ @context = nil
8
+ end
9
+
10
+ def login(email, password, totp_secret = "")
11
+ cookies = @client.login(FbcrawlColly::LoginRequest.new(email: email, password: password, totp_secret: totp_secret)).cookies
12
+ @context = FbcrawlColly::Context.new(cookies: cookies)
13
+ cookies
14
+ end
15
+
16
+ def login_with_cookies(cookies)
17
+ @context = FbcrawlColly::Context.new(cookies: cookies)
18
+ end
19
+
20
+ def fetch_user_info(username)
21
+ s = @client.fetch_user_info(FbcrawlColly::FetchUserInfoRequest.new(context: @context, username: username))
22
+ end
23
+
24
+ def fetch_my_groups
25
+ s = @client.fetch_my_groups(FbcrawlColly::FetchMyGroupsRequest.new(context: @context))
26
+ end
27
+
28
+ def fetch_group_info(group_id_or_username)
29
+ s = @client.fetch_group_info(FbcrawlColly::FetchGroupInfoRequest.new(context: @context, group_username: group_id_or_username))
30
+ end
31
+
32
+ def fetch_group_feed(group_id, next_cursor = nil)
33
+ s = @client.fetch_group_feed(FbcrawlColly::FetchGroupFeedRequest.new(context: @context, group_id: group_id, next_cursor: next_cursor))
34
+ end
35
+
36
+ def fetch_post(group_id, post_id, comment_next_cursor = nil)
37
+ s = @client.fetch_post(FbcrawlColly::FetchPostRequest.new(context: @context, group_id: group_id, post_id: post_id, comment_next_cursor: comment_next_cursor))
38
+ end
39
+
40
+ def fetch_content_images(post_id, next_cursor = nil)
41
+ s = @client.fetch_content_images(FbcrawlColly::FetchContentImagesRequest.new(context: @context, post_id: post_id, next_cursor: next_cursor))
42
+ end
43
+
44
+ def fetch_image_url(image_id)
45
+ s = @client.fetch_image_url(FbcrawlColly::FetchImageUrlRequest.new(context: @context, image_id: image_id))
46
+ end
47
+
48
+ private
49
+
50
+ def new_grpc_client
51
+ FbcrawlColly::Grpc::Stub.new(@host_and_port, :this_channel_is_insecure)
52
+ end
53
+ end
54
+ end
@@ -1,3 +1,3 @@
1
1
  module FbcrawlColly
2
- VERSION = "0.2.4"
2
+ VERSION = "1.1.1"
3
3
  end
@@ -0,0 +1,127 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # source: fbcrawl.proto
3
+
4
+ require 'google/protobuf'
5
+
6
+ Google::Protobuf::DescriptorPool.generated_pool.build do
7
+ add_file("fbcrawl.proto", :syntax => :proto3) do
8
+ add_message "fbcrawl_colly.Context" do
9
+ optional :cookies, :string, 1
10
+ end
11
+ add_message "fbcrawl_colly.LoginRequest" do
12
+ optional :email, :string, 2
13
+ optional :password, :string, 3
14
+ optional :totp_secret, :string, 4
15
+ end
16
+ add_message "fbcrawl_colly.LoginResponse" do
17
+ optional :cookies, :string, 1
18
+ end
19
+ add_message "fbcrawl_colly.LoginWithCookiesRequest" do
20
+ optional :cookies, :string, 1
21
+ end
22
+ add_message "fbcrawl_colly.FetchMyGroupsRequest" do
23
+ optional :context, :message, 1, "fbcrawl_colly.Context"
24
+ end
25
+ add_message "fbcrawl_colly.FetchGroupInfoRequest" do
26
+ optional :context, :message, 1, "fbcrawl_colly.Context"
27
+ optional :group_username, :string, 2
28
+ end
29
+ add_message "fbcrawl_colly.FetchUserInfoRequest" do
30
+ optional :context, :message, 1, "fbcrawl_colly.Context"
31
+ optional :username, :string, 2
32
+ end
33
+ add_message "fbcrawl_colly.FetchGroupFeedRequest" do
34
+ optional :context, :message, 1, "fbcrawl_colly.Context"
35
+ optional :group_id, :int64, 2
36
+ optional :next_cursor, :string, 3
37
+ end
38
+ add_message "fbcrawl_colly.FetchPostRequest" do
39
+ optional :context, :message, 1, "fbcrawl_colly.Context"
40
+ optional :group_id, :int64, 2
41
+ optional :post_id, :int64, 3
42
+ optional :comment_next_cursor, :string, 4
43
+ end
44
+ add_message "fbcrawl_colly.FetchContentImagesRequest" do
45
+ optional :context, :message, 1, "fbcrawl_colly.Context"
46
+ optional :post_id, :int64, 2
47
+ optional :next_cursor, :string, 3
48
+ end
49
+ add_message "fbcrawl_colly.FetchImageUrlRequest" do
50
+ optional :context, :message, 1, "fbcrawl_colly.Context"
51
+ optional :image_id, :int64, 2
52
+ end
53
+ add_message "fbcrawl_colly.FacebookGroupList" do
54
+ repeated :groups, :message, 1, "fbcrawl_colly.FacebookGroup"
55
+ end
56
+ add_message "fbcrawl_colly.FacebookGroup" do
57
+ optional :id, :int64, 1
58
+ optional :name, :string, 2
59
+ optional :member_count, :int64, 3
60
+ end
61
+ add_message "fbcrawl_colly.FacebookUser" do
62
+ optional :id, :int64, 1
63
+ optional :name, :string, 2
64
+ optional :username, :string, 3
65
+ optional :friend_count, :int64, 4
66
+ end
67
+ add_message "fbcrawl_colly.FacebookPost" do
68
+ optional :id, :int64, 1
69
+ optional :group, :message, 2, "fbcrawl_colly.FacebookGroup"
70
+ optional :user, :message, 3, "fbcrawl_colly.FacebookUser"
71
+ optional :content, :string, 4
72
+ optional :comments, :message, 5, "fbcrawl_colly.CommentList"
73
+ optional :content_link, :string, 6
74
+ repeated :content_images, :message, 7, "fbcrawl_colly.FacebookImage"
75
+ optional :content_image, :message, 8, "fbcrawl_colly.FacebookImage"
76
+ optional :created_at, :int64, 9
77
+ optional :reaction_count, :int64, 10
78
+ optional :comment_count, :int64, 11
79
+ end
80
+ add_message "fbcrawl_colly.CommentList" do
81
+ repeated :comments, :message, 5, "fbcrawl_colly.FacebookComment"
82
+ optional :next_cursor, :string, 12
83
+ end
84
+ add_message "fbcrawl_colly.FacebookImage" do
85
+ optional :id, :int64, 1
86
+ optional :url, :string, 2
87
+ end
88
+ add_message "fbcrawl_colly.FacebookComment" do
89
+ optional :id, :int64, 1
90
+ optional :post, :message, 2, "fbcrawl_colly.FacebookPost"
91
+ optional :user, :message, 3, "fbcrawl_colly.FacebookUser"
92
+ optional :content, :string, 4
93
+ optional :created_at, :int64, 5
94
+ end
95
+ add_message "fbcrawl_colly.FacebookPostList" do
96
+ repeated :posts, :message, 1, "fbcrawl_colly.FacebookPost"
97
+ optional :next_cursor, :string, 2
98
+ end
99
+ add_message "fbcrawl_colly.FacebookImageList" do
100
+ repeated :images, :message, 1, "fbcrawl_colly.FacebookImage"
101
+ optional :next_cursor, :string, 2
102
+ end
103
+ end
104
+ end
105
+
106
+ module FbcrawlColly
107
+ Context = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.Context").msgclass
108
+ LoginRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.LoginRequest").msgclass
109
+ LoginResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.LoginResponse").msgclass
110
+ LoginWithCookiesRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.LoginWithCookiesRequest").msgclass
111
+ FetchMyGroupsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FetchMyGroupsRequest").msgclass
112
+ FetchGroupInfoRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FetchGroupInfoRequest").msgclass
113
+ FetchUserInfoRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FetchUserInfoRequest").msgclass
114
+ FetchGroupFeedRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FetchGroupFeedRequest").msgclass
115
+ FetchPostRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FetchPostRequest").msgclass
116
+ FetchContentImagesRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FetchContentImagesRequest").msgclass
117
+ FetchImageUrlRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FetchImageUrlRequest").msgclass
118
+ FacebookGroupList = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FacebookGroupList").msgclass
119
+ FacebookGroup = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FacebookGroup").msgclass
120
+ FacebookUser = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FacebookUser").msgclass
121
+ FacebookPost = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FacebookPost").msgclass
122
+ CommentList = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.CommentList").msgclass
123
+ FacebookImage = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FacebookImage").msgclass
124
+ FacebookComment = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FacebookComment").msgclass
125
+ FacebookPostList = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FacebookPostList").msgclass
126
+ FacebookImageList = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FacebookImageList").msgclass
127
+ end
@@ -0,0 +1,30 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # Source: fbcrawl.proto for package 'fbcrawl_colly'
3
+
4
+ require 'grpc'
5
+ require 'fbcrawl_pb'
6
+
7
+ module FbcrawlColly
8
+ module Grpc
9
+ class Service
10
+
11
+ include GRPC::GenericService
12
+
13
+ self.marshal_class_method = :encode
14
+ self.unmarshal_class_method = :decode
15
+ self.service_name = 'fbcrawl_colly.Grpc'
16
+
17
+ # Sends a greeting
18
+ rpc :Login, FbcrawlColly::LoginRequest, FbcrawlColly::LoginResponse
19
+ rpc :FetchMyGroups, FbcrawlColly::FetchMyGroupsRequest, FbcrawlColly::FacebookGroupList
20
+ rpc :FetchGroupInfo, FbcrawlColly::FetchGroupInfoRequest, FbcrawlColly::FacebookGroup
21
+ rpc :FetchUserInfo, FbcrawlColly::FetchUserInfoRequest, FbcrawlColly::FacebookUser
22
+ rpc :FetchGroupFeed, FbcrawlColly::FetchGroupFeedRequest, FbcrawlColly::FacebookPostList
23
+ rpc :FetchPost, FbcrawlColly::FetchPostRequest, FbcrawlColly::FacebookPost
24
+ rpc :FetchContentImages, FbcrawlColly::FetchContentImagesRequest, FbcrawlColly::FacebookImageList
25
+ rpc :FetchImageUrl, FbcrawlColly::FetchImageUrlRequest, FbcrawlColly::FacebookImage
26
+ end
27
+
28
+ Stub = Service.rpc_stub_class
29
+ end
30
+ end
data/main.go CHANGED
@@ -1,22 +1,17 @@
1
1
  package main
2
2
 
3
- /*
4
- #include <stdio.h>
5
- #include <stdlib.h>
6
-
7
- static void myprint(char* s) {
8
- printf("%s\n", s);
9
- }
10
-
11
-
12
- */
13
3
  import "C"
14
-
15
4
  import (
5
+ context "context"
16
6
  "flag"
17
- "github.com/golang/protobuf/proto"
18
- "qnetwork.net/fbcrawl/fbcolly"
19
- "unsafe"
7
+ "github.com/google/logger"
8
+ "google.golang.org/grpc"
9
+ "io/ioutil"
10
+ "log"
11
+ "net"
12
+ "os"
13
+ "qnetwork.net/fbcrawl/fbcrawl"
14
+ "qnetwork.net/fbcrawl/fbcrawl/pb"
20
15
  )
21
16
 
22
17
  const logPath = "parse.log"
@@ -27,91 +22,87 @@ var password = flag.String("password", "change_me", "facebook password")
27
22
  var otp = flag.String("otp", "123456", "facebook otp")
28
23
  var groupId = flag.String("groupId", "334294967318328", "facebook group id, default is 334294967318328")
29
24
 
30
- var allInstances = map[uintptr]*fbcolly.Fbcolly{}
31
-
32
- //export Init
33
- func Init() uintptr {
25
+ func getColly(context *pb.Context) *fbcolly.Fbcolly {
34
26
  instance := fbcolly.New()
35
- ptr := (uintptr)(unsafe.Pointer(instance))
36
- allInstances[ptr] = instance
37
- return ptr
27
+ if context != nil && len(context.Cookies) > 0 {
28
+ _ = instance.LoginWithCookies(context.Cookies)
29
+ }
30
+
31
+ return instance
38
32
  }
39
33
 
40
- //export FreeColly
41
- func FreeColly(pointer unsafe.Pointer) {
42
- delete(allInstances, uintptr(pointer))
34
+ // server is used to implement helloworld.GreeterServer.
35
+ type server struct {
36
+ pb.GrpcServer
43
37
  }
44
38
 
45
- //export Login
46
- func Login(pointer unsafe.Pointer, email *C.char, password *C.char) *C.char {
47
- p := (*fbcolly.Fbcolly)(pointer)
48
- cookies, err := p.Login(C.GoString(email), C.GoString(password), "")
39
+ func (s server) Login(ctx context.Context, request *pb.LoginRequest) (*pb.LoginResponse, error) {
40
+ p := getColly(nil)
41
+
42
+ cookies, err := p.Login(request.Email, request.Password, request.TotpSecret)
49
43
  if err == nil {
50
- return C.CString(cookies)
44
+ return &pb.LoginResponse{Cookies: cookies}, err
51
45
  }
52
- return nil
46
+ return nil, err
47
+ }
48
+
49
+ func (s server) FetchMyGroups(ctx context.Context, request *pb.FetchMyGroupsRequest) (*pb.FacebookGroupList, error) {
50
+ p := getColly(request.Context)
51
+ err, groupInfo := p.FetchMyGroups()
52
+ return groupInfo, err
53
53
  }
54
54
 
55
- //export LoginWithCookies
56
- func LoginWithCookies(pointer unsafe.Pointer, cookies *C.char) {
57
- p := (*fbcolly.Fbcolly)(pointer)
58
- p.LoginWithCookies(C.GoString(cookies))
55
+ func (s server) FetchGroupInfo(ctx context.Context, request *pb.FetchGroupInfoRequest) (*pb.FacebookGroup, error) {
56
+ p := getColly(request.Context)
57
+ err, groupInfo := p.FetchGroupInfo(request.GroupUsername)
58
+ return groupInfo, err
59
59
  }
60
60
 
61
- //export FetchGroupInfo
62
- func FetchGroupInfo(pointer unsafe.Pointer, groupId int64) unsafe.Pointer {
63
- p := (*fbcolly.Fbcolly)(pointer)
64
- _, groupInfo := p.FetchGroupInfo(groupId)
65
- marshaled, _ := proto.Marshal(groupInfo)
66
- return C.CBytes(append(marshaled, 0))
61
+ func (s server) FetchUserInfo(ctx context.Context, request *pb.FetchUserInfoRequest) (*pb.FacebookUser, error) {
62
+ p := getColly(request.Context)
63
+ err, userInfo := p.FetchUserInfo(request.Username)
64
+ return userInfo, err
67
65
  }
68
- //export FetchGroupFeed
69
- func FetchGroupFeed(pointer unsafe.Pointer, groupId int64) unsafe.Pointer {
70
- p := (*fbcolly.Fbcolly)(pointer)
71
- _, postsList := p.FetchGroupFeed(groupId)
72
- marshaledPostsList, _ := proto.Marshal(postsList)
73
- return C.CBytes(append(marshaledPostsList, 0))
66
+
67
+ func (s server) FetchGroupFeed(ctx context.Context, request *pb.FetchGroupFeedRequest) (*pb.FacebookPostList, error) {
68
+ p := getColly(request.Context)
69
+ err, postsList := p.FetchGroupFeed(request.GroupId, request.NextCursor)
70
+ return postsList, err
74
71
  }
75
72
 
76
- //export FetchPost
77
- func FetchPost(pointer unsafe.Pointer, groupId int64, postId int64) unsafe.Pointer {
78
- p := (*fbcolly.Fbcolly)(pointer)
79
- _, post := p.FetchPost(groupId, postId)
80
- marshaledPost, _ := proto.Marshal(post)
81
- return C.CBytes(append(marshaledPost, 0))
73
+ func (s server) FetchPost(ctx context.Context, request *pb.FetchPostRequest) (*pb.FacebookPost, error) {
74
+ p := getColly(request.Context)
75
+ err, post := p.FetchPost(request.GroupId, request.PostId, request.CommentNextCursor)
76
+ return post, err
82
77
  }
83
78
 
84
- //export FetchContentImages
85
- func FetchContentImages(pointer unsafe.Pointer, postId int64) unsafe.Pointer {
86
- p := (*fbcolly.Fbcolly)(pointer)
87
- _, imageList := p.FetchContentImages(postId)
88
- marshaled, _ := proto.Marshal(imageList)
89
- return C.CBytes(append(marshaled, 0))
79
+ func (s server) FetchContentImages(ctx context.Context, request *pb.FetchContentImagesRequest) (*pb.FacebookImageList, error) {
80
+ p := getColly(request.Context)
81
+ err, imageList := p.FetchContentImages(request.PostId, request.NextCursor)
82
+ return imageList, err
90
83
  }
91
84
 
92
- //export FetchImageUrl
93
- func FetchImageUrl(pointer unsafe.Pointer, imageId int64) unsafe.Pointer {
94
- p := (*fbcolly.Fbcolly)(pointer)
95
- _, image := p.FetchImageUrl(imageId)
96
- marshaled, _ := proto.Marshal(image)
97
- return C.CBytes(append(marshaled, 0))
85
+ func (s server) FetchImageUrl(ctx context.Context, request *pb.FetchImageUrlRequest) (*pb.FacebookImage, error) {
86
+ p := getColly(request.Context)
87
+ err, image := p.FetchImageUrl(request.ImageId)
88
+ return image, err
98
89
  }
99
90
 
100
91
  func main() {
101
- //r := regexp.MustCompile("/([\\d\\w.]+)").FindStringSubmatch()[1]
102
- //print(r.FindStringSubmatch("/liem.phamthanh.161?refid=18&__tn__=R")[1])
103
- //flag.Parse()
104
- //
105
- ////post := fbcrawl.FacebookPost{}
106
- ////bPost, err := proto.Marshal(&post)
107
- //
108
- //lf, err := os.OpenFile(logPath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0660)
109
- //if err != nil {
110
- // logger.Fatalf("Failed to open log file: %v", err)
111
- //}
112
- //defer lf.Close()
113
- //defer logger.Init("fb-colly", *verbose, false, lf).Close()
114
- //f := fbcolly.New()
115
- //err = f.Login(*email, *password, *otp)
116
- //f.FetchGroupFeed(*groupId)
92
+ logger.Init("fb-colly", true, false, ioutil.Discard)
93
+
94
+ port := os.Getenv("PORT")
95
+ if len(port) == 0 {
96
+ port = "50051"
97
+ }
98
+ lis, err := net.Listen("tcp", ":"+port)
99
+ logger.Info("Port listened at", port)
100
+ if err != nil {
101
+ log.Fatalf("failed to listen: %v", err)
102
+ }
103
+ s := grpc.NewServer()
104
+ pb.RegisterGrpcServer(s, &server{})
105
+ if err := s.Serve(lis); err != nil {
106
+ log.Fatalf("failed to serve: %v", err)
107
+ }
117
108
  }
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fbcrawl-colly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Duy Le
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-15 00:00:00.000000000 Z
11
+ date: 2020-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: ffi
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: google-protobuf
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -39,13 +25,13 @@ dependencies:
39
25
  - !ruby/object:Gem::Version
40
26
  version: '0'
41
27
  - !ruby/object:Gem::Dependency
42
- name: rake-compiler
28
+ name: grpc
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - ">="
46
32
  - !ruby/object:Gem::Version
47
33
  version: '0'
48
- type: :development
34
+ type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
@@ -56,12 +42,12 @@ description: Crawl mbasic.facebook.com using GO Colly
56
42
  email:
57
43
  - duyleekun@gmail.com
58
44
  executables: []
59
- extensions:
60
- - ext/fbcrawl_colly/extconf.rb
45
+ extensions: []
61
46
  extra_rdoc_files: []
62
47
  files:
63
48
  - ".gitignore"
64
49
  - CODE_OF_CONDUCT.md
50
+ - Dockerfile
65
51
  - Gemfile
66
52
  - Gemfile.lock
67
53
  - LICENSE.txt
@@ -69,18 +55,19 @@ files:
69
55
  - Rakefile
70
56
  - bin/console
71
57
  - bin/setup
72
- - ext/fbcrawl_colly/.gitignore
73
- - ext/fbcrawl_colly/Makefile
74
- - ext/fbcrawl_colly/extconf.rb
75
- - fbcolly/fbcolly.go
76
58
  - fbcrawl-colly.gemspec
77
59
  - fbcrawl.proto
60
+ - fbcrawl/fbcolly.go
61
+ - fbcrawl/pb/fbcrawl.pb.go
62
+ - fbcrawl/pb/fbcrawl_grpc.pb.go
78
63
  - go.mod
79
64
  - go.sum
80
65
  - lib/fbcrawl-colly.rb
81
- - lib/fbcrawl_colly/colly.rb
82
- - lib/fbcrawl_colly/ffi.rb
66
+ - lib/fbcrawl_colly.rb
67
+ - lib/fbcrawl_colly/client.rb
83
68
  - lib/fbcrawl_colly/version.rb
69
+ - lib/pb/fbcrawl_pb.rb
70
+ - lib/pb/fbcrawl_services_pb.rb
84
71
  - main.go
85
72
  homepage: http://github.com/duyleekun/fbcrawl-colly
86
73
  licenses:
@@ -93,6 +80,7 @@ post_install_message:
93
80
  rdoc_options: []
94
81
  require_paths:
95
82
  - lib
83
+ - lib/pb
96
84
  required_ruby_version: !ruby/object:Gem::Requirement
97
85
  requirements:
98
86
  - - ">="