rublox 0.1.0 → 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.
data/lib/rublox.rb CHANGED
@@ -1,136 +1,136 @@
1
- # frozen_string_literal: true
2
-
3
- require "http"
4
-
5
- require "rublox/version"
6
- require "rublox/util/http_client"
7
- require "rublox/util/cache"
8
- require "rublox/models/full_user"
9
- require "rublox/models/full_group"
10
- require "rublox/models/presence"
11
-
12
- # rublox is a Roblox web API wrapper written in Ruby. It aims to provide an
13
- # object oriented interface to get and modify data from Roblox's web API.
14
- #
15
- # Repository: https://github.com/roblox-api-wrappers/rublox
16
- #
17
- # Docs: https://rubydoc.info/gems/rublox
18
- module Rublox
19
- # The {Client} object is the gateway to the API. Tt supplies methods that
20
- # return classes modeled after the interactions you can do with the API.
21
- #
22
- # Initialize the client with a .ROBLOSECURITY cookie if you need functionality
23
- # that requires it.
24
- # @example
25
- # require "rublox"
26
- # # without a cookie
27
- # client = Rublox::Client.new
28
- # # with a cookie
29
- # client = Rublox::Client.new("_|WARNING:-DO-NOT-SHARE-THIS.--Sharing-this ...")
30
- class Client
31
- # @note The HTTP client should only be used when there are no methods
32
- # provided by the library to achieve what you want.
33
- # @return [HTTPClient]
34
- attr_reader :http_client
35
-
36
- # Initialize the client with a .ROBLOSECURITY cookie if you require functionality
37
- # that needs it.
38
- # @example
39
- # require "rublox"
40
- # # without a cookie
41
- # client = Rublox::Client.new
42
- # # with a cookie
43
- # client = Rublox::Client.new("_|WARNING:-DO-NOT-SHARE-THIS.--Sharing-this ...")
44
- # @param roblosecurity [String, nil] a valid .ROBLOSECURITY cookie
45
- def initialize(roblosecurity = "")
46
- @http_client = HTTPClient.new(roblosecurity)
47
- end
48
-
49
- # @example
50
- # client = Rublox::Client.new
51
- # user = client.user_from_id(1)
52
- # puts user.username # -> Roblox
53
- # @param id [Integer] the user's ID
54
- # @return [FullUser] a model of the user specified by the ID
55
- def user_from_id(id)
56
- user = Cache.get(Cache::USER, id)
57
- return user if user
58
-
59
- data = @http_client.get(
60
- URL.endpoint("users", "v1/users/#{id}")
61
- )
62
- rescue Errors::UnhandledStatusCodeError
63
- raise Errors::UserNotFoundError, id
64
- else
65
- user = FullUser.new(
66
- data,
67
- self
68
- )
69
- Cache.set(Cache::USER, id, user)
70
-
71
- user
72
- end
73
-
74
- # @note This method sends 2 requests, use {#user_from_id} if possible.
75
- # @example
76
- # client = Rublox::Client.new
77
- # user = client.user_from_username("Roblox")
78
- # puts user.id # -> 1
79
- # @param username [String] the user's username
80
- # @return [FullUser] a model of the user specified by the ID
81
- def user_from_username(username)
82
- data = @http_client.post(
83
- URL.endpoint("users", "/v1/usernames/users"),
84
- json: {
85
- usernames: [username],
86
- excludeBannedUsers: false
87
- }
88
- )["data"]
89
- raise Errors::UserNotFoundError.new(nil, username) if data.empty?
90
-
91
- user_from_id(
92
- data[0]["id"]
93
- )
94
- end
95
-
96
- # @example
97
- # client = Rublox::Client.new
98
- # group = client.group_from_id(1)
99
- # puts group.name # -> RobloHunks
100
- # @param id [Integer] the groups's ID
101
- # @return [FullGroup] a model of the group specified by the ID
102
- def group_from_id(id)
103
- group = Cache.get(Cache::GROUP, id)
104
- return group if group
105
-
106
- data = @http_client.get(
107
- URL.endpoint("groups", "v1/groups/#{id}")
108
- )
109
- rescue Errors::UnhandledStatusCodeError
110
- raise Errors::GroupNotFoundError, id
111
- else
112
- group = FullGroup.new(data, self)
113
- Cache.set(Cache::GROUP, id, group)
114
-
115
- group
116
- end
117
-
118
- # @param id [Integer] the user's ID
119
- # @return [Presence] a model of the presence specified by the user's ID
120
- def user_presence_from_id(id)
121
- data = http_client.post(
122
- URL.endpoint("presence", "v1/presence/users"),
123
- json: {
124
- userIds: [id]
125
- }
126
- )
127
- rescue Errors::UnhandledStatusCodeError
128
- raise Errors::PresenceNotFoundError, id
129
- else
130
- Presence.new(
131
- data["userPresences"][0],
132
- self
133
- )
134
- end
135
- end
136
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "http"
4
+
5
+ require "rublox/version"
6
+ require "rublox/util/http_client"
7
+ require "rublox/util/cache"
8
+ require "rublox/models/full_user"
9
+ require "rublox/models/full_group"
10
+ require "rublox/models/presence"
11
+
12
+ # rublox is a Roblox web API wrapper written in Ruby. It aims to provide an
13
+ # object oriented interface to get and modify data from Roblox's web API.
14
+ #
15
+ # Repository: https://github.com/roblox-api-wrappers/rublox
16
+ #
17
+ # Docs: https://rubydoc.info/gems/rublox
18
+ module Rublox
19
+ # The {Client} object is the gateway to the API. Tt supplies methods that
20
+ # return classes modeled after the interactions you can do with the API.
21
+ #
22
+ # Initialize the client with a .ROBLOSECURITY cookie if you need functionality
23
+ # that requires it.
24
+ # @example
25
+ # require "rublox"
26
+ # # without a cookie
27
+ # client = Rublox::Client.new
28
+ # # with a cookie
29
+ # client = Rublox::Client.new("_|WARNING:-DO-NOT-SHARE-THIS.--Sharing-this ...")
30
+ class Client
31
+ # @note The HTTP client should only be used when there are no methods
32
+ # provided by the library to achieve what you want.
33
+ # @return [HTTPClient]
34
+ attr_reader :http_client
35
+
36
+ # Initialize the client with a .ROBLOSECURITY cookie if you require functionality
37
+ # that needs it.
38
+ # @example
39
+ # require "rublox"
40
+ # # without a cookie
41
+ # client = Rublox::Client.new
42
+ # # with a cookie
43
+ # client = Rublox::Client.new("_|WARNING:-DO-NOT-SHARE-THIS.--Sharing-this ...")
44
+ # @param roblosecurity [String, nil] a valid .ROBLOSECURITY cookie
45
+ def initialize(roblosecurity = "")
46
+ @http_client = HTTPClient.new(roblosecurity)
47
+ end
48
+
49
+ # @example
50
+ # client = Rublox::Client.new
51
+ # user = client.user_from_id(1)
52
+ # puts user.username # -> Roblox
53
+ # @param id [Integer] the user's ID
54
+ # @return [FullUser] a model of the user specified by the ID
55
+ def user_from_id(id)
56
+ user = Cache.get(Cache::USER, id)
57
+ return user if user
58
+
59
+ data = @http_client.get(
60
+ URL.endpoint("users", "v1/users/#{id}")
61
+ )
62
+ rescue Errors::UnhandledStatusCodeError
63
+ raise Errors::UserNotFoundError, id
64
+ else
65
+ user = FullUser.new(
66
+ data,
67
+ self
68
+ )
69
+ Cache.set(Cache::USER, id, user)
70
+
71
+ user
72
+ end
73
+
74
+ # @note This method sends 2 requests, use {#user_from_id} if possible.
75
+ # @example
76
+ # client = Rublox::Client.new
77
+ # user = client.user_from_username("Roblox")
78
+ # puts user.id # -> 1
79
+ # @param username [String] the user's username
80
+ # @return [FullUser] a model of the user specified by the ID
81
+ def user_from_username(username)
82
+ data = @http_client.post(
83
+ URL.endpoint("users", "/v1/usernames/users"),
84
+ json: {
85
+ usernames: [username],
86
+ excludeBannedUsers: false
87
+ }
88
+ )["data"]
89
+ raise Errors::UserNotFoundError.new(nil, username) if data.empty?
90
+
91
+ user_from_id(
92
+ data[0]["id"]
93
+ )
94
+ end
95
+
96
+ # @example
97
+ # client = Rublox::Client.new
98
+ # group = client.group_from_id(1)
99
+ # puts group.name # -> RobloHunks
100
+ # @param id [Integer] the groups's ID
101
+ # @return [FullGroup] a model of the group specified by the ID
102
+ def group_from_id(id)
103
+ group = Cache.get(Cache::GROUP, id)
104
+ return group if group
105
+
106
+ data = @http_client.get(
107
+ URL.endpoint("groups", "v1/groups/#{id}")
108
+ )
109
+ rescue Errors::UnhandledStatusCodeError
110
+ raise Errors::GroupNotFoundError, id
111
+ else
112
+ group = FullGroup.new(data, self)
113
+ Cache.set(Cache::GROUP, id, group)
114
+
115
+ group
116
+ end
117
+
118
+ # @param id [Integer] the user's ID
119
+ # @return [Presence] a model of the presence specified by the user's ID
120
+ def user_presence_from_id(id)
121
+ data = http_client.post(
122
+ URL.endpoint("presence", "v1/presence/users"),
123
+ json: {
124
+ userIds: [id]
125
+ }
126
+ )
127
+ rescue Errors::UnhandledStatusCodeError
128
+ raise Errors::PresenceNotFoundError, id
129
+ else
130
+ Presence.new(
131
+ data["userPresences"][0],
132
+ self
133
+ )
134
+ end
135
+ end
136
+ end
data/rublox.gemspec CHANGED
@@ -1,32 +1,32 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "lib/rublox/version"
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "rublox"
7
- spec.version = Rublox::VERSION
8
- spec.authors = %w[Zamdie Keef]
9
- spec.email = "rorg.devv@gmail.com"
10
- spec.summary = "A Roblox web API wrapper written in Ruby"
11
- spec.description = "This gem allows easy interaction with the Roblox web API via class models."
12
- spec.homepage = "https://github.com/roblox-api-wrappers/rublox"
13
- spec.license = "MIT"
14
- spec.required_ruby_version = ">= 3.0"
15
- spec.files = Dir[
16
- "LICENSE",
17
- "CHANGELOG.MD",
18
- "lib/**/*.rb",
19
- "rublox.gemspec",
20
- "Gemfile",
21
- "Rakefile"
22
- ]
23
- spec.extra_rdoc_files = ["README.MD"]
24
-
25
- spec.add_dependency "http", "~> 5.0.2"
26
-
27
- spec.add_development_dependency "dotenv", "~> 2.7"
28
- spec.add_development_dependency "rake", "~> 13.0.6"
29
- spec.add_development_dependency "rubocop", "~> 1.21.0"
30
- spec.add_development_dependency "rubocop-performance", "~> 1.11.5"
31
- spec.add_development_dependency "yard", "~> 0.9.26"
32
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/rublox/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "rublox"
7
+ spec.version = Rublox::VERSION
8
+ spec.authors = %w[Zamdie Keef]
9
+ spec.email = "rorg.devv@gmail.com"
10
+ spec.summary = "A Roblox web API wrapper written in Ruby"
11
+ spec.description = "This gem allows easy interaction with the Roblox web API via class models."
12
+ spec.homepage = "https://github.com/roblox-api-wrappers/rublox"
13
+ spec.license = "MIT"
14
+ spec.required_ruby_version = ">= 3.0"
15
+ spec.files = Dir[
16
+ "LICENSE",
17
+ "CHANGELOG.MD",
18
+ "lib/**/*.rb",
19
+ "rublox.gemspec",
20
+ "Gemfile",
21
+ "Rakefile"
22
+ ]
23
+ spec.extra_rdoc_files = ["README.md"]
24
+
25
+ spec.add_dependency "http", "~> 5.0.2"
26
+
27
+ spec.add_development_dependency "dotenv", "~> 2.7"
28
+ spec.add_development_dependency "rake", "~> 13.0.6"
29
+ spec.add_development_dependency "rubocop", "~> 1.21.0"
30
+ spec.add_development_dependency "rubocop-performance", "~> 1.11.5"
31
+ spec.add_development_dependency "yard", "~> 0.9.26"
32
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rublox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zamdie
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-10-09 00:00:00.000000000 Z
12
+ date: 2021-11-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: http
@@ -100,12 +100,11 @@ email: rorg.devv@gmail.com
100
100
  executables: []
101
101
  extensions: []
102
102
  extra_rdoc_files:
103
- - README.MD
103
+ - README.md
104
104
  files:
105
- - CHANGELOG.MD
106
105
  - Gemfile
107
106
  - LICENSE
108
- - README.MD
107
+ - README.md
109
108
  - Rakefile
110
109
  - lib/rublox.rb
111
110
  - lib/rublox/derive/group.rb
@@ -143,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
142
  - !ruby/object:Gem::Version
144
143
  version: '0'
145
144
  requirements: []
146
- rubygems_version: 3.2.15
145
+ rubygems_version: 3.2.29
147
146
  signing_key:
148
147
  specification_version: 4
149
148
  summary: A Roblox web API wrapper written in Ruby
data/CHANGELOG.MD DELETED
@@ -1,4 +0,0 @@
1
- # 0.1.0 (9th October, 2021)
2
-
3
- - Initial repository and package setup
4
- - User, group, presence, group member and group role APIs added