chalk_ruby 0.1.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.
Files changed (42) hide show
  1. checksums.yaml +7 -0
  2. data/.github/CODEOWNERS +3 -0
  3. data/.github/ISSUE_TEMPLATE/bug_report.md +23 -0
  4. data/.github/ISSUE_TEMPLATE/feature_request.md +13 -0
  5. data/.gitignore +38 -0
  6. data/.rubocop.yml +185 -0
  7. data/.rubocop_todo.yml +14 -0
  8. data/Gemfile +18 -0
  9. data/LICENSE +201 -0
  10. data/README.md +25 -0
  11. data/Rakefile +35 -0
  12. data/SECURITY.md +17 -0
  13. data/Steepfile +6 -0
  14. data/bin/console +21 -0
  15. data/bin/setup +8 -0
  16. data/chalk_ruby.gemspec +50 -0
  17. data/lib/chalk_ruby/client.rb +192 -0
  18. data/lib/chalk_ruby/config/config.rb +39 -0
  19. data/lib/chalk_ruby/defaults.rb +36 -0
  20. data/lib/chalk_ruby/error.rb +22 -0
  21. data/lib/chalk_ruby/helpers.rb +45 -0
  22. data/lib/chalk_ruby/http/http_requester.rb +94 -0
  23. data/lib/chalk_ruby/http/response.rb +23 -0
  24. data/lib/chalk_ruby/logger_helper.rb +14 -0
  25. data/lib/chalk_ruby/transport/transport.rb +54 -0
  26. data/lib/chalk_ruby/version.rb +3 -0
  27. data/lib/chalk_ruby.rb +13 -0
  28. data/renovate.json +5 -0
  29. data/sig/chalk_ruby/client.rbs +43 -0
  30. data/sig/chalk_ruby/config/config.rbs +31 -0
  31. data/sig/chalk_ruby/defaults.rbs +35 -0
  32. data/sig/chalk_ruby/error.rbs +6 -0
  33. data/sig/chalk_ruby/helpers.rbs +15 -0
  34. data/sig/chalk_ruby/http/http_requester.rbs +25 -0
  35. data/sig/chalk_ruby/http/response.rbs +14 -0
  36. data/sig/chalk_ruby/interfaces/_connection.rbs +17 -0
  37. data/sig/chalk_ruby/token.rbs +10 -0
  38. data/sig/chalk_ruby/transport/transport.rbs +21 -0
  39. data/sig/chalk_ruby/versions.rbs +3 -0
  40. data/test/chalk_ai/integration/client_test.rb +20 -0
  41. data/test/chalk_ai/test_helper.rb +15 -0
  42. metadata +268 -0
@@ -0,0 +1,25 @@
1
+ module ChalkRuby
2
+ module Http
3
+ class HttpRequester
4
+ @connections: Hash[String, _Connection]
5
+
6
+ attr_accessor adapter: Net::HTTP
7
+
8
+ attr_accessor logger: Logger
9
+
10
+ def initialize: (String adapter, Logger logger) -> void
11
+
12
+ def send_request: (
13
+ String host,
14
+ Symbol method,
15
+ String path,
16
+ Hash[Symbol | String, untyped] body,
17
+ Hash[String | Symbol, String | bool] headers,
18
+ Integer timeout,
19
+ Integer connect_timeout
20
+ ) -> Response
21
+
22
+ def connection: (String host) -> _Connection
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,14 @@
1
+ module ChalkRuby
2
+ module Http
3
+ class Response
4
+ attr_reader status: String
5
+ attr_reader body: String
6
+ attr_reader error: String
7
+ attr_reader headers: String
8
+ attr_reader has_timed_out: bool
9
+ attr_reader network_failure: bool
10
+
11
+ def initialize: (?::Hash[Symbol, String|bool] opts) -> untyped
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,17 @@
1
+ interface _Connection
2
+ def options: () -> _ConnectionOptions
3
+
4
+ def run_request: (
5
+ Symbol method,
6
+ String path,
7
+ Hash[Symbol, String|[String]] body,
8
+ Hash[String, String] headers
9
+ ) -> Http::Response
10
+ end
11
+
12
+ interface _ConnectionOptions
13
+ def timeout: () -> Integer
14
+ def timeout=: (Integer timeout) -> Integer
15
+ def open_timeout: () -> Integer
16
+ def open_timeout=: (Integer timeout) -> Integer
17
+ end
@@ -0,0 +1,10 @@
1
+ module ChalkRuby
2
+ class Token
3
+ attr_accessor token: String
4
+ attr_accessor expires_at: DateTime
5
+ attr_accessor environment: String?
6
+ attr_accessor engines: Hash[String, String]
7
+
8
+ def expired?: -> bool
9
+ end
10
+ end
@@ -0,0 +1,21 @@
1
+ module ChalkRuby
2
+ module Transport
3
+ class Transport
4
+ @http_requester: Http::HttpRequester
5
+
6
+ def request_simple: (
7
+ Symbol method,
8
+ String host,
9
+ String path,
10
+ Integer timeout,
11
+ Integer connect_timeout,
12
+ Hash[String | Symbol, untyped] headers,
13
+ ?::Hash[String | Symbol, untyped] body
14
+ ) -> Hash[Symbol, untyped]
15
+
16
+ private
17
+
18
+ def success?: (String http_response_code) -> bool
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,3 @@
1
+ module ChalkRuby
2
+ VERSION : String
3
+ end
@@ -0,0 +1,20 @@
1
+ require 'date'
2
+ require 'rspec/autorun'
3
+ require 'chalk_ruby/client'
4
+ require 'chalk_ruby/error'
5
+
6
+ CLIENT_ID = 'token-941b776a2245c2f5bb3bbdbcf582dce4'
7
+ CLIENT_SECRET = 'ts-f76b5a517fce9a53d47bd91db5fbc31ac7718a27f0555d4ad9387557a9313a0b'
8
+
9
+
10
+ RSpec.describe 'Online query' do
11
+ it 'should accept valid queries' do
12
+ client = ChalkRuby::Client.create(CLIENT_ID, CLIENT_SECRET)
13
+ response = client.query(
14
+ input: { 'user.id': 3454 },
15
+ output: %w(user.id)
16
+ )
17
+
18
+ print response
19
+ end
20
+ end
@@ -0,0 +1,15 @@
1
+ require 'simplecov'
2
+
3
+ if ENV['COVERAGE']
4
+ SimpleCov.start
5
+ end
6
+
7
+ require 'bundler/setup'
8
+ require 'chalk_ruby'
9
+ require 'minitest/autorun'
10
+ require 'minitest/hooks'
11
+
12
+ class Minitest::Test
13
+ include Minitest::Hooks
14
+ include ChalkRuby::Helpers
15
+ end
metadata ADDED
@@ -0,0 +1,268 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: chalk_ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Chalk AI, Inc.
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2024-01-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "<="
46
+ - !ruby/object:Gem::Version
47
+ version: 0.82.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "<="
53
+ - !ruby/object:Gem::Version
54
+ version: 0.82.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: faraday
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0.15'
62
+ - - "<"
63
+ - !ruby/object:Gem::Version
64
+ version: '3'
65
+ type: :runtime
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0.15'
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: '3'
75
+ - !ruby/object:Gem::Dependency
76
+ name: faraday-net_http_persistent
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0.15'
82
+ - - "<"
83
+ - !ruby/object:Gem::Version
84
+ version: '3'
85
+ type: :runtime
86
+ prerelease: false
87
+ version_requirements: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0.15'
92
+ - - "<"
93
+ - !ruby/object:Gem::Version
94
+ version: '3'
95
+ - !ruby/object:Gem::Dependency
96
+ name: multi_json
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '1.0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: '1.0'
109
+ - !ruby/object:Gem::Dependency
110
+ name: net-http-persistent
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ type: :runtime
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ - !ruby/object:Gem::Dependency
124
+ name: httpclient
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ type: :development
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ - !ruby/object:Gem::Dependency
138
+ name: m
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ type: :development
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ - !ruby/object:Gem::Dependency
152
+ name: minitest
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ - !ruby/object:Gem::Dependency
166
+ name: minitest-hooks
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ type: :development
173
+ prerelease: false
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ - !ruby/object:Gem::Dependency
180
+ name: minitest-proveit
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - ">="
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: '0'
193
+ description: A simple Ruby client for Chalk
194
+ email:
195
+ - help@chalk.ai
196
+ executables: []
197
+ extensions: []
198
+ extra_rdoc_files: []
199
+ files:
200
+ - ".github/CODEOWNERS"
201
+ - ".github/ISSUE_TEMPLATE/bug_report.md"
202
+ - ".github/ISSUE_TEMPLATE/feature_request.md"
203
+ - ".gitignore"
204
+ - ".rubocop.yml"
205
+ - ".rubocop_todo.yml"
206
+ - Gemfile
207
+ - LICENSE
208
+ - README.md
209
+ - Rakefile
210
+ - SECURITY.md
211
+ - Steepfile
212
+ - bin/console
213
+ - bin/setup
214
+ - chalk_ruby.gemspec
215
+ - lib/chalk_ruby.rb
216
+ - lib/chalk_ruby/client.rb
217
+ - lib/chalk_ruby/config/config.rb
218
+ - lib/chalk_ruby/defaults.rb
219
+ - lib/chalk_ruby/error.rb
220
+ - lib/chalk_ruby/helpers.rb
221
+ - lib/chalk_ruby/http/http_requester.rb
222
+ - lib/chalk_ruby/http/response.rb
223
+ - lib/chalk_ruby/logger_helper.rb
224
+ - lib/chalk_ruby/transport/transport.rb
225
+ - lib/chalk_ruby/version.rb
226
+ - renovate.json
227
+ - sig/chalk_ruby/client.rbs
228
+ - sig/chalk_ruby/config/config.rbs
229
+ - sig/chalk_ruby/defaults.rbs
230
+ - sig/chalk_ruby/error.rbs
231
+ - sig/chalk_ruby/helpers.rbs
232
+ - sig/chalk_ruby/http/http_requester.rbs
233
+ - sig/chalk_ruby/http/response.rbs
234
+ - sig/chalk_ruby/interfaces/_connection.rbs
235
+ - sig/chalk_ruby/token.rbs
236
+ - sig/chalk_ruby/transport/transport.rbs
237
+ - sig/chalk_ruby/versions.rbs
238
+ - test/chalk_ai/integration/client_test.rb
239
+ - test/chalk_ai/test_helper.rb
240
+ homepage: https://github.com/chalk-ai/chalk-ruby
241
+ licenses:
242
+ - Apache-2.0
243
+ metadata:
244
+ bug_tracker_uri: https://github.com/chalk-ai/chalk-ruby/issues
245
+ documentation_uri: https://docs.chalk.ai/docs
246
+ source_code_uri: https://github.com/chalk-ai/chalk-ruby
247
+ post_install_message:
248
+ rdoc_options: []
249
+ require_paths:
250
+ - lib
251
+ required_ruby_version: !ruby/object:Gem::Requirement
252
+ requirements:
253
+ - - ">="
254
+ - !ruby/object:Gem::Version
255
+ version: '0'
256
+ required_rubygems_version: !ruby/object:Gem::Requirement
257
+ requirements:
258
+ - - ">="
259
+ - !ruby/object:Gem::Version
260
+ version: '0'
261
+ requirements: []
262
+ rubygems_version: 3.0.3.1
263
+ signing_key:
264
+ specification_version: 4
265
+ summary: A simple Ruby client for Chalk
266
+ test_files:
267
+ - test/chalk_ai/integration/client_test.rb
268
+ - test/chalk_ai/test_helper.rb