rconrb 0.1.2 → 0.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b2d90b6a2bacdf1d213da0356764b3e911cd0c5caf8a6516fcc8562cc88aec1a
4
- data.tar.gz: 77f7e0038e8a2aa2eb05265c07adae7b4b05ced177fa86fc226f7aa6b6ef4933
3
+ metadata.gz: a810a58a0bf4925d42184afc3d70b773c9d703cc65d60d8a64338ce289a639f7
4
+ data.tar.gz: 8bee5515521314fd3b05450b76d045793b82fdce16e07f8f5f28bb71060d0437
5
5
  SHA512:
6
- metadata.gz: 2e54c3a135b6ab6df953bc05e893a30e495f4a9f20415edd3c6a4eb65c1c32887f2a8178bef0c259578584f708e9955a9445ec9376d5364ab1cb92c8c0fbf518
7
- data.tar.gz: f13555248995c93017d61eba73685ed2999c37c5833c68ec59bcc51e30601e5f78f0b811d696f419076b1cd2c77ea6c17e9ef8cc69de73553bb3a323327d4ccc
6
+ metadata.gz: 99ec0b66768247dbcb91e147589c37943e9a1cc576b4b96d884e4c6a3b8ce2d3057aa4a73d2592570792f867b4eb3a802463c0fdb1677667c941f53df9e739bf
7
+ data.tar.gz: e885001560307a9c72457ac22eb09fc4ee7983b8e8bebf83c96ec81bacc22395c9a0ef2c809be525a2a3852e0158d31ee45d45163025ef2679a6103b949e29b4
data/.circleci/config.yml CHANGED
@@ -1,13 +1,17 @@
1
- version: 2
1
+ version: 2.1
2
+
2
3
  jobs:
3
- build:
4
- parallelism: 1
4
+ test:
5
+ parameters:
6
+ ruby-version:
7
+ type: string
5
8
  docker:
6
- - image: circleci/ruby:2.6.0-stretch
9
+ - image: cimg/ruby:<< parameters.ruby-version >>
7
10
  environment:
8
11
  BUNDLE_JOBS: 1
9
12
  BUNDLE_RETRY: 3
10
13
  BUNDLE_PATH: vendor/bundle
14
+
11
15
  steps:
12
16
  - checkout
13
17
 
@@ -23,3 +27,11 @@ jobs:
23
27
  --out test_results/rspec.xml \
24
28
  --format progress \
25
29
  $(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)
30
+
31
+ workflows:
32
+ build_and_test:
33
+ jobs:
34
+ - test:
35
+ matrix:
36
+ parameters:
37
+ ruby-version: ["3.2", "3.3", "3.4"]
data/.envrc ADDED
@@ -0,0 +1,2 @@
1
+ watch_file .ruby-version
2
+ use flake
data/flake.nix ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ inputs = {
3
+ nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
4
+ nixpkgs-ruby.url = "github:bobvanderlinden/nixpkgs-ruby";
5
+ nixpkgs-ruby.inputs.nixpkgs.follows = "nixpkgs";
6
+ flake-utils.url = "github:numtide/flake-utils";
7
+ };
8
+
9
+ outputs = { self, nixpkgs, nixpkgs-ruby, flake-utils }:
10
+ flake-utils.lib.eachDefaultSystem (system:
11
+ let
12
+ pkgs = nixpkgs.legacyPackages.${system};
13
+ ruby = nixpkgs-ruby.lib.packageFromRubyVersionFile {
14
+ file = ./.ruby-version;
15
+ inherit system;
16
+ };
17
+
18
+ gems = pkgs.bundlerEnv {
19
+ name = "gemset";
20
+ inherit ruby;
21
+ gemfile = ./Gemfile;
22
+ lockfile = ./Gemfile.lock;
23
+ gemset = ./gemset.nix;
24
+ groups = [ "default" "production" "development" "test" ];
25
+ };
26
+ in
27
+ {
28
+ devShell = with pkgs;
29
+ mkShell {
30
+ buildInputs = [
31
+ # gems
32
+ ruby
33
+ bundix
34
+ ];
35
+ };
36
+ });
37
+ }
data/lib/rcon/client.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "rcon/packet"
2
4
  require "rcon/response"
3
5
  require "rcon/socket_wrapper"
@@ -50,6 +50,14 @@ module Rcon
50
50
  end
51
51
  end
52
52
 
53
+ # used for communicating that the server closed the connection
54
+ class ServerClosedSocketError < StandardError
55
+ # @return [String]
56
+ def message
57
+ "the server closed the connection. Do you have too many concurrent connections open?"
58
+ end
59
+ end
60
+
53
61
  # used for communicating that we timed out trying to read from the socket
54
62
  class SocketReadTimeoutError < StandardError
55
63
  # @return [String]
data/lib/rcon/packet.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Rcon
2
4
  # Data structure representing packets sent to / received from RCON server.
3
5
  class Packet
@@ -40,11 +42,17 @@ module Rcon
40
42
  # @raise [Error::SocketReadTimeoutError] if timeout occurs while waiting to read from socket
41
43
  def self.read_from_socket_wrapper(socket_wrapper)
42
44
  if socket_wrapper.ready_to_read?
43
- size = socket_wrapper.recv(INT_BYTE_SIZE).unpack(INTEGER_PACK_DIRECTIVE).first
45
+ size = socket_wrapper.recv(INT_BYTE_SIZE)&.unpack(INTEGER_PACK_DIRECTIVE)&.first
46
+ if size.nil?
47
+ raise Error::ServerClosedSocketError
48
+ end
44
49
  id_and_type_length = 2 * INT_BYTE_SIZE
45
50
  body_length = size - id_and_type_length - (2 * TRAILER_BYTE_SIZE) # ignore trailing nulls
46
51
 
47
52
  payload = socket_wrapper.recv(size)
53
+ if payload.nil?
54
+ raise Error::ServerClosedSocketError
55
+ end
48
56
  id, type_int = payload[0...id_and_type_length].unpack("#{INTEGER_PACK_DIRECTIVE}*")
49
57
  body = payload[id_and_type_length..].unpack("#{STR_PACK_DIRECTIVE}#{body_length}").first
50
58
  type = RESPONSE_PACKET_TYPE.key(type_int) || raise(Error::InvalidResponsePacketTypeCodeError.new(type_int))
data/lib/rcon/response.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Rcon
2
4
  # wraps the response we receive from the server. It might not be obvious at
3
5
  # first why have this additional datastructure. There are two main motivations.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "delegate"
2
4
 
3
5
  module Rcon
data/lib/rcon/version.rb CHANGED
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Rcon
2
4
  # current version number
3
- VERSION = "0.1.2"
5
+ VERSION = "0.2.0"
4
6
  end
data/lib/rcon.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "rcon/version"
2
4
  require "rcon/error/error"
3
5
  require "rcon/client"
data/rconrb.gemspec CHANGED
@@ -6,9 +6,9 @@ Gem::Specification.new do |spec|
6
6
  spec.authors = ["Anthony Felix Hernandez"]
7
7
  spec.email = ["ant@antfeedr.com"]
8
8
 
9
- spec.summary = %q{An flexible RCON client written in Ruby, based on the Source RCON protocol.}
9
+ spec.summary = %q{A flexible RCON client written in Ruby, based on the Source RCON protocol.}
10
10
  spec.homepage = "https://github.com/hernanat/rconrb"
11
- spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
11
+ spec.required_ruby_version = Gem::Requirement.new(">= 3.2.0")
12
12
 
13
13
  spec.metadata["allowed_push_host"] = "https://rubygems.org"
14
14
 
@@ -26,5 +26,5 @@ Gem::Specification.new do |spec|
26
26
  spec.require_paths = ["lib"]
27
27
 
28
28
  spec.add_development_dependency "pry"
29
- spec.add_development_dependency "yard", "~> 0.9.9"
29
+ spec.add_development_dependency "yard", "~> 0.9"
30
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rconrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anthony Felix Hernandez
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-06 00:00:00.000000000 Z
11
+ date: 2025-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -30,15 +30,15 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.9.9
33
+ version: '0.9'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.9.9
41
- description:
40
+ version: '0.9'
41
+ description:
42
42
  email:
43
43
  - ant@antfeedr.com
44
44
  executables: []
@@ -46,6 +46,7 @@ extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
48
  - ".circleci/config.yml"
49
+ - ".envrc"
49
50
  - ".gitignore"
50
51
  - ".rspec"
51
52
  - Gemfile
@@ -53,6 +54,7 @@ files:
53
54
  - Rakefile
54
55
  - bin/console
55
56
  - bin/setup
57
+ - flake.nix
56
58
  - lib/rcon.rb
57
59
  - lib/rcon/client.rb
58
60
  - lib/rcon/error/error.rb
@@ -68,7 +70,7 @@ metadata:
68
70
  homepage_uri: https://github.com/hernanat/rconrb
69
71
  source_code_uri: https://github.com/hernanat/rconrb
70
72
  documentation_uri: https://rubydoc.info/github/hernanat/rconrb
71
- post_install_message:
73
+ post_install_message:
72
74
  rdoc_options: []
73
75
  require_paths:
74
76
  - lib
@@ -76,15 +78,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
76
78
  requirements:
77
79
  - - ">="
78
80
  - !ruby/object:Gem::Version
79
- version: 2.6.0
81
+ version: 3.2.0
80
82
  required_rubygems_version: !ruby/object:Gem::Requirement
81
83
  requirements:
82
84
  - - ">="
83
85
  - !ruby/object:Gem::Version
84
86
  version: '0'
85
87
  requirements: []
86
- rubygems_version: 3.1.2
87
- signing_key:
88
+ rubygems_version: 3.5.22
89
+ signing_key:
88
90
  specification_version: 4
89
- summary: An flexible RCON client written in Ruby, based on the Source RCON protocol.
91
+ summary: A flexible RCON client written in Ruby, based on the Source RCON protocol.
90
92
  test_files: []