ruby-magicwrite 0.1.3 → 0.1.4

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: 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