sendregning 0.1.2 → 0.1.3

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
+ SHA1:
3
+ metadata.gz: 1c1f7147849c41ef8793153b66a1f58da22c94f1
4
+ data.tar.gz: d57d452f433f69185e4358b7b2b37919b51e60ba
5
+ SHA512:
6
+ metadata.gz: 60e9a23fa2e5494d5238938aa0e631e19729a74cedfbbbb2aa865ae8f12f98a8a6bac61ec1b9540db764c68aa122c2f29d8cd79ac69f87a11e852793c6caa26e
7
+ data.tar.gz: b21f77225dd948ad1514af54317e737586a2c420e6a49682f196fc4015c1c72cc321984f7beb8e39f61bb1feb34acdd79f14e3634cfb08aa0bdb17999b34321c
data/.gitignore CHANGED
@@ -1,21 +1 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
-
21
- ## PROJECT::SPECIFIC
1
+ *.gem
@@ -0,0 +1,47 @@
1
+ # Sendregning
2
+
3
+ Ruby client for the SendRegning Web Service.
4
+
5
+ ## Getting started
6
+
7
+ Install with RubyGems:
8
+
9
+ gem install sendregning
10
+
11
+ Now start sending invoices:
12
+
13
+ # Create a new client
14
+ client = Sendregning::Client.new('my@email.com', 'myawesomepassword')
15
+
16
+ # Start a new email invoice
17
+ invoice = client.new_invoice(
18
+ name: 'My Client',
19
+ zip: '0123',
20
+ city: 'Oslo',
21
+ shipment: :email,
22
+ emailaddresses: 'my@email.com'
23
+ )
24
+
25
+ # Add an item
26
+ invoice.add_line qty: 1, desc: 'Bananaphone', unitPrice: '500,00'
27
+
28
+ # Send it away!
29
+ invoice.send!
30
+
31
+ # Get the invoice number for future reference
32
+ id = invoice.invoiceNo
33
+
34
+ Let's check how we're doing!
35
+
36
+ invoice = client.find_invoice(id)
37
+ invoice.paid? # => true
38
+
39
+ Pass `test: true` to the constructor to use the test API
40
+
41
+ # Create a new client
42
+ client = Sendregning::Client.new('my@email.com', 'myawesomepassword', test: true)
43
+
44
+
45
+ ## Copyright
46
+
47
+ Copyright (c) 2010 Inge Jørgensen. See LICENSE for details.
@@ -8,6 +8,7 @@ dir = Pathname(__FILE__).dirname.expand_path
8
8
  require dir + 'sendregning/client'
9
9
  require dir + 'sendregning/invoice'
10
10
  require dir + 'sendregning/line'
11
+ require dir + 'sendregning/version'
11
12
 
12
13
  module Sendregning
13
- end
14
+ end
@@ -2,117 +2,117 @@ require 'yaml'
2
2
 
3
3
  module Sendregning
4
4
 
5
- # Client for the SendRegning Web Services.
6
- #
7
- # Usage example:
8
- #
9
- # client = SendRegning::Client.new(my_username, my_password)
10
-
11
- class Client
12
- include HTTParty
5
+ # Client for the SendRegning Web Services.
6
+ #
7
+ # Usage example:
8
+ #
9
+ # client = SendRegning::Client.new(my_username, my_password)
10
+
11
+ class Client
12
+ include HTTParty
13
13
 
14
- base_uri 'https://www.sendregning.no'
15
- format :xml
14
+ base_uri 'https://www.sendregning.no'
15
+ format :xml
16
16
 
17
- def initialize(username, password, options={})
18
- @auth = {:username => username, :password => password}
19
- @test = true if options[:test]
20
- end
21
-
22
- public
17
+ def initialize(username, password, options={})
18
+ @auth = {:username => username, :password => password}
19
+ @test = true if options[:test]
20
+ end
21
+
22
+ public
23
23
 
24
- # Performs a GET request
25
- def get(query={})
26
- self.class.get('/ws/butler.do', query_options(query))
27
- end
24
+ # Performs a GET request
25
+ def get(query={})
26
+ self.class.get('/ws/butler.do', query_options(query))
27
+ end
28
28
 
29
- # Performs a POST request
30
- def post(query=nil)
31
- self.class.post('/ws/butler.do', query_options(query))
32
- end
33
-
34
- # Performs a POST request with an XML payload
35
- def post_xml(xml, body={})
36
- # Prepare the request
37
- url = URI.parse("#{self.class.base_uri}/ws/butler.do")
38
- body[:xml] = UploadIO.new(StringIO.new(xml), 'text/xml', 'request.xml')
39
- body[:test] = true if @test
40
- request = Net::HTTP::Post::Multipart.new(url.path, body)
41
- request.basic_auth @auth[:username], @auth[:password]
42
-
43
- # Perform request
44
- http = Net::HTTP.new(url.host, url.port)
45
- http.use_ssl = true
46
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
47
- res = http.start{|http| http.request(request)}
29
+ # Performs a POST request
30
+ def post(query=nil)
31
+ self.class.post('/ws/butler.do', query_options(query))
32
+ end
33
+
34
+ # Performs a POST request with an XML payload
35
+ def post_xml(xml, body={})
36
+ # Prepare the request
37
+ url = URI.parse("#{self.class.base_uri}/ws/butler.do")
38
+ body[:xml] = UploadIO.new(StringIO.new(xml), 'text/xml', 'request.xml')
39
+ body[:test] = true if @test
40
+ request = Net::HTTP::Post::Multipart.new(url.path, body)
41
+ request.basic_auth @auth[:username], @auth[:password]
42
+
43
+ # Perform request
44
+ http = Net::HTTP.new(url.host, url.port)
45
+ http.use_ssl = true
46
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
47
+ res = http.start{|http| http.request(request)}
48
48
 
49
- # Parse the response
50
- response = Response.new(res, self.class.parser.call(res.body, :xml))
51
- end
52
-
53
- # Returns a list of recipients
54
- def recipients
55
- response = get(:action => 'select', :type => 'recipient')
56
- response['recipients']['recipient']
57
- end
58
-
59
- # Instances a new invoice
60
- def new_invoice(attributes={})
61
- Sendregning::Invoice.new(attributes.merge({:client => self}))
62
- end
63
-
64
- # Sends an invoice
65
- def send_invoice(invoice)
66
- response = post_xml(invoice.to_xml, {:action => 'send', :type => 'invoice'})
67
- parse_invoice(response['invoices']['invoice'], invoice)
68
- end
69
-
70
- # Finds an invoice by invoice number
71
- def find_invoice(invoice_id)
72
- builder = Builder::XmlMarkup.new(:indent=>2)
73
- builder.instruct! :xml, :version=>"1.0", :encoding=>"UTF-8"
74
- request_xml = builder.select do |select|
75
- select.invoiceNumbers do |numbers|
76
- numbers.invoiceNumber invoice_id
77
- end
78
- end
79
- response = post_xml(request_xml, {:action => 'select', :type => 'invoice'})
80
- parse_invoice(response['invoices']['invoice']) rescue nil
81
- end
82
-
49
+ # Parse the response
50
+ response = Response.new(res, self.class.parser.call(res.body, :xml))
51
+ end
52
+
53
+ # Returns a list of recipients
54
+ def recipients
55
+ response = get(:action => 'select', :type => 'recipient')
56
+ response['recipients']['recipient']
57
+ end
58
+
59
+ # Instances a new invoice
60
+ def new_invoice(attributes={})
61
+ Sendregning::Invoice.new(attributes.merge({:client => self}))
62
+ end
63
+
64
+ # Sends an invoice
65
+ def send_invoice(invoice)
66
+ response = post_xml(invoice.to_xml, {:action => 'send', :type => 'invoice'})
67
+ parse_invoice(response['invoices']['invoice'], invoice)
68
+ end
69
+
70
+ # Finds an invoice by invoice number
71
+ def find_invoice(invoice_id)
72
+ builder = Builder::XmlMarkup.new(:indent=>2)
73
+ builder.instruct! :xml, :version=>"1.0", :encoding=>"UTF-8"
74
+ request_xml = builder.select do |select|
75
+ select.invoiceNumbers do |numbers|
76
+ numbers.invoiceNumber invoice_id
77
+ end
78
+ end
79
+ response = post_xml(request_xml, {:action => 'select', :type => 'invoice'})
80
+ parse_invoice(response['invoices']['invoice']) rescue nil
81
+ end
82
+
83
83
 
84
- protected
84
+ protected
85
85
 
86
- def flatten_xml_hash(hash)
87
- new_hash = {}
88
- hash.each do |key, value|
89
- new_hash[key] = "#{value}"
90
- end
91
- new_hash
92
- end
86
+ def flatten_xml_hash(hash)
87
+ new_hash = {}
88
+ hash.each do |key, value|
89
+ new_hash[key] = "#{value}"
90
+ end
91
+ new_hash
92
+ end
93
93
 
94
- def parse_invoice(response, invoice=Sendregning::Invoice.new)
95
- attributes = response.dup
96
- if attributes['optional']
97
- attributes = attributes.merge(attributes['optional'])
98
- attributes.delete('optional')
99
- end
100
- if attributes['shipment']
101
- attributes = attributes.merge(attributes['shipment'])
102
- attributes.delete('shipment')
103
- end
104
- lines = attributes['lines']['line']; attributes.delete('lines')
94
+ def parse_invoice(response, invoice=Sendregning::Invoice.new)
95
+ attributes = response.dup
96
+ if attributes['optional']
97
+ attributes = attributes.merge(attributes['optional'])
98
+ attributes.delete('optional')
99
+ end
100
+ if attributes['shipment']
101
+ attributes = attributes.merge(attributes['shipment'])
102
+ attributes.delete('shipment')
103
+ end
104
+ lines = attributes['lines']['line']; attributes.delete('lines')
105
105
 
106
- invoice.update(flatten_xml_hash(attributes))
107
- invoice.lines = lines.map{|l| Sendregning::Line.new(flatten_xml_hash(l))}
108
- invoice
109
- end
106
+ invoice.update(flatten_xml_hash(attributes))
107
+ invoice.lines = lines.map{|l| Sendregning::Line.new(flatten_xml_hash(l))}
108
+ invoice
109
+ end
110
110
 
111
- # Prepares options for a request
112
- def query_options(query={})
113
- query[:test] = 'true' if @test
114
- {:basic_auth => @auth, :query => query}
115
- end
111
+ # Prepares options for a request
112
+ def query_options(query={})
113
+ query[:test] = 'true' if @test
114
+ {:basic_auth => @auth, :query => query}
115
+ end
116
116
 
117
- end
118
- end
117
+ end
118
+ end
@@ -1,147 +1,147 @@
1
1
  module Sendregning
2
2
 
3
- class Invoice
3
+ class Invoice
4
4
 
5
- OPTIONAL_ATTRIBUTES = [
6
- # Request
7
- :invoiceType, :creditedId, :orderNo, :invoiceDate, :orderNo,
8
- :invoiceDate, :dueDate, :orderDate, :recipientNo, :address1, :address2,
9
- :country, :email, :ourRef, :yourRef, :comment, :invoiceText, :printDunningInfo,
10
- :itemTaxInclude,
5
+ OPTIONAL_ATTRIBUTES = [
6
+ # Request
7
+ :invoiceType, :creditedId, :orderNo, :invoiceDate, :orderNo,
8
+ :invoiceDate, :dueDate, :orderDate, :recipientNo, :address1, :address2,
9
+ :country, :email, :ourRef, :yourRef, :comment, :invoiceText, :printDunningInfo,
10
+ :itemTaxInclude,
11
11
 
12
- # Response
13
- :tax, :dueDate, :dunningFee, :invoiceNo, :total, :accountNo, :orgNrSuffix, :kid, :orgNo, :interestRate, :state
14
- ]
12
+ # Response
13
+ :tax, :dueDate, :dunningFee, :invoiceNo, :total, :accountNo, :orgNrSuffix, :kid, :orgNo, :interestRate, :state
14
+ ]
15
15
 
16
- SHIPMENT_ATTRIBUTES = [
17
- :shipment, :emailaddresses, :copyaddresses
18
- ]
19
-
20
- SHIPMENT_MODES = {
21
- :paper => 'PAPER',
22
- :email => 'EMAIL',
23
- :paper_and_email => 'PAPER_AND_EMAIL'
24
- }
16
+ SHIPMENT_ATTRIBUTES = [
17
+ :shipment, :emailaddresses, :copyaddresses
18
+ ]
19
+
20
+ SHIPMENT_MODES = {
21
+ :paper => 'PAPER',
22
+ :email => 'EMAIL',
23
+ :paper_and_email => 'PAPER_AND_EMAIL'
24
+ }
25
25
 
26
- attr_accessor :client
27
- attr_accessor :name, :zip, :city
28
- attr_accessor :optional, :shipment
29
- attr_accessor :lines
26
+ attr_accessor :client
27
+ attr_accessor :name, :zip, :city
28
+ attr_accessor :optional, :shipment
29
+ attr_accessor :lines
30
30
 
31
- def initialize(attributes={})
32
- self.update(attributes)
33
- @lines = []
34
- end
35
-
36
- def update(attributes={})
37
- @client = attributes[:client] if attributes[:client]
38
- @name = attributes[:name] if attributes[:name]
39
- @zip = attributes[:zip] if attributes[:zip]
40
- @city = attributes[:city] if attributes[:city]
41
- self.optional = attributes
42
- self.shipment = attributes
43
- end
31
+ def initialize(attributes={})
32
+ self.update(attributes)
33
+ @lines = []
34
+ end
35
+
36
+ def update(attributes={})
37
+ @client = attributes[:client] if attributes[:client]
38
+ @name = attributes[:name] if attributes[:name]
39
+ @zip = attributes[:zip] if attributes[:zip]
40
+ @city = attributes[:city] if attributes[:city]
41
+ self.optional = attributes
42
+ self.shipment = attributes
43
+ end
44
44
 
45
- def add_line(line)
46
- line = Sendregning::Line.new(line) unless line.kind_of?(Sendregning::Line)
47
- @lines << line
48
- line
49
- end
50
-
51
- # Sends an invoice
52
- def send!
53
- self.client.send_invoice(self)
54
- end
55
-
56
- def paid?
57
- state == 'paid'
58
- end
45
+ def add_line(line)
46
+ line = Sendregning::Line.new(line) unless line.kind_of?(Sendregning::Line)
47
+ @lines << line
48
+ line
49
+ end
50
+
51
+ # Sends an invoice
52
+ def send!
53
+ self.client.send_invoice(self)
54
+ end
55
+
56
+ def paid?
57
+ state == 'paid'
58
+ end
59
59
 
60
- # Renders invoice to XML
61
- def to_xml(options={})
62
- if options[:builder]
63
- xml = options[:builder]
64
- else
65
- xml = Builder::XmlMarkup.new(:indent=>2)
66
- xml.instruct! :xml, :version=>"1.0", :encoding=>"UTF-8"
67
- end
68
- xml.invoices do |invoices|
69
- invoices.invoice do |invoice|
70
- invoice.name @name
71
- invoice.zip @zip
72
- invoice.city @city
73
-
74
- # Lines
75
- if @lines.length > 0
76
- invoice.lines do |line_builder|
77
- @lines.each{|l| l.to_xml(:builder => line_builder)}
78
- end
79
- end
60
+ # Renders invoice to XML
61
+ def to_xml(options={})
62
+ if options[:builder]
63
+ xml = options[:builder]
64
+ else
65
+ xml = Builder::XmlMarkup.new(:indent=>2)
66
+ xml.instruct! :xml, :version=>"1.0", :encoding=>"UTF-8"
67
+ end
68
+ xml.invoices do |invoices|
69
+ invoices.invoice do |invoice|
70
+ invoice.name @name
71
+ invoice.zip @zip
72
+ invoice.city @city
73
+
74
+ # Lines
75
+ if @lines.length > 0
76
+ invoice.lines do |line_builder|
77
+ @lines.each{|l| l.to_xml(:builder => line_builder)}
78
+ end
79
+ end
80
80
 
81
- # Optional attributes
82
- if @optional.length > 0
83
- invoice.optional do |optional|
84
- @optional.each do |key, value|
85
- key = key.to_sym
86
- if value.kind_of?(Date) || value.kind_of?(Time)
87
- value = value.strftime("%d.%m.%y")
88
- end
89
- optional.tag! key, value
90
- end
91
- end
92
- end
81
+ # Optional attributes
82
+ if @optional.length > 0
83
+ invoice.optional do |optional|
84
+ @optional.each do |key, value|
85
+ key = key.to_sym
86
+ if value.kind_of?(Date) || value.kind_of?(Time)
87
+ value = value.strftime("%d.%m.%y")
88
+ end
89
+ optional.tag! key, value
90
+ end
91
+ end
92
+ end
93
93
 
94
- # Shipment attributes
95
- if @shipment.length > 0
96
- invoice.shipment do |shipment|
97
- shipment_mode = (@shipment[:shipment] || :paper).to_sym
98
- raise 'Invalid shipment mode!' unless SHIPMENT_MODES.keys.include?(shipment_mode)
99
- shipment_mode = SHIPMENT_MODES[shipment_mode]
94
+ # Shipment attributes
95
+ if @shipment.length > 0
96
+ invoice.shipment do |shipment|
97
+ shipment_mode = (@shipment[:shipment] || :paper).to_sym
98
+ raise 'Invalid shipment mode!' unless SHIPMENT_MODES.keys.include?(shipment_mode)
99
+ shipment_mode = SHIPMENT_MODES[shipment_mode]
100
100
 
101
- shipment.text! shipment_mode
102
- @shipment.each do |key, values|
103
- key = key.to_sym
104
- unless key == :shipment
105
- values = [values] unless values.kind_of?(Enumerable)
106
- shipment.tag! key do |emails|
107
- values.each{|v| emails.email v}
108
- end
109
- end
110
- end
111
- end
112
- end
113
- end
114
- end
115
- end
101
+ shipment.text! shipment_mode
102
+ @shipment.each do |key, values|
103
+ key = key.to_sym
104
+ unless key == :shipment
105
+ values = [values] unless values.kind_of?(Enumerable)
106
+ shipment.tag! key do |emails|
107
+ values.each{|v| emails.email v}
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end
115
+ end
116
116
 
117
- protected
118
-
119
- def optional=(attributes)
120
- @optional ||= {}
121
- attributes.each do |key, value|
122
- @optional[key.to_sym] = value if OPTIONAL_ATTRIBUTES.include?(key.to_sym)
123
- end
124
- @optional
125
- end
126
-
127
- def shipment=(attributes)
128
- @shipment ||= {}
129
- attributes.each do |key, value|
130
- @shipment[key.to_sym] = value if SHIPMENT_ATTRIBUTES.include?(key.to_sym)
131
- end
132
- @shipment
133
- end
134
-
135
- def method_missing(method, *args)
136
- if OPTIONAL_ATTRIBUTES.include?(method)
137
- @optional[method]
138
- elsif SHIPPING_ATTRIBUTES.include?(method)
139
- @shipping[method]
140
- else
141
- super
142
- end
143
- end
144
-
145
- end
117
+ protected
118
+
119
+ def optional=(attributes)
120
+ @optional ||= {}
121
+ attributes.each do |key, value|
122
+ @optional[key.to_sym] = value if OPTIONAL_ATTRIBUTES.include?(key.to_sym)
123
+ end
124
+ @optional
125
+ end
126
+
127
+ def shipment=(attributes)
128
+ @shipment ||= {}
129
+ attributes.each do |key, value|
130
+ @shipment[key.to_sym] = value if SHIPMENT_ATTRIBUTES.include?(key.to_sym)
131
+ end
132
+ @shipment
133
+ end
134
+
135
+ def method_missing(method, *args)
136
+ if OPTIONAL_ATTRIBUTES.include?(method)
137
+ @optional[method]
138
+ elsif SHIPPING_ATTRIBUTES.include?(method)
139
+ @shipping[method]
140
+ else
141
+ super
142
+ end
143
+ end
144
+
145
+ end
146
146
 
147
- end
147
+ end
@@ -1,59 +1,59 @@
1
1
  module Sendregning
2
2
 
3
- class Line
3
+ class Line
4
4
 
5
- # Quantity, as decimal. Example: '7,5'
6
- attr_accessor :qty
7
-
8
- # Product code. String, max length: 9
9
- attr_accessor :prodCode
10
-
11
- # Description. String, max length: 75
12
- attr_accessor :desc
13
-
14
- # Price per unit in decimal. Example: '250,00'
15
- attr_accessor :unitPrice
16
-
17
- # Discount in percentage as decimal. Optional, defaults to 0
18
- attr_accessor :discount
5
+ # Quantity, as decimal. Example: '7,5'
6
+ attr_accessor :qty
7
+
8
+ # Product code. String, max length: 9
9
+ attr_accessor :prodCode
10
+
11
+ # Description. String, max length: 75
12
+ attr_accessor :desc
13
+
14
+ # Price per unit in decimal. Example: '250,00'
15
+ attr_accessor :unitPrice
16
+
17
+ # Discount in percentage as decimal. Optional, defaults to 0
18
+ attr_accessor :discount
19
19
 
20
- # Tax rate. Valid rates are: '0', '8', '13' and '25'. Default: '25'
21
- attr_accessor :tax
22
-
23
- attr_accessor :itemNo, :lineTaxAmount, :lineTotal
20
+ # Tax rate. Valid rates are: '0', '8', '13' and '25'. Default: '25'
21
+ attr_accessor :tax
22
+
23
+ attr_accessor :itemNo, :lineTaxAmount, :lineTotal
24
24
 
25
- def initialize(new_attributes={})
26
- self.attributes = new_attributes
27
- end
28
-
29
- # Renders line to XML
30
- def to_xml(options={})
31
- if options[:builder]
32
- xml = options[:builder]
33
- else
34
- xml = Builder::XmlMarkup.new(:indent=>2)
35
- xml.instruct! :xml, :version=>"1.0", :encoding=>"UTF-8"
36
- end
37
- xml.line do |line|
38
- line.qty self.qty if @qty
39
- line.prodCode self.prodCode if @prodCode
40
- line.desc self.desc if @desc
41
- line.unitPrice self.unitPrice if @unitPrice
42
- line.discount self.discount if @discount
43
- line.tax self.tax if @tax
44
- end
45
- end
25
+ def initialize(new_attributes={})
26
+ self.attributes = new_attributes
27
+ end
28
+
29
+ # Renders line to XML
30
+ def to_xml(options={})
31
+ if options[:builder]
32
+ xml = options[:builder]
33
+ else
34
+ xml = Builder::XmlMarkup.new(:indent=>2)
35
+ xml.instruct! :xml, :version=>"1.0", :encoding=>"UTF-8"
36
+ end
37
+ xml.line do |line|
38
+ line.qty self.qty if @qty
39
+ line.prodCode self.prodCode if @prodCode
40
+ line.desc self.desc if @desc
41
+ line.unitPrice self.unitPrice if @unitPrice
42
+ line.discount self.discount if @discount
43
+ line.tax self.tax if @tax
44
+ end
45
+ end
46
46
 
47
- protected
47
+ protected
48
48
 
49
- def attributes=(attributes={})
50
- attributes.each do |key, value|
51
- set_method = "#{key.to_s}=".to_sym
52
- self.send(set_method, value) if self.respond_to?(set_method)
53
- end
54
- attributes
55
- end
49
+ def attributes=(attributes={})
50
+ attributes.each do |key, value|
51
+ set_method = "#{key.to_s}=".to_sym
52
+ self.send(set_method, value) if self.respond_to?(set_method)
53
+ end
54
+ attributes
55
+ end
56
56
 
57
- end
58
-
59
- end
57
+ end
58
+
59
+ end
@@ -0,0 +1,5 @@
1
+ module Sendregning
2
+ unless Sendregning.const_defined?('VERSION')
3
+ VERSION = "0.1.3"
4
+ end
5
+ end
@@ -1,63 +1,26 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
+
3
+ $:.push File.expand_path("../lib", __FILE__)
4
+ require "sendregning/version"
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{sendregning}
8
- s.version = "0.1.2"
7
+ s.name = 'sendregning'
8
+ s.version = Sendregning::VERSION
9
+ s.date = '2014-03-05'
10
+ s.summary = "Ruby client for the SendRegning Web Service"
11
+ s.description = "Ruby client for the SendRegning Web Service"
12
+ s.authors = ["Inge Jørgensen"]
13
+ s.email = 'inge@manualdesign.no'
14
+ s.homepage = 'http://github.com/elektronaut/sendregning'
15
+ s.license = 'MIT'
16
+ s.required_ruby_version = Gem::Requirement.new(">= 1.8.7")
9
17
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Inge J\303\270rgensen"]
12
- s.date = %q{2011-01-05}
13
- s.description = %q{Ruby client for the SendRegning Web Service}
14
- s.email = %q{inge@manualdesign.no}
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.rdoc"
18
- ]
19
- s.files = [
20
- ".document",
21
- ".gitignore",
22
- "LICENSE",
23
- "README.rdoc",
24
- "Rakefile",
25
- "VERSION",
26
- "lib/sendregning.rb",
27
- "lib/sendregning/client.rb",
28
- "lib/sendregning/invoice.rb",
29
- "lib/sendregning/line.rb",
30
- "sendregning.gemspec",
31
- "test/helper.rb",
32
- "test/test_sendregning.rb"
33
- ]
34
- s.homepage = %q{http://github.com/elektronaut/sendregning}
35
- s.rdoc_options = ["--charset=UTF-8"]
18
+ s.files = `git ls-files`.split("\n")
19
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
36
21
  s.require_paths = ["lib"]
37
- s.rubygems_version = %q{1.3.7}
38
- s.summary = %q{Ruby client for the SendRegning Web Service}
39
- s.test_files = [
40
- "test/helper.rb",
41
- "test/test_sendregning.rb"
42
- ]
43
-
44
- if s.respond_to? :specification_version then
45
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
46
- s.specification_version = 3
47
22
 
48
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
- s.add_runtime_dependency(%q<httparty>, [">= 0.6.1"])
50
- s.add_runtime_dependency(%q<builder>, [">= 2.1.2"])
51
- s.add_runtime_dependency(%q<multipart-post>, [">= 1.0.1"])
52
- else
53
- s.add_dependency(%q<httparty>, [">= 0.6.1"])
54
- s.add_dependency(%q<builder>, [">= 2.1.2"])
55
- s.add_dependency(%q<multipart-post>, [">= 1.0.1"])
56
- end
57
- else
58
- s.add_dependency(%q<httparty>, [">= 0.6.1"])
59
- s.add_dependency(%q<builder>, [">= 2.1.2"])
60
- s.add_dependency(%q<multipart-post>, [">= 1.0.1"])
61
- end
23
+ s.add_runtime_dependency 'httparty', '0.6.1'
24
+ s.add_runtime_dependency 'builder', '~> 2.1'
25
+ s.add_runtime_dependency 'multipart-post', '~> 1.0'
62
26
  end
63
-
metadata CHANGED
@@ -1,128 +1,94 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: sendregning
3
- version: !ruby/object:Gem::Version
4
- hash: 31
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- - 2
10
- version: 0.1.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.3
11
5
  platform: ruby
12
- authors:
13
- - "Inge J\xC3\xB8rgensen"
6
+ authors:
7
+ - Inge Jørgensen
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2011-01-05 00:00:00 +01:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
11
+ date: 2014-03-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
22
14
  name: httparty
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 5
30
- segments:
31
- - 0
32
- - 6
33
- - 1
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
34
19
  version: 0.6.1
35
20
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: builder
39
21
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 15
46
- segments:
47
- - 2
48
- - 1
49
- - 2
50
- version: 2.1.2
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 0.6.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: builder
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.1'
51
34
  type: :runtime
52
- version_requirements: *id002
53
- - !ruby/object:Gem::Dependency
54
- name: multipart-post
55
35
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- hash: 21
62
- segments:
63
- - 1
64
- - 0
65
- - 1
66
- version: 1.0.1
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: multipart-post
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
67
48
  type: :runtime
68
- version_requirements: *id003
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
69
55
  description: Ruby client for the SendRegning Web Service
70
56
  email: inge@manualdesign.no
71
57
  executables: []
72
-
73
58
  extensions: []
74
-
75
- extra_rdoc_files:
76
- - LICENSE
77
- - README.rdoc
78
- files:
79
- - .document
80
- - .gitignore
59
+ extra_rdoc_files: []
60
+ files:
61
+ - ".gitignore"
81
62
  - LICENSE
82
- - README.rdoc
83
- - Rakefile
84
- - VERSION
63
+ - README.md
85
64
  - lib/sendregning.rb
86
65
  - lib/sendregning/client.rb
87
66
  - lib/sendregning/invoice.rb
88
67
  - lib/sendregning/line.rb
68
+ - lib/sendregning/version.rb
89
69
  - sendregning.gemspec
90
- - test/helper.rb
91
- - test/test_sendregning.rb
92
- has_rdoc: true
93
70
  homepage: http://github.com/elektronaut/sendregning
94
- licenses: []
95
-
71
+ licenses:
72
+ - MIT
73
+ metadata: {}
96
74
  post_install_message:
97
- rdoc_options:
98
- - --charset=UTF-8
99
- require_paths:
75
+ rdoc_options: []
76
+ require_paths:
100
77
  - lib
101
- required_ruby_version: !ruby/object:Gem::Requirement
102
- none: false
103
- requirements:
78
+ required_ruby_version: !ruby/object:Gem::Requirement
79
+ requirements:
104
80
  - - ">="
105
- - !ruby/object:Gem::Version
106
- hash: 3
107
- segments:
108
- - 0
109
- version: "0"
110
- required_rubygems_version: !ruby/object:Gem::Requirement
111
- none: false
112
- requirements:
81
+ - !ruby/object:Gem::Version
82
+ version: 1.8.7
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
84
+ requirements:
113
85
  - - ">="
114
- - !ruby/object:Gem::Version
115
- hash: 3
116
- segments:
117
- - 0
118
- version: "0"
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
119
88
  requirements: []
120
-
121
89
  rubyforge_project:
122
- rubygems_version: 1.3.7
90
+ rubygems_version: 2.2.0
123
91
  signing_key:
124
- specification_version: 3
92
+ specification_version: 4
125
93
  summary: Ruby client for the SendRegning Web Service
126
- test_files:
127
- - test/helper.rb
128
- - test/test_sendregning.rb
94
+ test_files: []
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
@@ -1,47 +0,0 @@
1
- = Sendregning
2
-
3
- Ruby client for the SendRegning Web Service.
4
-
5
- == Getting started
6
-
7
- Install with RubyGems:
8
-
9
- $ gem install sendregning
10
-
11
- Now start sending invoices:
12
-
13
- # Create a new client
14
- client = Sendregning::Client.new('my@email.com', 'myawesomepassword')
15
-
16
- # Start a new email invoice
17
- invoice = client.new_invoice(
18
- :name => 'My Client',
19
- :zip => '0123',
20
- :city => 'Oslo',
21
- :shipment => :email,
22
- :emailaddresses => 'my@email.com'
23
- )
24
-
25
- # Add an item
26
- invoice.add_line :qty => 1, :desc => 'Bananaphone', :unitPrice => '500,00'
27
-
28
- # Send it away!
29
- invoice.send!
30
-
31
- # Get the invoice number for future reference
32
- id = invoice.invoiceNo
33
-
34
- Let's check how we're doing!
35
-
36
- invoice = client.find_invoice(id)
37
- invoice.paid? # => true
38
-
39
- Pass :test => true to the constructor to use the test API
40
-
41
- # Create a new client
42
- client = Sendregning::Client.new('my@email.com', 'myawesomepassword', :test => true)
43
-
44
-
45
- == Copyright
46
-
47
- Copyright (c) 2010 Inge Jørgensen. See LICENSE for details.
data/Rakefile DELETED
@@ -1,56 +0,0 @@
1
- require 'rubygems'
2
- require 'rake'
3
-
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "sendregning"
8
- gem.summary = "Ruby client for the SendRegning Web Service"
9
- gem.description = "Ruby client for the SendRegning Web Service"
10
- gem.email = "inge@manualdesign.no"
11
- gem.homepage = "http://github.com/elektronaut/sendregning"
12
- gem.authors = ["Inge Jørgensen"]
13
- gem.add_dependency "httparty", ">= 0.6.1"
14
- gem.add_dependency "builder", ">= 2.1.2"
15
- gem.add_dependency "multipart-post", ">= 1.0.1"
16
- #gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
17
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
18
- end
19
- Jeweler::GemcutterTasks.new
20
- rescue LoadError
21
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
22
- end
23
-
24
- require 'rake/testtask'
25
- Rake::TestTask.new(:test) do |test|
26
- test.libs << 'lib' << 'test'
27
- test.pattern = 'test/**/test_*.rb'
28
- test.verbose = true
29
- end
30
-
31
- begin
32
- require 'rcov/rcovtask'
33
- Rcov::RcovTask.new do |test|
34
- test.libs << 'test'
35
- test.pattern = 'test/**/test_*.rb'
36
- test.verbose = true
37
- end
38
- rescue LoadError
39
- task :rcov do
40
- abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
41
- end
42
- end
43
-
44
- task :test => :check_dependencies
45
-
46
- task :default => :test
47
-
48
- require 'rake/rdoctask'
49
- Rake::RDocTask.new do |rdoc|
50
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
51
-
52
- rdoc.rdoc_dir = 'rdoc'
53
- rdoc.title = "sendregning #{version}"
54
- rdoc.rdoc_files.include('README*')
55
- rdoc.rdoc_files.include('lib/**/*.rb')
56
- end
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.1.2
@@ -1,10 +0,0 @@
1
- require 'rubygems'
2
- require 'test/unit'
3
- require 'shoulda'
4
-
5
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
- $LOAD_PATH.unshift(File.dirname(__FILE__))
7
- require 'sendregning'
8
-
9
- class Test::Unit::TestCase
10
- end
@@ -1,7 +0,0 @@
1
- require 'helper'
2
-
3
- class TestSendregning < Test::Unit::TestCase
4
- should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
6
- end
7
- end