ipiranga 0.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 +7 -0
- data/lib/ipiranga.rb +2 -0
- data/lib/ipiranga/client.rb +63 -0
- data/lib/ipiranga/clients.rb +15 -0
- data/lib/ipiranga/version.rb +17 -0
- metadata +75 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: de47785dc4e54740f84889c72eea0c4e544cd9cd
|
4
|
+
data.tar.gz: 996bd90a549b975e9b30e113e6eb18d05f7fab97
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5b5843892980ba32c1d0b4836b26d79db92069242686576532d373be6f78790ab40ce5b82628fa0a45531c2832f8ce3d6ab4b588c0afbea52282f67435cf4d19
|
7
|
+
data.tar.gz: 2b7d9ef6c35334a507e51ef9f37083ba2bf900ce52292f1ee28e74655c8d2358a2dfbeffddc79be68947be8a69327900a3e9f1e856744a75852989a187d31027
|
data/lib/ipiranga.rb
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'lolsoap'
|
2
|
+
require 'open-uri'
|
3
|
+
require 'net/http'
|
4
|
+
require 'uri'
|
5
|
+
require 'akami'
|
6
|
+
|
7
|
+
module Ipiranga
|
8
|
+
class Client
|
9
|
+
attr_reader :wsdl, :soap, :wsdl_url
|
10
|
+
attr_accessor :username, :password
|
11
|
+
|
12
|
+
def initialize(opts = {})
|
13
|
+
@wsdl_url = URI(opts.fetch(:wsdl, wsdl_url))
|
14
|
+
@username = opts[:username]
|
15
|
+
@password = opts[:password]
|
16
|
+
|
17
|
+
operations.each do |operation|
|
18
|
+
define_singleton_method(operation) do |&block|
|
19
|
+
post(operation, &block)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def wsdl
|
25
|
+
@wsdl ||= open(@wsdl_url.to_s).read.gsub("http://eaidev:2010", "https://#{@wsdl_url.host}")
|
26
|
+
end
|
27
|
+
|
28
|
+
def soap
|
29
|
+
@soap ||= LolSoap::Client.new(wsdl)
|
30
|
+
end
|
31
|
+
|
32
|
+
def operations
|
33
|
+
soap.wsdl.operations.keys
|
34
|
+
end
|
35
|
+
|
36
|
+
def post(operation)
|
37
|
+
request = soap.request(operation)
|
38
|
+
|
39
|
+
yield request.body if block_given?
|
40
|
+
|
41
|
+
append_wsse(request) if has_credentials?
|
42
|
+
|
43
|
+
uri = URI(request.url)
|
44
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
45
|
+
http.use_ssl = true
|
46
|
+
http_response = http.post(uri.path.gsub(".cls", ".CLS"), request.content, request.headers)
|
47
|
+
|
48
|
+
soap.response(request, http_response.body).body_hash
|
49
|
+
end
|
50
|
+
|
51
|
+
def has_credentials?
|
52
|
+
!username.nil? && !password.nil?
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def append_wsse(request)
|
58
|
+
wsse = Akami.wsse
|
59
|
+
wsse.credentials(username, password)
|
60
|
+
request.header.__node__ << wsse.to_xml
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'ipiranga/client'
|
2
|
+
|
3
|
+
module Ipiranga
|
4
|
+
class PF < Client
|
5
|
+
def wsdl_url
|
6
|
+
"https://b2bdv.ipiranga.com.br/csp/ensb2cws/cbpi.bs.participantePF.Service.CLS?WSDL=1"
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
class KM < Client
|
11
|
+
def wsdl_url
|
12
|
+
"https://b2bdv.ipiranga.com.br/csp/ensb2cws/cbpi.bs.km.pedido.Service.CLS?WSDL=1"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Ipiranga
|
2
|
+
# Major version number
|
3
|
+
MAJOR = 0
|
4
|
+
# Minor version number
|
5
|
+
MINOR = 0
|
6
|
+
# Tiny version number
|
7
|
+
TINY = 1
|
8
|
+
|
9
|
+
# Joins the version numbers
|
10
|
+
VERSION = [MAJOR, MINOR, TINY].join('.')
|
11
|
+
|
12
|
+
# Returns {VERSION}
|
13
|
+
# @return [String]
|
14
|
+
def self.version
|
15
|
+
VERSION
|
16
|
+
end
|
17
|
+
end
|
metadata
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ipiranga
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Amadeus Folego
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-08-23 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: lolsoap
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.4.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.4.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: akami
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.2.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.2.0
|
41
|
+
description: A simple Ipiranga Web Services Client
|
42
|
+
email: amadeusfolego@gmail.com
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- lib/ipiranga.rb
|
48
|
+
- lib/ipiranga/version.rb
|
49
|
+
- lib/ipiranga/client.rb
|
50
|
+
- lib/ipiranga/clients.rb
|
51
|
+
homepage: https://github.com/badosu/Ipiranga
|
52
|
+
licenses:
|
53
|
+
- MIT
|
54
|
+
metadata: {}
|
55
|
+
post_install_message:
|
56
|
+
rdoc_options: []
|
57
|
+
require_paths:
|
58
|
+
- lib
|
59
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
requirements: []
|
70
|
+
rubyforge_project:
|
71
|
+
rubygems_version: 2.0.3
|
72
|
+
signing_key:
|
73
|
+
specification_version: 4
|
74
|
+
summary: Ipiranga Web Services Client
|
75
|
+
test_files: []
|