omie-ruby 0.3.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: f7c397f140aaafc1cc63e52b0f33af4f1563dfc865de7cb38520f50d3192c7f5
4
+ data.tar.gz: 9ab752b1eb2e621b6a9479242719d95c88efdc516e6037d065f9b131b28dbc79
5
+ SHA512:
6
+ metadata.gz: '08843628cdc911b1091992314deb601b068906d30e979464f6bbb0505628b783fe7c79714829420b390fd7cf1379533144b7884fe02835105a0f8c7734baa46c'
7
+ data.tar.gz: addf7f0188cbb241f41166910ea990ae8d9e74e14683071991b21a681bc336a578273def5566318902572a0529ea4ca22d776012a7b64e1e973f69d79c8c9493
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "omie/version"
4
+ require "omie/client"
5
+
6
+ module Omie
7
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "omie/api/base"
4
+ require "omie/api/customer"
5
+ require "omie/api/service_invoice"
6
+ require "omie/api/service_order"
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omie
4
+ module API
5
+ class Base
6
+ def initialize(conn)
7
+ @conn = conn
8
+ end
9
+
10
+ private
11
+
12
+ attr_reader :conn
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omie
4
+ module API
5
+ class Customer < Base
6
+ def upsert(data)
7
+ conn.post("geral/clientes/", { call: "UpsertCliente", param: [data] })
8
+ end
9
+
10
+ def batch_upsert(data, part: 1)
11
+ conn.post(
12
+ "geral/clientes/",
13
+ {
14
+ call: "UpsertClientesPorLote",
15
+ param: [
16
+ clientes_cadastro: data,
17
+ lote: part
18
+ ]
19
+ }
20
+ )
21
+ end
22
+
23
+ # rubocop:disable Naming/AccessorMethodName
24
+ def set_integration_id(data)
25
+ conn.post(
26
+ "geral/clientes/",
27
+ { call: "AssociarCodIntCliente", param: [data] }
28
+ )
29
+ end
30
+ # rubocop:enable Naming/AccessorMethodName
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omie
4
+ module API
5
+ class ServiceInvoice < Base
6
+ def list(data)
7
+ conn.post("servicos/nfse/", { call: "ListarNFSEs", param: [data] })
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omie
4
+ module API
5
+ class ServiceOrder < Base
6
+ def create(data)
7
+ conn.post("servicos/os/", { call: "IncluirOS", param: [data] })
8
+ end
9
+
10
+ def create_invoice(data)
11
+ conn.post("servicos/osp/", { call: "FaturarOS", param: [data] })
12
+ end
13
+
14
+ def cancel_invoice(data)
15
+ conn.post("servicos/osp/", { call: "CancelarOS", param: [data] })
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "faraday"
4
+ require "omie/middleware"
5
+ require "omie/api"
6
+
7
+ module Omie
8
+ class Client
9
+ BASE_URL = "https://app.omie.com.br/api/v1"
10
+
11
+ attr_reader :app_key, :app_secret
12
+
13
+ def initialize(app_key: nil, app_secret: nil)
14
+ @app_key = app_key || ENV.fetch("OMIE_APP_KEY")
15
+ @app_secret = app_secret || ENV.fetch("OMIE_APP_SECRET")
16
+
17
+ @conn = Faraday.new(BASE_URL) do |conn|
18
+ conn.request :omie_authentication, app_key: @app_key,
19
+ app_secret: @app_secret
20
+ conn.request :json
21
+ conn.response :json
22
+ end
23
+ end
24
+
25
+ def customer
26
+ @customer ||= API::Customer.new(conn)
27
+ end
28
+
29
+ def service_order
30
+ @service_order ||= API::ServiceOrder.new(conn)
31
+ end
32
+
33
+ def service_invoice
34
+ @service_invoice ||= API::ServiceInvoice.new(conn)
35
+ end
36
+
37
+ private
38
+
39
+ attr_reader :conn
40
+ end
41
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "faraday_middleware"
4
+ require "omie/middleware/authentication"
5
+
6
+ Faraday::Request.register_middleware(
7
+ omie_authentication: -> { Omie::Middleware::Authentication }
8
+ )
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omie
4
+ module Middleware
5
+ class Authentication
6
+ attr_reader :app, :app_key, :app_secret
7
+
8
+ def initialize(app, options = {})
9
+ @app = app
10
+ @app_key = options.fetch(:app_key)
11
+ @app_secret = options.fetch(:app_secret)
12
+ end
13
+
14
+ def call(env)
15
+ env[:body] = body_with_authentication(env[:body])
16
+
17
+ app.call(env)
18
+ end
19
+
20
+ private
21
+
22
+ def body_with_authentication(body)
23
+ return body unless body.respond_to?(:merge)
24
+
25
+ body.merge(
26
+ app_key: app_key,
27
+ app_secret: app_secret
28
+ )
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Omie
4
+ module Version
5
+ MAJOR = "0"
6
+ MINOR = "3"
7
+ PATCH = "0"
8
+
9
+ STRING = [MAJOR, MINOR, PATCH].join(".")
10
+ end
11
+ end
metadata ADDED
@@ -0,0 +1,183 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: omie-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
+ platform: ruby
6
+ authors:
7
+ - Alexandre Saldanha
8
+ - Nathália Oliveira
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2020-11-25 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: faraday
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '1.0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '1.0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: faraday_middleware
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '1.0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '1.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: minitest
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '5.14'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '5.14'
56
+ - !ruby/object:Gem::Dependency
57
+ name: minitest-reporters
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '1.4'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '1.4'
70
+ - !ruby/object:Gem::Dependency
71
+ name: pry-byebug
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '3.7'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '3.7'
84
+ - !ruby/object:Gem::Dependency
85
+ name: rake
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '13.0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '13.0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: rubocop
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '='
103
+ - !ruby/object:Gem::Version
104
+ version: 0.82.0
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - '='
110
+ - !ruby/object:Gem::Version
111
+ version: 0.82.0
112
+ - !ruby/object:Gem::Dependency
113
+ name: simplecov
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: 0.18.5
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: 0.18.5
126
+ - !ruby/object:Gem::Dependency
127
+ name: vcr
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: '6.0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: '6.0'
140
+ description:
141
+ email:
142
+ - absaldanha@protonmail.com
143
+ - nathipsl@gmail.com
144
+ executables: []
145
+ extensions: []
146
+ extra_rdoc_files: []
147
+ files:
148
+ - lib/omie.rb
149
+ - lib/omie/api.rb
150
+ - lib/omie/api/base.rb
151
+ - lib/omie/api/customer.rb
152
+ - lib/omie/api/service_invoice.rb
153
+ - lib/omie/api/service_order.rb
154
+ - lib/omie/client.rb
155
+ - lib/omie/middleware.rb
156
+ - lib/omie/middleware/authentication.rb
157
+ - lib/omie/version.rb
158
+ homepage:
159
+ licenses:
160
+ - MIT
161
+ metadata:
162
+ source_code_uri: https://github.com/agendor/omie-ruby
163
+ post_install_message:
164
+ rdoc_options: []
165
+ require_paths:
166
+ - lib
167
+ required_ruby_version: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: 2.4.0
172
+ required_rubygems_version: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - ">="
175
+ - !ruby/object:Gem::Version
176
+ version: '0'
177
+ requirements: []
178
+ rubyforge_project:
179
+ rubygems_version: 2.7.6
180
+ signing_key:
181
+ specification_version: 4
182
+ summary: An Omie API wrapper for Ruby
183
+ test_files: []