tox 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tox
4
+ ##
5
+ # Outgoing friend message representation in Tox client.
6
+ #
7
+ class OutFriendMessage
8
+ include OutMessage
9
+
10
+ attr_reader :friend, :id
11
+
12
+ def initialize(friend, id)
13
+ self.friend = friend
14
+ self.id = id
15
+ end
16
+
17
+ def client
18
+ friend.client
19
+ end
20
+
21
+ private
22
+
23
+ def friend=(value)
24
+ unless value.is_a? Friend
25
+ raise TypeError, "Expected #{Friend}, got #{value.class}"
26
+ end
27
+ @friend = value
28
+ end
29
+
30
+ def id=(value)
31
+ unless value.is_a? Integer
32
+ raise TypeError, "Expected #{Integer}, got #{value.class}"
33
+ end
34
+ unless value >= 0
35
+ raise 'Expected message ID to be greater than or equal to zero'
36
+ end
37
+ @id = value
38
+ end
39
+ end
40
+ end
@@ -1,21 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # tox.rb - Ruby interface for libtoxcore
4
- # Copyright (C) 2015-2017 Braiden Vasco
5
- #
6
- # This program is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # This program is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU General Public License
17
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
18
-
19
3
  module Tox
20
4
  ##
21
5
  # Abstract module for outgoing message representation in Tox client.
@@ -29,6 +13,12 @@ module Tox
29
13
  raise NotImplementedError, "#{self.class}#client"
30
14
  end
31
15
 
16
+ def ==(other)
17
+ self.class == other.class &&
18
+ friend == other.friend &&
19
+ id == other.id
20
+ end
21
+
32
22
  class SendQueueAllocError < NoMemoryError; end
33
23
  class TooLongError < RuntimeError; end
34
24
  class EmptyError < RuntimeError; end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tox
4
+ module Proxies
5
+ ##
6
+ # @abstract
7
+ # Base class for proxy used to connect to TCP relays.
8
+ #
9
+ class Base
10
+ HOST_MAX_BYTESIZE = 255
11
+ PORT_RANGE = 1..65_535
12
+
13
+ attr_reader :host, :port
14
+
15
+ def initialize(host, port)
16
+ self.host = host
17
+ self.port = port
18
+ end
19
+
20
+ def type
21
+ raise NotImplementedError, "#{self.class}#type"
22
+ end
23
+
24
+ def ==(other)
25
+ self.class == other.class &&
26
+ host == other.host &&
27
+ port == other.port
28
+ end
29
+
30
+ private
31
+
32
+ def host=(value)
33
+ unless value.is_a? String
34
+ raise TypeError, "Expected #{String}, got #{value.class}"
35
+ end
36
+ unless value.bytesize <= HOST_MAX_BYTESIZE
37
+ raise 'Proxy host string can not ' \
38
+ "be longer than #{HOST_MAX_BYTESIZE} bytes"
39
+ end
40
+ @host = value.frozen? ? value : value.dup.freeze
41
+ end
42
+
43
+ def port=(value)
44
+ unless value.is_a? Integer
45
+ raise TypeError, "Expected #{Integer}, got #{value.class}"
46
+ end
47
+ unless PORT_RANGE.include? value
48
+ raise "Expected value to be from range #{PORT_RANGE}"
49
+ end
50
+ @port = value
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tox
4
+ module Proxies
5
+ ##
6
+ # HTTP proxy used to connect to TCP relays.
7
+ #
8
+ class HTTP < Base
9
+ def type
10
+ ProxyType::HTTP
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tox
4
+ module Proxies
5
+ ##
6
+ # SOCKS5 proxy used to connect to TCP relays.
7
+ #
8
+ class SOCKS5 < Base
9
+ def type
10
+ ProxyType::SOCKS5
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tox
4
+ ##
5
+ # Type of proxy used to connect to TCP relays.
6
+ #
7
+ module ProxyType
8
+ # Don't use a proxy.
9
+ NONE = :none
10
+
11
+ # HTTP proxy using CONNECT.
12
+ HTTP = :http
13
+
14
+ # SOCKS proxy for simple socket pipes.
15
+ SOCKS5 = :socks5
16
+ end
17
+ end
@@ -1,21 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # tox.rb - Ruby interface for libtoxcore
4
- # Copyright (C) 2015-2017 Braiden Vasco
5
- #
6
- # This program is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # This program is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU General Public License
17
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
18
-
19
3
  module Tox
20
4
  ##
21
5
  # Public key primitive.
@@ -1,21 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # tox.rb - Ruby interface for libtoxcore
4
- # Copyright (C) 2015-2017 Braiden Vasco
5
- #
6
- # This program is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # This program is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU General Public License
17
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
18
-
19
3
  module Tox
20
4
  ##
21
5
  # Tox network status received from server running https://github.com/Tox/ToxStatus
@@ -1,21 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # tox.rb - Ruby interface for libtoxcore
4
- # Copyright (C) 2015-2017 Braiden Vasco
5
- #
6
- # This program is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # This program is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU General Public License
17
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
18
-
19
3
  module Tox
20
4
  ##
21
5
  # Represents the possible statuses a client can have.
@@ -1,28 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # tox.rb - Ruby interface for libtoxcore
4
- # Copyright (C) 2015-2017 Braiden Vasco
5
- #
6
- # This program is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # This program is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU General Public License
17
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
18
-
19
3
  module Tox
20
4
  ##
21
5
  # Gem, library API and ABI version strings and component numbers.
22
6
  #
23
7
  module Version
24
8
  # Gem version.
25
- GEM_VERSION = '0.0.2'
9
+ GEM_VERSION = '0.0.3'
26
10
 
27
11
  def self.const_missing(name)
28
12
  return "#{API_MAJOR}.#{API_MINOR}.#{API_PATCH}" if name == :API_VERSION
@@ -14,17 +14,23 @@ Gem::Specification.new do |spec|
14
14
  spec.summary = 'Ruby interface for libtoxcore'
15
15
  spec.platform = Gem::Platform::RUBY
16
16
 
17
+ spec.required_ruby_version = '~> 2.3'
18
+
17
19
  spec.authors = ['Braiden Vasco']
18
20
  spec.email = %w[braiden-vasco@users.noreply.github.com]
19
21
 
20
- spec.required_ruby_version = '~> 2.3'
21
-
22
22
  spec.description = <<-END.split.join ' '
23
23
  Ruby interface for libtoxcore. It can be used to create Tox chat client or bot.
24
24
  The interface is object-oriented instead of C-style (raises exceptions
25
25
  instead of returning error codes, uses classes to represent primitives, etc.)
26
26
  END
27
27
 
28
+ spec.metadata = {
29
+ 'homepage_uri' => 'https://github.com/toxon/tox.rb',
30
+ 'source_code_uri' => 'https://github.com/toxon/tox.rb',
31
+ 'bug_tracker_uri' => 'https://github.com/toxon/tox.rb/issues',
32
+ }.freeze
33
+
28
34
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
29
35
  f.match %r{^(test|spec|features)/}
30
36
  end
@@ -43,4 +49,5 @@ Gem::Specification.new do |spec|
43
49
  spec.add_development_dependency 'yard', '~> 0.9'
44
50
  spec.add_development_dependency 'rake-compiler', '~> 1.0'
45
51
  spec.add_development_dependency 'faker', '~> 1.8'
52
+ spec.add_development_dependency 'celluloid', '~> 0.17'
46
53
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Braiden Vasco
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-23 00:00:00.000000000 Z
11
+ date: 2018-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '1.8'
139
+ - !ruby/object:Gem::Dependency
140
+ name: celluloid
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.17'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '0.17'
139
153
  description: Ruby interface for libtoxcore. It can be used to create Tox chat client
140
154
  or bot. The interface is object-oriented instead of C-style (raises exceptions instead
141
155
  of returning error codes, uses classes to represent primitives, etc.)
@@ -157,8 +171,7 @@ files:
157
171
  - LICENSE
158
172
  - README.md
159
173
  - Rakefile
160
- - bin/build/libsodium
161
- - bin/build/libtoxcore
174
+ - bin/childprocess
162
175
  - bin/console
163
176
  - examples/echo_bot.rb
164
177
  - ext/tox/client.c
@@ -170,14 +183,20 @@ files:
170
183
  - ext/tox/version.c
171
184
  - lib/tox.rb
172
185
  - lib/tox/address.rb
186
+ - lib/tox/address_checksum.rb
173
187
  - lib/tox/binary.rb
174
188
  - lib/tox/client.rb
189
+ - lib/tox/connection_status.rb
175
190
  - lib/tox/friend.rb
176
- - lib/tox/friend/out_message.rb
177
191
  - lib/tox/node.rb
178
192
  - lib/tox/nospam.rb
179
193
  - lib/tox/options.rb
194
+ - lib/tox/out_friend_message.rb
180
195
  - lib/tox/out_message.rb
196
+ - lib/tox/proxies/base.rb
197
+ - lib/tox/proxies/http.rb
198
+ - lib/tox/proxies/socks5.rb
199
+ - lib/tox/proxy_type.rb
181
200
  - lib/tox/public_key.rb
182
201
  - lib/tox/status.rb
183
202
  - lib/tox/user_status.rb
@@ -186,7 +205,10 @@ files:
186
205
  homepage: https://github.com/toxon/tox.rb
187
206
  licenses:
188
207
  - GPL-3.0
189
- metadata: {}
208
+ metadata:
209
+ homepage_uri: https://github.com/toxon/tox.rb
210
+ source_code_uri: https://github.com/toxon/tox.rb
211
+ bug_tracker_uri: https://github.com/toxon/tox.rb/issues
190
212
  post_install_message:
191
213
  rdoc_options: []
192
214
  require_paths:
@@ -203,7 +225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
203
225
  version: '0'
204
226
  requirements: []
205
227
  rubyforge_project:
206
- rubygems_version: 2.6.14
228
+ rubygems_version: 2.7.6
207
229
  signing_key:
208
230
  specification_version: 4
209
231
  summary: Ruby interface for libtoxcore
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- set -euo pipefail
4
- IFS=$'\n\t'
5
- set -vx
6
-
7
- pushd 'vendor/libsodium'
8
- ./autogen.sh
9
- ./configure
10
- make install
11
- popd
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- set -euo pipefail
4
- IFS=$'\n\t'
5
- set -vx
6
-
7
- pushd 'vendor/libtoxcore'
8
- autoreconf -i
9
- ./configure
10
- make install
11
- popd
@@ -1,58 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # tox.rb - Ruby interface for libtoxcore
4
- # Copyright (C) 2015-2017 Braiden Vasco
5
- #
6
- # This program is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # This program is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU General Public License
17
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
18
-
19
- module Tox
20
- class Friend
21
- ##
22
- # Outgoing friend message representation in Tox client.
23
- #
24
- class OutMessage
25
- include Tox::OutMessage
26
-
27
- attr_reader :friend, :id
28
-
29
- def initialize(friend, id)
30
- self.friend = friend
31
- self.id = id
32
- end
33
-
34
- def client
35
- friend.client
36
- end
37
-
38
- private
39
-
40
- def friend=(value)
41
- unless value.is_a? Friend
42
- raise TypeError, "expected friend to be a #{Friend}"
43
- end
44
- @friend = value
45
- end
46
-
47
- def id=(value)
48
- unless value.is_a? Integer
49
- raise TypeError, "expected id to be an #{Integer}"
50
- end
51
- unless value >= 0
52
- raise ArgumentError, 'expected id to be greater than or equal to zero'
53
- end
54
- @id = value
55
- end
56
- end
57
- end
58
- end