multiapi 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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: e2d46f27dc6c4028a4f22b3c9ba68a81a7fc1cceab3921026cf6e6fd3c216f5c
4
+ data.tar.gz: 1374e6e6078f4b09b8e4efae43bd556ae003d61cde1a9d46b6506bad65a943af
5
+ SHA512:
6
+ metadata.gz: b88df8e2eb0596b4df07fb6ee4925f5981f5efdafb87842aba0b5f75dca3cb854470e5bc53f2a5b6e64f9f570c3312b92e0efa1b9a92dbfa8705fde3339d66ce
7
+ data.tar.gz: bc75e8a1b92c4cdc3a2ecae62b76bbd2c00de7ab3c6834c9aa66ea752c30cda863c3dd6c13f277e1188158e180d7905bf1d730feb1fc801484f083272961b6eb
data/LICENSE.txt ADDED
@@ -0,0 +1,15 @@
1
+ Acordo de Licença de Software Proprietário
2
+
3
+ Copyright (c) 2025 StackLab Digital
4
+
5
+ Este software e a documentação associada são propriedade confidencial e proprietária
6
+ de StackLab Digital. O uso deste software está sujeito aos termos e condições
7
+ estabelecidos em acordo comercial separado.
8
+
9
+ É estritamente proibido:
10
+ 1. Copiar, reproduzir ou distribuir este software
11
+ 2. Modificar, criar trabalhos derivados ou fazer engenharia reversa
12
+ 3. Transferir ou sublicenciar este software para terceiros
13
+ 4. Usar este software sem uma licença válida
14
+
15
+ Todos os direitos não expressamente concedidos são reservados à StackLab Digital.
data/README.md ADDED
@@ -0,0 +1,95 @@
1
+ # Multiapi Ruby SDK
2
+
3
+ Este é o SDK oficial em Ruby para integração com a API Multiapi.
4
+
5
+ ## Instalação
6
+
7
+ Adicione esta linha ao Gemfile da sua aplicação:
8
+
9
+ ```ruby
10
+ gem 'multiapi'
11
+ ```
12
+
13
+ E então execute:
14
+
15
+ ```bash
16
+ $ bundle install
17
+ ```
18
+
19
+ Ou instale manualmente:
20
+
21
+ ```bash
22
+ $ gem install multiapi
23
+ ```
24
+
25
+ ## Uso
26
+
27
+ Primeiro, configure o cliente com sua chave de API:
28
+
29
+ ```ruby
30
+ require 'multiapi'
31
+
32
+ client = Multiapi::Client.new(api_key: 'sua_chave_api')
33
+ ```
34
+
35
+ ### Usuários
36
+
37
+ ```ruby
38
+ # Listar usuários
39
+ users = client.users.list(page: 1, per_page: 20)
40
+
41
+ # Criar um usuário
42
+ user = client.users.create(
43
+ name: 'João Silva',
44
+ email: 'joao@exemplo.com'
45
+ )
46
+
47
+ # Buscar um usuário
48
+ user = client.users.find(123)
49
+
50
+ # Atualizar um usuário
51
+ user = client.users.update(123, name: 'João Silva Jr')
52
+
53
+ # Deletar um usuário
54
+ client.users.delete(123)
55
+ ```
56
+
57
+ ### Transações
58
+
59
+ ```ruby
60
+ # Listar transações
61
+ transactions = client.transactions.list(page: 1, per_page: 20)
62
+
63
+ # Criar uma transação
64
+ transaction = client.transactions.create(
65
+ user_id: 123,
66
+ amount: 100.00,
67
+ description: 'Pagamento'
68
+ )
69
+
70
+ # Buscar uma transação
71
+ transaction = client.transactions.find(456)
72
+
73
+ # Atualizar uma transação
74
+ transaction = client.transactions.update(456, description: 'Pagamento atualizado')
75
+
76
+ # Deletar uma transação
77
+ client.transactions.delete(456)
78
+
79
+ # Listar transações de um usuário
80
+ transactions = client.transactions.by_user(123, page: 1, per_page: 20)
81
+ ```
82
+
83
+ ## Desenvolvimento
84
+
85
+ Após clonar o repositório, execute `bin/setup` para instalar as dependências. Então, execute `rake spec` para rodar os testes.
86
+
87
+ ## Contribuindo
88
+
89
+ Bug reports e pull requests são bem-vindos no GitHub. Este projeto é destinado a ser um espaço seguro e acolhedor para colaboração.
90
+
91
+ ## Licença
92
+
93
+ Este SDK é propriedade privada da StackLab Digital. Todos os direitos reservados.
94
+ O uso deste SDK está sujeito aos termos e condições estabelecidos em acordo comercial.
95
+ Não é permitida a redistribuição ou modificação sem autorização expressa.
@@ -0,0 +1,76 @@
1
+ require 'faraday'
2
+ require 'json'
3
+ require_relative 'version'
4
+ require_relative 'resources/user'
5
+ require_relative 'resources/transaction'
6
+
7
+ module Multiapi
8
+ class Client
9
+ attr_reader :api_key, :base_url
10
+
11
+ def initialize(api_key:, base_url: 'https://api.multiapi.com')
12
+ @api_key = api_key
13
+ @base_url = base_url
14
+ @connection = create_connection
15
+ end
16
+
17
+ def users
18
+ @users ||= Resources::User.new(self)
19
+ end
20
+
21
+ def transactions
22
+ @transactions ||= Resources::Transaction.new(self)
23
+ end
24
+
25
+ def get(path, params = {})
26
+ handle_response(@connection.get(path, params))
27
+ end
28
+
29
+ def post(path, body = {})
30
+ handle_response(@connection.post(path, body.to_json))
31
+ end
32
+
33
+ def put(path, body = {})
34
+ handle_response(@connection.put(path, body.to_json))
35
+ end
36
+
37
+ def delete(path, params = {})
38
+ handle_response(@connection.delete(path, params))
39
+ end
40
+
41
+ private
42
+
43
+ def create_connection
44
+ Faraday.new(url: base_url) do |conn|
45
+ conn.headers['Authorization'] = "Bearer #{api_key}"
46
+ conn.headers['Content-Type'] = 'application/json'
47
+ conn.headers['Accept'] = 'application/json'
48
+ conn.adapter Faraday.default_adapter
49
+ end
50
+ end
51
+
52
+ def handle_response(response)
53
+ case response.status
54
+ when 200..299
55
+ JSON.parse(response.body)
56
+ else
57
+ raise Error.new(response)
58
+ end
59
+ end
60
+ end
61
+
62
+ class Error < StandardError
63
+ attr_reader :response
64
+
65
+ def initialize(response)
66
+ @response = response
67
+ super(build_error_message)
68
+ end
69
+
70
+ private
71
+
72
+ def build_error_message
73
+ "#{response.status} - #{response.body}"
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,33 @@
1
+ module Multiapi
2
+ module Resources
3
+ class Transaction
4
+ def initialize(client)
5
+ @client = client
6
+ end
7
+
8
+ def list(page: 1, per_page: 20)
9
+ @client.get('/transactions', page: page, per_page: per_page)
10
+ end
11
+
12
+ def create(attributes)
13
+ @client.post('/transactions', attributes)
14
+ end
15
+
16
+ def find(id)
17
+ @client.get("/transactions/#{id}")
18
+ end
19
+
20
+ def update(id, attributes)
21
+ @client.put("/transactions/#{id}", attributes)
22
+ end
23
+
24
+ def delete(id)
25
+ @client.delete("/transactions/#{id}")
26
+ end
27
+
28
+ def by_user(user_id, page: 1, per_page: 20)
29
+ @client.get("/users/#{user_id}/transactions", page: page, per_page: per_page)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,29 @@
1
+ module Multiapi
2
+ module Resources
3
+ class User
4
+ def initialize(client)
5
+ @client = client
6
+ end
7
+
8
+ def list(page: 1, per_page: 20)
9
+ @client.get('/users', page: page, per_page: per_page)
10
+ end
11
+
12
+ def create(attributes)
13
+ @client.post('/users', attributes)
14
+ end
15
+
16
+ def find(id)
17
+ @client.get("/users/#{id}")
18
+ end
19
+
20
+ def update(id, attributes)
21
+ @client.put("/users/#{id}", attributes)
22
+ end
23
+
24
+ def delete(id)
25
+ @client.delete("/users/#{id}")
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,3 @@
1
+ module Multiapi
2
+ VERSION = "0.1.0"
3
+ end
data/lib/multiapi.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'multiapi/version'
2
+ require 'multiapi/client'
3
+
4
+ module Multiapi
5
+ class Error < StandardError; end
6
+ end
metadata ADDED
@@ -0,0 +1,134 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: multiapi
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - StackLab Digital
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2025-03-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.6'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.6'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '13.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '13.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: webmock
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.0'
97
+ description: Uma biblioteca Ruby para integrar facilmente com a API Multiapi
98
+ email:
99
+ - contato@stacklab.digital
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - LICENSE.txt
105
+ - README.md
106
+ - lib/multiapi.rb
107
+ - lib/multiapi/client.rb
108
+ - lib/multiapi/resources/transaction.rb
109
+ - lib/multiapi/resources/user.rb
110
+ - lib/multiapi/version.rb
111
+ homepage: https://github.com/StackLab-Digital/multiapi
112
+ licenses:
113
+ - Proprietary
114
+ metadata: {}
115
+ post_install_message:
116
+ rdoc_options: []
117
+ require_paths:
118
+ - lib
119
+ required_ruby_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: 2.7.0
124
+ required_rubygems_version: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
129
+ requirements: []
130
+ rubygems_version: 3.5.11
131
+ signing_key:
132
+ specification_version: 4
133
+ summary: SDK oficial para a API Multiapi
134
+ test_files: []