b2b_center_api 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/README.md +29 -1
- data/b2b_center_api.gemspec +1 -1
- data/lib/b2b_center_api/client.rb +12 -7
- data/lib/b2b_center_api/remote_auction.rb +18 -1
- data/lib/b2b_center_api/remote_market.rb +4 -1
- data/lib/b2b_center_api/remote_tender.rb +1 -0
- data/lib/b2b_center_api/version.rb +1 -1
- data/lib/b2b_center_api/web_service/type_cast.rb +2 -1
- data/lib/b2b_center_api/web_service/types.rb +3 -0
- data/lib/b2b_center_api/web_service/types/array_of_ids.rb +16 -0
- data/lib/b2b_center_api/web_service/types/auction_offer.rb +47 -0
- data/lib/b2b_center_api/web_service/types/auction_participant.rb +25 -5
- data/lib/b2b_center_api/web_service/types/b2b_file.rb +34 -0
- data/lib/b2b_center_api/web_service/types/base.rb +4 -0
- data/lib/b2b_center_api/web_service/types/firm_info.rb +54 -26
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c01d388e69d03c7577e73443eb76e61709674a0e
|
4
|
+
data.tar.gz: 1fe96e984765447f9d45f4db55fdd577d71f906f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8259a0e35dd79ecc5d02c6ecc4145a0cdca7c2da241bee710496a43584cfa43f8ef7215237bc609f37797c15565e25b43c3b87c8719979b8e2b838c0ed147210
|
7
|
+
data.tar.gz: 48108158f4e40b675df1e6ecaa91bbc9c4d4b250fb3a53a86e5cf068fb6f3fe9090856141e0ab24e83daa5c893aaf12af375950b5f85730dad4babf245489bbb
|
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
@@ -18,7 +18,35 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
-
|
21
|
+
```ruby
|
22
|
+
require 'b2b_center_api'
|
23
|
+
|
24
|
+
B2bCenterApi::Settings.soap_configure(
|
25
|
+
wsdl: 'http://demo.b2b-center.ru/market/remote.html?wsdl',
|
26
|
+
proxy: 'http://login:pass@address:port',
|
27
|
+
env_namespace: 'SOAP-ENV',
|
28
|
+
filters: [:password],
|
29
|
+
pretty_print_xml: true,
|
30
|
+
log: false
|
31
|
+
)
|
32
|
+
|
33
|
+
B2bCenterApi::Settings.auth_configure(
|
34
|
+
auth: { login: 'login', password: 'pass' }
|
35
|
+
)
|
36
|
+
|
37
|
+
b2b = B2bCenterApi::Client.new
|
38
|
+
|
39
|
+
ps = b2b.remote_auction.get_participants(18_501)
|
40
|
+
|
41
|
+
puts 'participants:'
|
42
|
+
puts ps
|
43
|
+
puts 'offers for first participant:'
|
44
|
+
puts ps[0].offers
|
45
|
+
```
|
46
|
+
|
47
|
+
## Documentation
|
48
|
+
|
49
|
+
http://www.rubydoc.info/gems/b2b_center_api
|
22
50
|
|
23
51
|
## Contributing
|
24
52
|
|
data/b2b_center_api.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ['archakov@gmail.com']
|
11
11
|
spec.description = %q{API for b2b-center.}
|
12
12
|
spec.summary = %q{B2B Center API}
|
13
|
-
spec.homepage = ''
|
13
|
+
spec.homepage = 'https://github.com/kodram/b2b_center_api'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($RS)
|
@@ -5,15 +5,20 @@ require 'b2b_center_api/remote_tender'
|
|
5
5
|
require 'savon'
|
6
6
|
|
7
7
|
module B2bCenterApi
|
8
|
-
#
|
8
|
+
# Client for API
|
9
9
|
class Client
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
# Методы класса RemoteAuction
|
11
|
+
# @return [RemoteAuction]
|
12
|
+
attr_accessor :remote_auction
|
13
|
+
# Методы класса RemoteMarket
|
14
|
+
# @return [RemoteMarket]
|
15
|
+
attr_accessor :remote_market
|
16
|
+
# Методы класса RemoteTender
|
17
|
+
# @return [RemoteTender]
|
18
|
+
attr_accessor :remote_tender
|
13
19
|
|
14
|
-
def initialize
|
15
|
-
|
16
|
-
@client = Savon.client(options)
|
20
|
+
def initialize
|
21
|
+
@client = Savon.client(Settings.soap_options)
|
17
22
|
@remote_auction = RemoteAuction.new(@client)
|
18
23
|
@remote_market = RemoteMarket.new(@client)
|
19
24
|
@remote_tender = RemoteTender.new(@client)
|
@@ -1,15 +1,32 @@
|
|
1
1
|
require 'b2b_center_api/web_service'
|
2
2
|
|
3
3
|
module B2bCenterApi
|
4
|
+
# Методы класса RemoteAuction
|
4
5
|
class RemoteAuction
|
5
6
|
def initialize(client)
|
6
7
|
@client = client
|
7
8
|
@client_web = WebService::RemoteAuction.new(client)
|
8
9
|
end
|
9
10
|
|
11
|
+
# Получить список участников
|
12
|
+
# @param auction_id [Integer] Номер аукциона/объявления
|
13
|
+
# @return [WebService::Types::AuctionParticipant[]]
|
10
14
|
def get_participants(auction_id)
|
11
15
|
response = @client_web.command :get_participants, auction_id: auction_id
|
12
|
-
WebService::Types::AuctionParticipant.from_response(response, @client)
|
16
|
+
WebService::Types::AuctionParticipant.from_response(response, @client, auction_id)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Получить предложение участника
|
20
|
+
# Метод возвращает информацию о предложении (альтернативном предложении) участника:
|
21
|
+
# последней ставке, имя файла с описанием предложения, информацию о том признан ли участник победителем.
|
22
|
+
# Возвращаемый методом файл доступен для скачивания из корневой FTP-папки организации.
|
23
|
+
# @param auction_id [Integer] Номер аукциона/объявления
|
24
|
+
# @param firm_id [Integer] ID организации (участник торговой процедуры)
|
25
|
+
# @param offer_num [Integer] = 0 — основное предложение = целое_число — альтернативное предложение №
|
26
|
+
# @return [WebService::Types::AuctionOffer]
|
27
|
+
def get_offer(auction_id, firm_id, offer_num)
|
28
|
+
response = @client_web.command :get_offer, auction_id: auction_id, firm_id: firm_id, offer_num: offer_num
|
29
|
+
WebService::Types::AuctionOffer.from_response(response, @client, auction_id, firm_id, offer_num)
|
13
30
|
end
|
14
31
|
end
|
15
32
|
end
|
@@ -8,9 +8,12 @@ module B2bCenterApi
|
|
8
8
|
@client_web = WebService::RemoteMarket.new(client)
|
9
9
|
end
|
10
10
|
|
11
|
+
# Получить информацию об организации
|
12
|
+
# @param firm_id [Integer] ID организации
|
13
|
+
# @return [WebService::Types::FirmInfo]
|
11
14
|
def get_firm_info(firm_id)
|
12
15
|
response = @client_web.command :get_firm_info, firm_id: firm_id
|
13
|
-
WebService::Types::FirmInfo.from_response(response, @client)
|
16
|
+
WebService::Types::FirmInfo.from_response(response, @client, firm_id)
|
14
17
|
end
|
15
18
|
end
|
16
19
|
end
|
@@ -9,7 +9,8 @@ module B2bCenterApi
|
|
9
9
|
return obj if obj.nil?
|
10
10
|
case obj_type
|
11
11
|
when :string then obj
|
12
|
-
when :integer then obj.
|
12
|
+
when :integer then obj.to_i
|
13
|
+
when :float then obj.to_f
|
13
14
|
when :date then Date.parse(obj)
|
14
15
|
when :time then Time.parse(obj)
|
15
16
|
when :boolean then to_boolean(obj)
|
@@ -1,2 +1,5 @@
|
|
1
1
|
require 'b2b_center_api/web_service/types/auction_participant'
|
2
2
|
require 'b2b_center_api/web_service/types/firm_info'
|
3
|
+
require 'b2b_center_api/web_service/types/auction_offer'
|
4
|
+
require 'b2b_center_api/web_service/types/b2b_file'
|
5
|
+
require 'b2b_center_api/web_service/types/array_of_ids'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'b2b_center_api/web_service/types/base'
|
2
|
+
|
3
|
+
module B2bCenterApi
|
4
|
+
module WebService
|
5
|
+
module Types
|
6
|
+
# Массив ID или других строк
|
7
|
+
class ArrayOfIds < Base
|
8
|
+
# @return [String[]]
|
9
|
+
def self.from_part_response(response)
|
10
|
+
return if response.nil?
|
11
|
+
to_array(response).map { |n| convert(n[:string], :string) }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'b2b_center_api/web_service/types/base'
|
2
|
+
|
3
|
+
module B2bCenterApi
|
4
|
+
module WebService
|
5
|
+
module Types
|
6
|
+
# Предложение
|
7
|
+
class AuctionOffer < Base
|
8
|
+
# @return [Integer] Номер аукциона/объявления
|
9
|
+
attr_accessor :auction_id
|
10
|
+
# @return [Integer] ID организации (участник торговой процедуры)
|
11
|
+
attr_accessor :firm_id
|
12
|
+
# @return [Integer] = 0 — основное предложение = целое_число — альтернативное предложение №
|
13
|
+
attr_accessor :offer_num
|
14
|
+
# @return [Float] Последняя ставка. Формат значения DECIMAL(15,2)
|
15
|
+
attr_accessor :final_price
|
16
|
+
# @return [Float] Последняя ставка без НДС. Формат значения DECIMAL(15,2)
|
17
|
+
attr_accessor :final_price_notax
|
18
|
+
# @return [Time] Дата последней ставки.
|
19
|
+
attr_accessor :final_bet_date
|
20
|
+
# @return [Boolean] 1 — победитель, 0 — не победитель. Формат значения INT(1)
|
21
|
+
attr_accessor :winner
|
22
|
+
# @return [Integer] Количество ставок
|
23
|
+
attr_accessor :bets
|
24
|
+
# Файлы предложения. Поле содержит список записей типа file, в случае если у текущего
|
25
|
+
# пользователя нет доступа к файлу, то поле file.name — не заполняется.
|
26
|
+
# @return [B2bCenterApi::WebService::Types::File[]]
|
27
|
+
attr_accessor :files
|
28
|
+
|
29
|
+
# @return [AuctionOffer]
|
30
|
+
def self.from_response(response, client, auction_id, firm_id, offer_num)
|
31
|
+
return if response.result.nil?
|
32
|
+
r = response.result
|
33
|
+
t = AuctionOffer.new
|
34
|
+
t.soap_client = client
|
35
|
+
t.final_price = convert(r[:final_price], :float)
|
36
|
+
t.final_price_notax = convert(r[:final_price_notax], :float)
|
37
|
+
t.final_bet_date = convert(r[:final_bet_date], :time)
|
38
|
+
t.winner = convert(r[:winner], :boolean)
|
39
|
+
t.bets = convert(r[:bets], :integer)
|
40
|
+
t.files = B2bFile.from_part_response(r[:files])
|
41
|
+
|
42
|
+
t
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -3,25 +3,45 @@ require 'b2b_center_api/web_service/types/base'
|
|
3
3
|
module B2bCenterApi
|
4
4
|
module WebService
|
5
5
|
module Types
|
6
|
+
# Участник аукциона
|
6
7
|
class AuctionParticipant < Base
|
7
|
-
|
8
|
+
# @return [Integer] Номер аукциона/объявления
|
9
|
+
attr_accessor :auction_id
|
10
|
+
# @return [String] ID организации участника, если имена участников доступны,
|
11
|
+
# либо строка вида "Participant N", где N — номер участника в списке участников, в противном случае.
|
12
|
+
attr_accessor :firm_id
|
13
|
+
# @return [Integer[]] Список отправленных заявок участником.
|
14
|
+
# Возможные значения:
|
15
|
+
# 0 — основное предложение
|
16
|
+
# целое_число — альтернативное предложение №
|
17
|
+
attr_accessor :offers_nums
|
8
18
|
|
9
|
-
|
19
|
+
# @return [Array] Массив {AuctionParticipant}
|
20
|
+
def self.from_response(response, client, auction_id)
|
21
|
+
return if response.result.nil?
|
10
22
|
r = response.result
|
11
|
-
mas = r[:participant].map do |p|
|
23
|
+
mas = to_array(r[:participant]).map do |p|
|
12
24
|
ap = AuctionParticipant.new
|
13
25
|
ap.soap_client = client
|
14
|
-
ap.
|
15
|
-
ap.
|
26
|
+
ap.auction_id = auction_id
|
27
|
+
ap.firm_id = convert(p[:firm_id], :string)
|
28
|
+
ap.offers_nums = ArrayOfIds.from_part_response(p[:offers_nums]).map(&:to_i)
|
16
29
|
ap
|
17
30
|
end
|
18
31
|
|
19
32
|
mas
|
20
33
|
end
|
21
34
|
|
35
|
+
# @return [FirmInfo] Информация об организации
|
22
36
|
def firm
|
37
|
+
return firm_id if firm_id.include? 'Participant'
|
23
38
|
remote_market.get_firm_info(firm_id)
|
24
39
|
end
|
40
|
+
|
41
|
+
# @return [AuctionOffer[]] Массив предложений
|
42
|
+
def offers
|
43
|
+
offers_nums.map { |offer_num| remote_auction.get_offer(auction_id, firm_id, offer_num) }
|
44
|
+
end
|
25
45
|
end
|
26
46
|
end
|
27
47
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'b2b_center_api/web_service/types/base'
|
2
|
+
|
3
|
+
module B2bCenterApi
|
4
|
+
module WebService
|
5
|
+
module Types
|
6
|
+
# Файл
|
7
|
+
class B2bFile < Base
|
8
|
+
# @return [String] Наименование файла. Формат значения VARCHAR(255)
|
9
|
+
attr_accessor :title
|
10
|
+
# @return [String] Описание файла
|
11
|
+
attr_accessor :description
|
12
|
+
# Имя файла, например zayavka.doc.
|
13
|
+
# Файл расположен в корневой папке пользователя (доступ по FTP).
|
14
|
+
# Если пользователь не имеет прав для скачивания файла, то поле отсутствует.
|
15
|
+
# Формат значения VARCHAR(255)
|
16
|
+
# @return [String]
|
17
|
+
attr_accessor :name
|
18
|
+
|
19
|
+
# @return [B2bFile[]]
|
20
|
+
def self.from_part_response(response)
|
21
|
+
return if response.nil?
|
22
|
+
files = to_array(response[:file]).map do |f|
|
23
|
+
file = B2bFile.new
|
24
|
+
file.title = convert(f[:title], :string)
|
25
|
+
file.description = convert(f[:description], :string)
|
26
|
+
file.name = convert(f[:name], :string)
|
27
|
+
file
|
28
|
+
end
|
29
|
+
files
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -3,36 +3,64 @@ require 'b2b_center_api/web_service/types/base'
|
|
3
3
|
module B2bCenterApi
|
4
4
|
module WebService
|
5
5
|
module Types
|
6
|
+
# Информация об организации
|
6
7
|
class FirmInfo < Base
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
8
|
+
# @return [Integer] ID организации
|
9
|
+
attr_accessor :firm_id
|
10
|
+
# @return [Time] Дата последнего изменения
|
11
|
+
attr_accessor :date_lastedit
|
12
|
+
# @return [String] Полное наименование организации. Формат значения VARCHAR(255)
|
13
|
+
attr_accessor :org_name
|
14
|
+
# @return [String] Краткое наименование организации. Формат значения VARCHAR(255)
|
15
|
+
attr_accessor :org_name_short
|
16
|
+
# @return [String] Код ОКПО. Формат значения VARCHAR (10)
|
17
|
+
attr_accessor :code_okpo
|
18
|
+
# @return [String] Название банка. Формат значения VARCHAR(255)
|
19
|
+
attr_accessor :bank_name
|
20
|
+
# @return [String] ИНН организации. Формат значения VARCHAR(30)
|
21
|
+
attr_accessor :bank_inn
|
22
|
+
# @return [String] ОГРН. Формат значения VARCHAR(15)
|
23
|
+
attr_accessor :ogrn
|
24
|
+
# @return [String] Кем выдан ОГРН. Формат значения VARCHAR(128)
|
25
|
+
attr_accessor :ogrn_given
|
26
|
+
# @return [Date] Дата выдачи ОГРН. Формат значения dd.mm.YYYY
|
27
|
+
attr_accessor :ogrn_date_given
|
28
|
+
# @return [String] КПП организации. Формат значения VARCHAR(12)
|
29
|
+
attr_accessor :bank_kpp
|
30
|
+
# @return [String] БИК. Формат значения VARCHAR(30)
|
31
|
+
attr_accessor :bank_bik
|
32
|
+
# @return [String] Расчетный счет. Формат значения VARCHAR(30)
|
33
|
+
attr_accessor :bank_r_account
|
34
|
+
# @return [String] Корреспондентский счет. Формат значения VARCHAR(30)
|
35
|
+
attr_accessor :bank_c_account
|
36
|
+
# @return [String] Комментарии к банковским реквизитам. Формат значения VARCHAR(255)
|
37
|
+
attr_accessor :bank_comments
|
38
|
+
# @return [String] Юридический адрес. Формат значения VARCHAR(255)
|
39
|
+
attr_accessor :jury_address
|
40
|
+
# @return [String] Почтовый адрес. Формат значения VARCHAR(255)
|
41
|
+
attr_accessor :post_address
|
42
|
+
# @return [String] Фактический адрес. Формат значения VARCHAR(255)
|
43
|
+
attr_accessor :fact_address
|
44
|
+
# @return [String] Адрес веб-сайта. Формат значения VARCHAR(255)
|
45
|
+
attr_accessor :site_url
|
46
|
+
# @return [String] Информация о сертификации продукции, работ и услуг
|
47
|
+
attr_accessor :certification
|
48
|
+
# @return [String] Регистрационные данные. Поле заполняется только для иностранных организаций.
|
49
|
+
attr_accessor :org_details
|
50
|
+
# @return [String] Банковские реквизиты. Поле заполняется только для иностранных организаций.
|
51
|
+
attr_accessor :bank_details
|
52
|
+
# @return [Integer] Код страны. Пример: код России = 643
|
53
|
+
attr_accessor :country
|
54
|
+
# @return [Boolean] Соответствует ли участник критериям СМП (среднего или малого предпринимательства)
|
55
|
+
attr_accessor :is_smb
|
31
56
|
|
32
|
-
|
57
|
+
# @return [FirmInfo]
|
58
|
+
def self.from_response(response, client, firm_id)
|
59
|
+
return if response.result.nil?
|
33
60
|
r = response.result
|
34
61
|
fi = FirmInfo.new
|
35
62
|
fi.soap_client = client
|
63
|
+
fi.firm_id = firm_id
|
36
64
|
fi.date_lastedit = convert(r[:date_lastedit], :time)
|
37
65
|
fi.org_name = convert(r[:org_name], :string)
|
38
66
|
fi.org_name_short = convert(r[:org_name_short], :string)
|
@@ -41,7 +69,7 @@ module B2bCenterApi
|
|
41
69
|
fi.bank_inn = convert(r[:bank_inn], :string)
|
42
70
|
fi.ogrn = convert(r[:ogrn], :string)
|
43
71
|
fi.ogrn_given = convert(r[:ogrn_given], :string)
|
44
|
-
fi.ogrn_date_given = convert(r[:ogrn_date_given], :
|
72
|
+
fi.ogrn_date_given = convert(r[:ogrn_date_given], :date)
|
45
73
|
fi.bank_kpp = convert(r[:bank_kpp], :string)
|
46
74
|
fi.bank_bik = convert(r[:bank_bik], :string)
|
47
75
|
fi.bank_r_account = convert(r[:bank_r_account], :string)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: b2b_center_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Archakov Aleksandr
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -95,13 +95,16 @@ files:
|
|
95
95
|
- lib/b2b_center_api/web_service/response.rb
|
96
96
|
- lib/b2b_center_api/web_service/type_cast.rb
|
97
97
|
- lib/b2b_center_api/web_service/types.rb
|
98
|
+
- lib/b2b_center_api/web_service/types/array_of_ids.rb
|
99
|
+
- lib/b2b_center_api/web_service/types/auction_offer.rb
|
98
100
|
- lib/b2b_center_api/web_service/types/auction_participant.rb
|
101
|
+
- lib/b2b_center_api/web_service/types/b2b_file.rb
|
99
102
|
- lib/b2b_center_api/web_service/types/base.rb
|
100
103
|
- lib/b2b_center_api/web_service/types/firm_info.rb
|
101
104
|
- spec/b2b_center_api_spec.rb
|
102
105
|
- spec/spec_helper.rb
|
103
106
|
- wsdl/demo.remote.xml
|
104
|
-
homepage:
|
107
|
+
homepage: https://github.com/kodram/b2b_center_api
|
105
108
|
licenses:
|
106
109
|
- MIT
|
107
110
|
metadata: {}
|