snowflakeapirb 1.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 5736b84bb239b4c8fd519e3c2f6ca312b19f0777f424704f7c2b7309218162e3
4
+ data.tar.gz: 32a91077e803cdad4f61196a5cb18a0f1e4920e94091a46b50b50b9c25e09718
5
+ SHA512:
6
+ metadata.gz: fe2ee6c91b812dfeab1aeb5ea4cabf7cb73e31e61ff8d78f16cae79a9912a9654fe3d5ef061e9b9a65cb8cbf2dce8ce4759db18573e50d8568f499984d6a9fd0
7
+ data.tar.gz: 9ef93154148f38c677d0ce08f19f3befe3485e050129e216b801ded1a94f65ec72082c9643cda3f135d67e87ad770e4764207d4c20b8afaef4348ee3c008ed8f
data/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+ /test/
10
+ /bin/
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in snowflakeapirb.gemspec
6
+ gemspec
7
+
8
+ gem "rake", "~> 13.0"
data/Gemfile.lock ADDED
@@ -0,0 +1,19 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ snowflakeapirb (1.0.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ rake (13.0.3)
10
+
11
+ PLATFORMS
12
+ x64-mingw32
13
+
14
+ DEPENDENCIES
15
+ rake (~> 13.0)
16
+ snowflakeapirb!
17
+
18
+ BUNDLED WITH
19
+ 2.2.25
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2021 Snowflake Studio ❄️
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,2 @@
1
+ # Snowflake API
2
+ An api wrapper for **[Snowflake API](https://api.snowflakedev.org)** written in Ruby.
data/Rakefile ADDED
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ task default: %i[]
data/bin/console ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "bundler/setup"
5
+ require "snowflakeapirb"
6
+
7
+ # You can add fixtures and/or initialization code here to make experimenting
8
+ # with your gem easier. You can also use a different console, if you like.
9
+
10
+ # (If you use this, don't forget to add pry to your Gemfile!)
11
+ # require "pry"
12
+ # Pry.start
13
+
14
+ require "irb"
15
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,307 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "faraday"
4
+ require "json"
5
+ require "date"
6
+
7
+ class SnowflakeAPI
8
+ def initialize(api_key)
9
+ @token = api_key
10
+ @connection = Faraday.new(
11
+ url: "https://api.snowflakedev.org/api",
12
+ headers: {
13
+ "Content-Type" => "application/json",
14
+ "Authorization" => @token
15
+ }
16
+ )
17
+ end
18
+
19
+ # Get response from the chatbot
20
+ # @param message [String] The message
21
+ # @param name [String] The chatbot's name
22
+ # @param age [String] The chatbot's age
23
+ # @param gender [String] The bot's gender
24
+ # @param user [String] The user identifier
25
+ # @return [String]
26
+ def chatbot(message, name: nil, age: nil, gender: nil, user: nil)
27
+ resp = @connection.get("chatbot", { message: message, name: name, age: age, gender: gender, user: user })
28
+ data = JSON.parse(resp.body)
29
+
30
+ if data["error"] and data["code"] and data["code"] != 200
31
+ raise RuntimeError.new("[#{data["code"]}] #{data["error"] or "Rejected with status code #{data["code"]}"}")
32
+ else
33
+ return data["message"]
34
+ end
35
+ end
36
+
37
+ # Generates fake discord bot token
38
+ # @return [String]
39
+ def fake_discord_token
40
+ resp = @connection.get("token")
41
+ data = JSON.parse(resp.body)
42
+
43
+ if data["error"] and data["code"] and data["code"] != 200
44
+ raise RuntimeError.new("[#{data["code"]}] #{data["error"] or "Rejected with status code #{data["code"]}"}")
45
+ else
46
+ return data["token"]
47
+ end
48
+ end
49
+
50
+ # Returns meme from
51
+ # @param subreddit [String] subreddit to fetch meme from
52
+ # @return [Hash]
53
+ def meme(subreddit: nil)
54
+ resp = @connection.get("meme", { "sbr" => subreddit })
55
+ data = JSON.parse(resp.body)
56
+
57
+ if data["error"] and data["code"] and data["code"] != 200
58
+ raise RuntimeError.new("[#{data["code"]}] #{data["error"] or "Rejected with status code #{data["code"]}"}")
59
+ else
60
+ return {
61
+ "is_video" => data["isVideo"],
62
+ "nsfw" => data["nsfw"],
63
+ "created_at" => Date.parse(data["createdAt"]),
64
+ "url" => data["url"],
65
+ "upvotes" => data["ratings"]["upvote"],
66
+ "downvotes" => data["ratings"]["downvote"],
67
+ "comments" => data["ratings"]["comments"],
68
+ "subreddit" => data["subreddit"],
69
+ "title" => data["title"],
70
+ "link" => data["link"]
71
+ }
72
+ end
73
+ end
74
+
75
+ # Returns random roast message
76
+ # @return [String]
77
+ def roast
78
+ resp = @connection.get("roast")
79
+ data = JSON.parse(resp.body)
80
+
81
+ if data["error"] and data["code"] and data["code"] != 200
82
+ raise RuntimeError.new("[#{data["code"]}] #{data["error"] or "Rejected with status code #{data["code"]}"}")
83
+ else
84
+ return data["roast"]
85
+ end
86
+ end
87
+
88
+ # Returns Pokemon info
89
+ # @param name [String] Pokemon name
90
+ # @return [Hash]
91
+ def pokemon(name)
92
+ resp = @connection.get("pokemon", { "name" => name })
93
+ data = JSON.parse(resp.body)
94
+
95
+ if data["error"] and data["code"] and data["code"] != 200
96
+ raise RuntimeError.new("[#{data["code"]}] #{data["error"] or "Rejected with status code #{data["code"]}"}")
97
+ else
98
+ return {
99
+ "name" => data["name"],
100
+ "id" => data["id"],
101
+ "base_experience" => data["baseExperience"],
102
+ "height" => data["height"],
103
+ "weight" => data["weight"],
104
+ "type" => data["type"],
105
+ "moves" => data["moves"],
106
+ "stats" => data["stats"],
107
+ "image" => data["image"]
108
+ }
109
+ end
110
+ end
111
+
112
+ # Encodes the given text to morse code
113
+ # @param message [String] The message to encode
114
+ # @return [String]
115
+ def morse_encode(message)
116
+ resp = @connection.get("morse/encode", { "text" => message })
117
+ data = JSON.parse(resp.body)
118
+
119
+ if data["error"] and data["code"] and data["code"] != 200
120
+ raise RuntimeError.new("[#{data["code"]}] #{data["error"] or "Rejected with status code #{data["code"]}"}")
121
+ else
122
+ return data["data"]
123
+ end
124
+ end
125
+
126
+ # Decodes the given morse code to regular text
127
+ # @param message [String] The morse code to decode
128
+ # @return [String]
129
+ def morse_decode(message)
130
+ resp = @connection.get("morse/decode", { "text" => message })
131
+ data = JSON.parse(resp.body)
132
+
133
+ if data["error"] and data["code"] and data["code"] != 200
134
+ raise RuntimeError.new("[#{data["code"]}] #{data["error"] or "Rejected with status code #{data["code"]}"}")
135
+ else
136
+ return data["data"]
137
+ end
138
+ end
139
+
140
+ # Returns package information from denoland registry
141
+ # @param module [String] The module name
142
+ # @return [Hash]
143
+ def deno(package)
144
+ resp = @connection.get("registry/deno", { "module" => package })
145
+ data = JSON.parse(resp.body)
146
+
147
+ if data["error"] and data["code"] and data["code"] != 200
148
+ raise RuntimeError.new("[#{data["code"]}] #{data["error"] or "Rejected with status code #{data["code"]}"}")
149
+ else
150
+ return {
151
+ "registry" => data["registry"],
152
+ "icon" => data["icon"],
153
+ "url" => data["url"],
154
+ "module" => {
155
+ "name" => data["module"]["name"],
156
+ "url" => data["module"]["url"],
157
+ "description" => data["module"]["description"],
158
+ "version" => data["module"]["version"],
159
+ "stars" => data["module"]["stars"],
160
+ "developer" => {
161
+ "name" => data["module"]["developer"]["name"],
162
+ "url" => data["module"]["developer"]["url"],
163
+ },
164
+ "github" => data["module"]["github"],
165
+ "created_at" => Date.parse(data["module"]["createdAt"])
166
+ }
167
+ }
168
+ end
169
+ end
170
+
171
+ # Returns package information from npmjs registry
172
+ # @param module [String] The module name
173
+ # @return [Hash]
174
+ def npm(package)
175
+ resp = @connection.get("registry/npm", { "module" => package })
176
+ data = JSON.parse(resp.body)
177
+
178
+ if data["error"] and data["code"] and data["code"] != 200
179
+ raise RuntimeError.new("[#{data["code"]}] #{data["error"] or "Rejected with status code #{data["code"]}"}")
180
+ else
181
+ return {
182
+ "registry" => data["registry"],
183
+ "icon" => data["icon"],
184
+ "url" => data["url"],
185
+ "runkit" => data["runkit"],
186
+ "module" => {
187
+ "name" => data["module"]["name"],
188
+ "url" => data["module"]["url"],
189
+ "description" => data["module"]["description"],
190
+ "version" => data["module"]["version"],
191
+ "main" => data["module"]["main"],
192
+ "license" => data["module"]["license"],
193
+ "author" => data["module"]["author"],
194
+ "maintainers" => data["module"]["maintainers"],
195
+ "dependencies" => data["module"]["dependencies"],
196
+ "repository" => {
197
+ "type" => data["module"]["repository"]["type"],
198
+ "url" => data["module"]["repository"]["url"],
199
+ },
200
+ "banner" => data["module"]["banner"]
201
+ }
202
+ }
203
+ end
204
+ end
205
+
206
+ # Returns package information from pypi registry
207
+ # @param module [String] The module name
208
+ # @return [Hash]
209
+ def pypi(package)
210
+ resp = @connection.get("registry/pypi", { "module" => package })
211
+ data = JSON.parse(resp.body)
212
+
213
+ if data["error"] and data["code"] and data["code"] != 200
214
+ raise RuntimeError.new("[#{data["code"]}] #{data["error"] or "Rejected with status code #{data["code"]}"}")
215
+ else
216
+ return {
217
+ "registry" => data["registry"],
218
+ "icon" => data["icon"],
219
+ "url" => data["url"],
220
+ "module" => {
221
+ "name" => data["module"]["name"],
222
+ "description" => data["module"]["description"],
223
+ "url" => data["module"]["url"],
224
+ "version" => data["module"]["version"],
225
+ "author" => data["module"]["author"],
226
+ "updated_at" => Date.parse(data["module"]["updatedAt"]),
227
+ "documentation" => data["module"]["documentation"],
228
+ "homepage" => data["module"]["homepage"]
229
+ }
230
+ }
231
+ end
232
+ end
233
+
234
+ # Reverse the given text
235
+ # @param message [String] The message to reverse
236
+ # @return [String]
237
+ def reverse(message)
238
+ resp = @connection.get("reverse", { "message" => message })
239
+ data = JSON.parse(resp.body)
240
+
241
+ if data["error"] and data["code"] and data["code"] != 200
242
+ raise RuntimeError.new("[#{data["code"]}] #{data["error"] or "Rejected with status code #{data["code"]}"}")
243
+ else
244
+ return data["message"]
245
+ end
246
+ end
247
+
248
+ # Encode the given text to base64 string
249
+ # @param message [String] The message to encode
250
+ # @return [String]
251
+ def base64_encode(message)
252
+ resp = @connection.get("base64/encode", { "data" => message })
253
+ data = JSON.parse(resp.body)
254
+
255
+ if data["error"] and data["code"] and data["code"] != 200
256
+ raise RuntimeError.new("[#{data["code"]}] #{data["error"] or "Rejected with status code #{data["code"]}"}")
257
+ else
258
+ return data["data"]
259
+ end
260
+ end
261
+
262
+ # Decode the given text to base64 string
263
+ # @param message [String] The message to decode
264
+ # @return [String]
265
+ def base64_decode(message)
266
+ resp = @connection.get("base64/decode", { "data" => message })
267
+ data = JSON.parse(resp.body)
268
+
269
+ if data["error"] and data["code"] and data["code"] != 200
270
+ raise RuntimeError.new("[#{data["code"]}] #{data["error"] or "Rejected with status code #{data["code"]}"}")
271
+ else
272
+ return data["data"]
273
+ end
274
+ end
275
+
276
+ # Returns information about a discord token
277
+ # @param token [String] The discord token
278
+ # @return [Hash]
279
+ def tokeninfo(token)
280
+ resp = @connection.get("tokeninfo", { "token" => token })
281
+ data = JSON.parse(resp.body)
282
+
283
+ if data["error"] and data["code"] and data["code"] != 200
284
+ raise RuntimeError.new("[#{data["code"]}] #{data["error"] or "Rejected with status code #{data["code"]}"}")
285
+ else
286
+ return {
287
+ "type" => data["type"],
288
+ "token" => data["token"],
289
+ "id" => data["id"],
290
+ "username" => data["username"],
291
+ "discriminator" => data["discriminator"],
292
+ "avatar" => data["avatar"],
293
+ "avatar_url" => data["avatarURL"],
294
+ "snowflake_info" => {
295
+ "epoch" => data["snowflakeInfo"]["epoch"],
296
+ "timestamp" => data["snowflakeInfo"]["timestamp"],
297
+ "worker_id" => data["snowflakeInfo"]["workerID"],
298
+ "process_id" => data["snowflakeInfo"]["processID"],
299
+ "increment" => data["snowflakeInfo"]["increment"],
300
+ "binary" => data["snowflakeInfo"]["binary"],
301
+ "date" => Date.parse(data["snowflakeInfo"]["date"]),
302
+ "snowflake" => data["snowflakeInfo"]["snowflake"]
303
+ }
304
+ }
305
+ end
306
+ end
307
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "snowflakeapirb"
5
+ spec.version = "1.0.0"
6
+ spec.authors = ["DevAndromeda"]
7
+ spec.email = ["devandromeda@snowflakedev.org"]
8
+
9
+ spec.summary = "An api wrapper for snowflake api."
10
+ spec.description = "An api wrapper for snowflake api."
11
+ spec.homepage = "https://github.com/DevSnowflake/snowflakeapirb"
12
+ spec.license = "MIT"
13
+ spec.required_ruby_version = ">= 2.4.0"
14
+
15
+ spec.metadata["allowed_push_host"] = "https://rubygems.org"
16
+
17
+ spec.metadata["homepage_uri"] = spec.homepage
18
+ spec.metadata["source_code_uri"] = "https://github.com/DevSnowflake/snowflakeapirb"
19
+ spec.metadata["changelog_uri"] = "https://github.com/DevSnowflake/snowflakeapirb/releases/latest"
20
+
21
+ # Specify which files should be added to the gem when it is released.
22
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
24
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
25
+ end
26
+ spec.bindir = "exe"
27
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
28
+ spec.require_paths = ["lib"]
29
+
30
+ # Uncomment to register a new dependency of your gem
31
+ # spec.add_dependency "example-gem", "~> 1.0"
32
+
33
+ # For more information and examples about making a new gem, checkout our
34
+ # guide at: https://bundler.io/guides/creating_gem.html
35
+ end
metadata ADDED
@@ -0,0 +1,57 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: snowflakeapirb
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - DevAndromeda
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2021-08-10 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: An api wrapper for snowflake api.
14
+ email:
15
+ - devandromeda@snowflakedev.org
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - ".gitignore"
21
+ - Gemfile
22
+ - Gemfile.lock
23
+ - LICENSE
24
+ - README.md
25
+ - Rakefile
26
+ - bin/console
27
+ - bin/setup
28
+ - lib/snowflakeapirb.rb
29
+ - snowflakeapirb.gemspec
30
+ homepage: https://github.com/DevSnowflake/snowflakeapirb
31
+ licenses:
32
+ - MIT
33
+ metadata:
34
+ allowed_push_host: https://rubygems.org
35
+ homepage_uri: https://github.com/DevSnowflake/snowflakeapirb
36
+ source_code_uri: https://github.com/DevSnowflake/snowflakeapirb
37
+ changelog_uri: https://github.com/DevSnowflake/snowflakeapirb/releases/latest
38
+ post_install_message:
39
+ rdoc_options: []
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 2.4.0
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ requirements: []
53
+ rubygems_version: 3.2.25
54
+ signing_key:
55
+ specification_version: 4
56
+ summary: An api wrapper for snowflake api.
57
+ test_files: []