ruby-magicwrite 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a7196a229f9665af5e45c3c039aff8aed41a4ae495a1ec90ef882f7f2f025858
4
- data.tar.gz: bcbc8eac9a03a650b7ac39da3aaab4715a78b0d895cd583565bc703ee8262c57
3
+ metadata.gz: 78dec62f5b00bafdf4c419f17e5f908ce8431ed0d0ed1d5289a9b12556160990
4
+ data.tar.gz: d707b12d56bca20072ab023ba01f8e7f12b86ad16b675e151c6b9fc9dcd2ea51
5
5
  SHA512:
6
- metadata.gz: 92e2cc734dfd82bbf196b8dff81873dc516706b2fb4e9889f3a7c8d5360153c21226c5f1f4dbcfd6d1616b7a7a5518886d3894f74ff574bc7ad78dca17db9e13
7
- data.tar.gz: 3895dfe940935bd163ebb0e60b57209f074ebbb1c6bcd898aad98f1f7a38df32e7acfdd61c0233c4741e55b62fb653728ac196e0af6e30b7adcf356507564217
6
+ metadata.gz: 218a31aab9ea79dd52f51dba0622d137ada3ee533532f49bdb06d1127aacd577873d9ea24ddca9fe7c0a50e8dca9a8c5731e4ce2c0996e4211fc270764a607b4
7
+ data.tar.gz: 6dab53f804184b3e3179c1a51fb5cdf00493b2ec7781e59ed1e2982565797d42b8953473f3e0789b9ef590dc5e827fd344ad86f91fd8d6a2064250b8561c41ad
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby-magicwrite (0.1.3)
4
+ ruby-magicwrite (0.1.4)
5
5
  faraday (>= 1)
6
6
  faraday-multipart (>= 1)
7
7
 
data/README.md CHANGED
@@ -12,13 +12,17 @@ gem "ruby-magicwrite"
12
12
 
13
13
  And then execute:
14
14
 
15
+ ```bash
15
16
  $ bundle install
17
+ ```
16
18
 
17
19
  ### Gem install
18
20
 
19
21
  Or install with:
20
22
 
21
- $ gem install ruby-magicwrite
23
+ ```bash
24
+ $ gem install ruby-openai
25
+ ```
22
26
 
23
27
  and require with:
24
28
 
@@ -24,6 +24,10 @@ module MagicWrite
24
24
  @ingestions ||= MagicWrite::Ingestions.new
25
25
  end
26
26
 
27
+ def memberships
28
+ @memberships ||= MagicWrite::Memberships.new
29
+ end
30
+
27
31
  def session
28
32
  MagicWrite::Client.get(path: '/session')
29
33
  end
@@ -0,0 +1,20 @@
1
+ module MagicWrite
2
+ class Error < StandardError
3
+ class BadRequest < Error; end
4
+ class Unauthorized < Error; end
5
+ class PaymentRequired < Error; end
6
+ class Forbidden < Error; end
7
+ class NotFound < Error; end
8
+ class MethodNotAllowed < Error; end
9
+ class RequestTimeout < Error; end
10
+ class Conflict < Error; end
11
+ class UnprocessableEntity < Error; end
12
+ class TooManyRequests < Error; end
13
+ class InternalServerError < Error; end
14
+ class NotImplemented < Error; end
15
+ class BadGateway < Error; end
16
+ class ServiceUnavailable < Error; end
17
+ class GatewayTimeout < Error; end
18
+ class UnknownError < Error; end
19
+ end
20
+ end
@@ -0,0 +1,38 @@
1
+ module MagicWrite
2
+ class ErrorHandler
3
+ HTTP_CODE = {
4
+ 400 => MagicWrite::Error::BadRequest,
5
+ 401 => MagicWrite::Error::Unauthorized,
6
+ 402 => MagicWrite::Error::PaymentRequired,
7
+ 403 => MagicWrite::Error::Forbidden,
8
+ 404 => MagicWrite::Error::NotFound,
9
+ 405 => MagicWrite::Error::MethodNotAllowed,
10
+ 408 => MagicWrite::Error::RequestTimeout,
11
+ 409 => MagicWrite::Error::Conflict,
12
+ 422 => MagicWrite::Error::UnprocessableEntity,
13
+ 429 => MagicWrite::Error::TooManyRequests,
14
+ 500 => MagicWrite::Error::InternalServerError,
15
+ 501 => MagicWrite::Error::NotImplemented,
16
+ 502 => MagicWrite::Error::BadGateway,
17
+ 503 => MagicWrite::Error::ServiceUnavailable,
18
+ 504 => MagicWrite::Error::GatewayTimeout
19
+ }.freeze
20
+
21
+ def initialize(response)
22
+ @response = response
23
+ @status = response.status
24
+ end
25
+
26
+ def raise_error
27
+ raise error_class, response.reason_phrase
28
+ end
29
+
30
+ private
31
+
32
+ attr_reader :response, :status
33
+
34
+ def error_class
35
+ HTTP_CODE[status] || MagicWrite::Error::UnknownError
36
+ end
37
+ end
38
+ end
@@ -1,55 +1,67 @@
1
1
  module MagicWrite
2
2
  module HTTP
3
3
  def get(path:, parameters: {})
4
- to_json(conn.get(uri(path: path)) do |req|
5
- req.headers = headers
6
- req.body = parameters.to_json
7
- end&.body)
4
+ build_response(conn.get(uri(path: path)) do |request|
5
+ request.headers = headers
6
+ request.body = parameters.to_json
7
+ end)
8
8
  end
9
9
 
10
10
  def json_post(path:, parameters:)
11
- to_json(conn.post(uri(path: path)) do |req|
11
+ build_response(conn.post(uri(path: path)) do |request|
12
12
  if parameters[:stream].respond_to?(:call)
13
- req.options.on_data = to_json_stream(user_proc: parameters[:stream])
13
+ request.options.on_data = to_json_stream(user_proc: parameters[:stream])
14
14
  parameters[:stream] = true
15
15
  elsif parameters[:stream]
16
16
  raise ArgumentError, 'The stream parameter must be a Proc or have a #call method'
17
17
  end
18
18
 
19
- req.headers = headers
20
- req.body = parameters.to_json
21
- end&.body)
19
+ request.headers = headers
20
+ request.body = parameters.to_json
21
+ end)
22
22
  end
23
23
 
24
24
  def json_put(path:, parameters:)
25
- to_json(conn.put(uri(path: path)) do |req|
25
+ build_response(conn.put(uri(path: path)) do |request|
26
26
  if parameters[:stream].respond_to?(:call)
27
- req.options.on_data = to_json_stream(user_proc: parameters[:stream])
27
+ request.options.on_data = to_json_stream(user_proc: parameters[:stream])
28
28
  parameters[:stream] = true
29
29
  elsif parameters[:stream]
30
30
  raise ArgumentError, 'The stream parameter must be a Proc or have a #call method'
31
31
  end
32
32
 
33
- req.headers = headers
34
- req.body = parameters.to_json
35
- end&.body)
33
+ request.headers = headers
34
+ request.body = parameters.to_json
35
+ end)
36
36
  end
37
37
 
38
38
  def multipart_post(path:, parameters: nil)
39
- to_json(conn(multipart: true).post(uri(path: path)) do |req|
40
- req.headers = headers.merge({ 'Content-Type' => 'multipart/form-data' })
41
- req.body = multipart_parameters(parameters)
42
- end&.body)
39
+ build_response(conn(multipart: true).post(uri(path: path)) do |request|
40
+ request.headers = headers.merge({ 'Content-Type' => 'multipart/form-data' })
41
+ request.body = multipart_parameters(parameters)
42
+ end)
43
43
  end
44
44
 
45
45
  def delete(path:)
46
- to_json(conn.delete(uri(path: path)) do |req|
47
- req.headers = headers
48
- end&.body)
46
+ build_response(conn.delete(uri(path: path)) do |request|
47
+ request.headers = headers
48
+ end)
49
49
  end
50
50
 
51
51
  private
52
52
 
53
+ def build_response(response)
54
+ return parsed_response(response) if response.status.between?(200, 299)
55
+
56
+ MagicWrite::ErrorHandler.new(response).raise_error
57
+ end
58
+
59
+ def parsed_response(response)
60
+ return unless response
61
+
62
+ to_json(response.body)
63
+ end
64
+
53
65
  def to_json(string)
54
66
  return unless string
55
67
 
@@ -69,9 +81,9 @@ module MagicWrite
69
81
  end
70
82
 
71
83
  def conn(multipart: false)
72
- Faraday.new do |f|
73
- f.options[:timeout] = MagicWrite.configuration.request_timeout
74
- f.request(:multipart) if multipart
84
+ Faraday.new do |faraday|
85
+ faraday.options[:timeout] = MagicWrite.configuration.request_timeout
86
+ faraday.request(:multipart) if multipart
75
87
  end
76
88
  end
77
89
 
@@ -0,0 +1,15 @@
1
+ module MagicWrite
2
+ class Memberships
3
+ def initialize(access_token: nil)
4
+ MagicWrite.configuration.access_token = access_token if access_token
5
+ end
6
+
7
+ def user
8
+ MagicWrite::Client.get(path: '/memberships/user')
9
+ end
10
+
11
+ def company
12
+ MagicWrite::Client.get(path: '/memberships/company')
13
+ end
14
+ end
15
+ end
@@ -1,3 +1,3 @@
1
1
  module MagicWrite
2
- VERSION = '0.1.3'.freeze
2
+ VERSION = '0.1.4'.freeze
3
3
  end
data/lib/magicwrite.rb CHANGED
@@ -6,11 +6,13 @@ require_relative 'magicwrite/client'
6
6
  require_relative 'magicwrite/agents'
7
7
  require_relative 'magicwrite/companies'
8
8
  require_relative 'magicwrite/completions'
9
+ require_relative 'magicwrite/error'
10
+ require_relative 'magicwrite/error_handler'
9
11
  require_relative 'magicwrite/ingestions'
12
+ require_relative 'magicwrite/memberships'
10
13
  require_relative 'magicwrite/version'
11
14
 
12
15
  module MagicWrite
13
- class Error < StandardError; end
14
16
  class ConfigurationError < Error; end
15
17
 
16
18
  class Configuration
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-magicwrite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rodrigo Campos
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2023-08-21 00:00:00.000000000 Z
12
+ date: 2023-08-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
@@ -68,8 +68,11 @@ files:
68
68
  - lib/magicwrite/companies.rb
69
69
  - lib/magicwrite/compatibility.rb
70
70
  - lib/magicwrite/completions.rb
71
+ - lib/magicwrite/error.rb
72
+ - lib/magicwrite/error_handler.rb
71
73
  - lib/magicwrite/http.rb
72
74
  - lib/magicwrite/ingestions.rb
75
+ - lib/magicwrite/memberships.rb
73
76
  - lib/magicwrite/version.rb
74
77
  - lib/ruby/magicwrite.rb
75
78
  - pull_request_template.md