fakturan_nu 1.0.0 → 1.0.1
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 +4 -4
- data/README.md +10 -4
- data/fakturan_nu.gemspec +1 -1
- data/lib/fakturan_nu.rb +6 -3
- data/lib/fakturan_nu/middleware/logger.rb +65 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb9d1638af2349a26125ce41a43cdcd176c9c49b
|
4
|
+
data.tar.gz: 84d469e7d0c44d3cac4a38dfda966275b7efd8d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc1cfd64e2e9d34e17897abf430f65623341447bd5801d0fbff3efdb1bc93582b234219e714e292db05ea922996cc635f7a9c2dd957f18a4edc345f980ce3060
|
7
|
+
data.tar.gz: 6850b0e9310bc6df2ef5843908e089e3c30c7b93638fea2b101216d9776a98f9dc0063430de1aa7ca65c7a33081f8ec9c42a94db65a0fb97a076b95465939ef5
|
data/README.md
CHANGED
@@ -52,14 +52,20 @@ product.save
|
|
52
52
|
|
53
53
|
### Invoices
|
54
54
|
|
55
|
-
For creating invoices, a
|
55
|
+
For creating invoices, a client is required. It can be an existing client (by using ```client_id```), or a new one (by using ```client```):
|
56
|
+
|
56
57
|
```ruby
|
57
|
-
invoice = Fakturan::Invoice.create(
|
58
|
+
invoice = Fakturan::Invoice.create(client: { company: "Acme Inc" })
|
58
59
|
# POST "https://fakturan.nu/api/v2/invoices" # Will create a new client + invoice
|
59
60
|
|
60
|
-
invoice = Fakturan::Invoice.create(
|
61
|
+
invoice = Fakturan::Invoice.create(client_id: 1)
|
61
62
|
# POST "https://fakturan.nu/api/v2/invoices" # Will create a new invoice for client with id: 1
|
62
63
|
|
64
|
+
```
|
65
|
+
Example with items/rows:
|
66
|
+
```ruby
|
67
|
+
invoice = Fakturan::Invoice.create(client_id: 1, rows: [{ product_name: "Shoes", product_unit: "pairs", amount: "1", product_price: "500"}])
|
68
|
+
# POST "https://fakturan.nu/api/v2/invoices" # Will create a new invoice for client with id: 1
|
63
69
|
```
|
64
70
|
|
65
71
|
### Available resources and properties
|
@@ -113,7 +119,7 @@ These errors are all descendents of ```Fakturan::Error``` and should be caught i
|
|
113
119
|
|
114
120
|
```ruby
|
115
121
|
begin
|
116
|
-
invoice = Fakturan::Invoice.create!
|
122
|
+
invoice = Fakturan::Invoice.create!(invoice_params)
|
117
123
|
rescue Fakturan::Error => error
|
118
124
|
render plain: error.message, status: error.status
|
119
125
|
end
|
data/fakturan_nu.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
Gem::Specification.new do |s|
|
3
3
|
s.name = 'fakturan_nu'
|
4
|
-
s.version = '1.0.
|
4
|
+
s.version = '1.0.1'
|
5
5
|
s.date = '2014-12-17'
|
6
6
|
s.summary = 'A ruby client for the Fakturan.nu - API'
|
7
7
|
s.description = 'A ruby client for the Fakturan.nu - API. Fakturan.nu is a webbapp for billing.'
|
data/lib/fakturan_nu.rb
CHANGED
@@ -4,6 +4,7 @@ require 'spyke'
|
|
4
4
|
require 'faraday_middleware'
|
5
5
|
require 'multi_json'
|
6
6
|
require 'fakturan_nu/spyke_extensions'
|
7
|
+
require 'fakturan_nu/middleware/logger'
|
7
8
|
require 'fakturan_nu/middleware/parse_json'
|
8
9
|
require 'fakturan_nu/middleware/raise_error'
|
9
10
|
|
@@ -20,13 +21,12 @@ module Fakturan
|
|
20
21
|
@use_sandbox = false
|
21
22
|
@api_version = 2
|
22
23
|
|
23
|
-
mattr_accessor :
|
24
|
+
mattr_accessor :wire_dump
|
24
25
|
|
25
26
|
def self.setup username = nil, pass = nil
|
26
27
|
#self.parse_json_times = true
|
27
28
|
|
28
29
|
@username, @pass = username, pass
|
29
|
-
self.accept_language = 'en-US'
|
30
30
|
|
31
31
|
@connection = Faraday.new(url: build_url) do |connection|
|
32
32
|
# Request
|
@@ -37,6 +37,9 @@ module Fakturan
|
|
37
37
|
connection.use Fakturan::Response::ParseJSON
|
38
38
|
connection.use Fakturan::Response::RaiseError
|
39
39
|
|
40
|
+
# Logger
|
41
|
+
connection.use Fakturan::Logger, ::Logger.new(STDOUT), :bodies => true
|
42
|
+
|
40
43
|
# Adapter should be last
|
41
44
|
connection.adapter Faraday.default_adapter
|
42
45
|
end
|
@@ -60,7 +63,7 @@ module Fakturan
|
|
60
63
|
end
|
61
64
|
|
62
65
|
def self.use_sandbox=(true_or_false)
|
63
|
-
@use_sandbox = true_or_false
|
66
|
+
@use_sandbox = self.wire_dump = true_or_false
|
64
67
|
rebuild_url
|
65
68
|
end
|
66
69
|
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'forwardable'
|
2
|
+
|
3
|
+
module Fakturan
|
4
|
+
class Logger < Faraday::Response::Middleware
|
5
|
+
extend Forwardable
|
6
|
+
|
7
|
+
DEFAULT_OPTIONS = { :bodies => false }
|
8
|
+
|
9
|
+
def initialize(app, logger = nil, options = {})
|
10
|
+
super(app)
|
11
|
+
@logger = logger || begin
|
12
|
+
require 'logger'
|
13
|
+
::Logger.new(STDOUT)
|
14
|
+
end
|
15
|
+
@options = DEFAULT_OPTIONS.merge(options)
|
16
|
+
end
|
17
|
+
|
18
|
+
def_delegators :@logger, :debug, :info, :warn, :error, :fatal
|
19
|
+
|
20
|
+
#ErrorStatuses = 400...600
|
21
|
+
|
22
|
+
def call(env)
|
23
|
+
if Fakturan.wire_dump
|
24
|
+
info "#{env.method} #{env.url.to_s}"
|
25
|
+
debug('request') { dump_headers env.request_headers }
|
26
|
+
debug('request') { dump_body(env[:body]) } if env[:body] && log_body?(:request)
|
27
|
+
end
|
28
|
+
super
|
29
|
+
end
|
30
|
+
|
31
|
+
def on_complete(env)
|
32
|
+
if Fakturan.wire_dump
|
33
|
+
info('Status') { env.status.to_s }
|
34
|
+
#debug('response') { dump_headers env.response_headers }
|
35
|
+
debug('response') { dump_body env[:body] } if env[:body] && log_body?(:response)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def dump_headers(headers)
|
42
|
+
headers.map { |k, v| "#{k}: #{v.inspect}" }.join("\n")
|
43
|
+
end
|
44
|
+
|
45
|
+
def dump_body(body)
|
46
|
+
if body.respond_to?(:to_str)
|
47
|
+
body.to_str
|
48
|
+
else
|
49
|
+
pretty_inspect(body)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def pretty_inspect(body)
|
54
|
+
require 'pp' unless body.respond_to?(:pretty_inspect)
|
55
|
+
body.pretty_inspect
|
56
|
+
end
|
57
|
+
|
58
|
+
def log_body?(type)
|
59
|
+
case @options[:bodies]
|
60
|
+
when Hash then @options[:bodies][type]
|
61
|
+
else @options[:bodies]
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fakturan_nu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Bourque Olivegren
|
@@ -194,6 +194,7 @@ files:
|
|
194
194
|
- lib/fakturan_nu/client.rb
|
195
195
|
- lib/fakturan_nu/error.rb
|
196
196
|
- lib/fakturan_nu/invoice.rb
|
197
|
+
- lib/fakturan_nu/middleware/logger.rb
|
197
198
|
- lib/fakturan_nu/middleware/parse_json.rb
|
198
199
|
- lib/fakturan_nu/middleware/raise_error.rb
|
199
200
|
- lib/fakturan_nu/product.rb
|