b2b_center_api 0.0.4 → 0.0.5
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/lib/b2b_center_api/remote_tender.rb +18 -0
- data/lib/b2b_center_api/version.rb +1 -1
- data/lib/b2b_center_api/web_service/base_type.rb +51 -0
- data/lib/b2b_center_api/web_service/response.rb +2 -2
- data/lib/b2b_center_api/web_service/types/array_of_ids.rb +2 -4
- data/lib/b2b_center_api/web_service/types/auction_offer.rb +4 -6
- data/lib/b2b_center_api/web_service/types/auction_participant.rb +3 -5
- data/lib/b2b_center_api/web_service/types/b2b_file.rb +1 -3
- data/lib/b2b_center_api/web_service/types/firm_info.rb +3 -5
- data/lib/b2b_center_api/web_service/types/tender_offer.rb +31 -0
- data/lib/b2b_center_api/web_service/types/tender_participant.rb +69 -0
- data/lib/b2b_center_api/web_service/types.rb +3 -5
- metadata +6 -3
- data/lib/b2b_center_api/web_service/types/base.rb +0 -53
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa4e1d50072af46d48f5dc80d0a6cfc0f570df70
|
4
|
+
data.tar.gz: 3c5bf03d690060ae2ba911fd6886ab60625dce5a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0e8f60b2a2375de079ab747fb53cbff16b2f33572f049e9615b972cfb36dca9117cb2f06ee9d466fcc4f0445c535099417e2f1e03d0a7c160081f34afd5030b
|
7
|
+
data.tar.gz: fbecff3304cf23808bfe8686cd160c9ab157b2c3790432fb42bc491361e73d00d03de112025e7cca75ca3abf32c649d7c57007305be4d4ce562e0e607588f887
|
@@ -7,5 +7,23 @@ module B2bCenterApi
|
|
7
7
|
@client = client
|
8
8
|
@client_web = WebService::RemoteTender.new(client)
|
9
9
|
end
|
10
|
+
|
11
|
+
# Получить список участников
|
12
|
+
# @param tender_id [Integer] Номер конкурса
|
13
|
+
# @return [WebService::Types::TenderParticipant[]]
|
14
|
+
def get_participants(tender_id)
|
15
|
+
response = @client_web.command :get_participants, tender_id: tender_id
|
16
|
+
WebService::Types::TenderParticipant.from_response(response, @client, tender_id)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Получить конкурсную заявку участника
|
20
|
+
# @param tender_id [Integer] Номер конкурса
|
21
|
+
# @param firm_id [Integer] ID организации (участник торговой процедуры)
|
22
|
+
# @param offer_num [Integer] = 0 — основное предложение = целое_число — альтернативное предложение №
|
23
|
+
# @return [WebService::Types::TenderOffer]
|
24
|
+
def get_offer(tender_id, firm_id, offer_num)
|
25
|
+
response = @client_web.command :get_offer, tender_id: tender_id, firm_id: firm_id, offer_num: offer_num
|
26
|
+
WebService::Types::TenderOffer.from_response(response, @client, tender_id, firm_id, offer_num)
|
27
|
+
end
|
10
28
|
end
|
11
29
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'b2b_center_api/web_service/type_cast'
|
2
|
+
require 'b2b_center_api/remote_auction'
|
3
|
+
require 'b2b_center_api/remote_market'
|
4
|
+
require 'b2b_center_api/remote_tender'
|
5
|
+
|
6
|
+
module B2bCenterApi
|
7
|
+
module WebService
|
8
|
+
class BaseType
|
9
|
+
include B2bCenterApi::WebService::TypeCast
|
10
|
+
|
11
|
+
attr_writer :soap_client
|
12
|
+
|
13
|
+
NO_INSPECT_ATTRS = [:@soap_client]
|
14
|
+
|
15
|
+
def inspect
|
16
|
+
vars = instance_variables
|
17
|
+
NO_INSPECT_ATTRS.each { |a| vars.delete(a) }
|
18
|
+
vars = vars.map { |v| "#{v}=#{instance_variable_get(v).inspect}" }
|
19
|
+
vars = vars.join(', ')
|
20
|
+
"<#{self.class}: #{vars}>"
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_h
|
24
|
+
hash = {}
|
25
|
+
vars = instance_variables
|
26
|
+
NO_INSPECT_ATTRS.each { |a| vars.delete(a) }
|
27
|
+
|
28
|
+
vars.each { |var| hash[var.to_s.delete('@').to_sym] = instance_variable_get(var) }
|
29
|
+
hash
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def remote_auction
|
35
|
+
B2bCenterApi::RemoteAuction.new(@soap_client)
|
36
|
+
end
|
37
|
+
|
38
|
+
def remote_market
|
39
|
+
B2bCenterApi::RemoteMarket.new(@soap_client)
|
40
|
+
end
|
41
|
+
|
42
|
+
def remote_tender
|
43
|
+
B2bCenterApi::RemoteTender.new(@soap_client)
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.to_array(obj)
|
47
|
+
obj.is_a?(Hash) ? [obj] : obj
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -1,13 +1,11 @@
|
|
1
|
-
require 'b2b_center_api/web_service/types/base'
|
2
|
-
|
3
1
|
module B2bCenterApi
|
4
2
|
module WebService
|
5
3
|
module Types
|
6
4
|
# Массив ID или других строк
|
7
|
-
class ArrayOfIds <
|
5
|
+
class ArrayOfIds < WebService::BaseType
|
8
6
|
# @return [String[]]
|
9
7
|
def self.from_part_response(response)
|
10
|
-
return if response.nil?
|
8
|
+
return [] if response.nil?
|
11
9
|
to_array(response).map { |n| convert(n[:string], :string) }
|
12
10
|
end
|
13
11
|
end
|
@@ -1,10 +1,8 @@
|
|
1
|
-
require 'b2b_center_api/web_service/types/base'
|
2
|
-
|
3
1
|
module B2bCenterApi
|
4
2
|
module WebService
|
5
3
|
module Types
|
6
4
|
# Предложение
|
7
|
-
class AuctionOffer <
|
5
|
+
class AuctionOffer < WebService::BaseType
|
8
6
|
# @return [Integer] Номер аукциона/объявления
|
9
7
|
attr_accessor :auction_id
|
10
8
|
# @return [Integer] ID организации (участник торговой процедуры)
|
@@ -23,13 +21,13 @@ module B2bCenterApi
|
|
23
21
|
attr_accessor :bets
|
24
22
|
# Файлы предложения. Поле содержит список записей типа file, в случае если у текущего
|
25
23
|
# пользователя нет доступа к файлу, то поле file.name — не заполняется.
|
26
|
-
# @return [B2bCenterApi::WebService::Types::
|
24
|
+
# @return [B2bCenterApi::WebService::Types::B2bFile[]]
|
27
25
|
attr_accessor :files
|
28
26
|
|
29
27
|
# @return [AuctionOffer]
|
30
28
|
def self.from_response(response, client, auction_id, firm_id, offer_num)
|
31
|
-
|
32
|
-
|
29
|
+
r = response.result[:auction_offer]
|
30
|
+
return if r.nil?
|
33
31
|
t = AuctionOffer.new
|
34
32
|
t.soap_client = client
|
35
33
|
t.auction_id = auction_id
|
@@ -1,10 +1,8 @@
|
|
1
|
-
require 'b2b_center_api/web_service/types/base'
|
2
|
-
|
3
1
|
module B2bCenterApi
|
4
2
|
module WebService
|
5
3
|
module Types
|
6
4
|
# Участник аукциона
|
7
|
-
class AuctionParticipant <
|
5
|
+
class AuctionParticipant < WebService::BaseType
|
8
6
|
# @return [Integer] Номер аукциона/объявления
|
9
7
|
attr_accessor :auction_id
|
10
8
|
# @return [String] ID организации участника, если имена участников доступны,
|
@@ -18,8 +16,8 @@ module B2bCenterApi
|
|
18
16
|
|
19
17
|
# @return [Array] Массив {AuctionParticipant}
|
20
18
|
def self.from_response(response, client, auction_id)
|
21
|
-
|
22
|
-
|
19
|
+
r = response.result[:participants]
|
20
|
+
return if r.nil?
|
23
21
|
mas = to_array(r[:participant]).map do |p|
|
24
22
|
ap = AuctionParticipant.new
|
25
23
|
ap.soap_client = client
|
@@ -1,10 +1,8 @@
|
|
1
|
-
require 'b2b_center_api/web_service/types/base'
|
2
|
-
|
3
1
|
module B2bCenterApi
|
4
2
|
module WebService
|
5
3
|
module Types
|
6
4
|
# Файл
|
7
|
-
class B2bFile <
|
5
|
+
class B2bFile < WebService::BaseType
|
8
6
|
# @return [String] Наименование файла. Формат значения VARCHAR(255)
|
9
7
|
attr_accessor :title
|
10
8
|
# @return [String] Описание файла
|
@@ -1,10 +1,8 @@
|
|
1
|
-
require 'b2b_center_api/web_service/types/base'
|
2
|
-
|
3
1
|
module B2bCenterApi
|
4
2
|
module WebService
|
5
3
|
module Types
|
6
4
|
# Информация об организации
|
7
|
-
class FirmInfo <
|
5
|
+
class FirmInfo < WebService::BaseType
|
8
6
|
# @return [Integer] ID организации
|
9
7
|
attr_accessor :firm_id
|
10
8
|
# @return [Time] Дата последнего изменения
|
@@ -56,8 +54,8 @@ module B2bCenterApi
|
|
56
54
|
|
57
55
|
# @return [FirmInfo]
|
58
56
|
def self.from_response(response, client, firm_id)
|
59
|
-
|
60
|
-
|
57
|
+
r = response.result[:firm_info]
|
58
|
+
return if r.nil?
|
61
59
|
fi = FirmInfo.new
|
62
60
|
fi.soap_client = client
|
63
61
|
fi.firm_id = firm_id
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module B2bCenterApi
|
2
|
+
module WebService
|
3
|
+
module Types
|
4
|
+
# Предложение
|
5
|
+
class TenderOffer < WebService::BaseType
|
6
|
+
# @return [Integer] Номер аукциона/объявления
|
7
|
+
attr_accessor :tender_id
|
8
|
+
# @return [B2bCenterApi::WebService::Types::B2bFile[]] Список загруженных файлов
|
9
|
+
attr_accessor :files
|
10
|
+
# @return[Integer[]] Список лотов, для которых составлена конкурсная заявка
|
11
|
+
attr_accessor :lots
|
12
|
+
# @return[String] Файл, загруженный для переторжки
|
13
|
+
attr_accessor :haggling_file_name
|
14
|
+
|
15
|
+
# @return [TenderOffer]
|
16
|
+
def self.from_response(response, client, tender_id, firm_id, offer_num)
|
17
|
+
r = response.result
|
18
|
+
return if r.nil?
|
19
|
+
|
20
|
+
t = TenderOffer.new
|
21
|
+
t.soap_client = client
|
22
|
+
t.tender_id = tender_id
|
23
|
+
t.files = B2bFile.from_part_response(r[:offer])
|
24
|
+
t.lots = r[:lots].map(&:to_i) unless r[:lots].nil?
|
25
|
+
t.haggling_file_name = convert(r[:haggling_file_name], :string)
|
26
|
+
t
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module B2bCenterApi
|
2
|
+
module WebService
|
3
|
+
module Types
|
4
|
+
# Участник конкурса
|
5
|
+
class TenderParticipant < WebService::BaseType
|
6
|
+
# @return [Integer] Номер конкурса
|
7
|
+
attr_accessor :tender_id
|
8
|
+
# @return [String] ID организации участника, если имена участников доступны,
|
9
|
+
# либо строка вида "Participant N", где N — номер участника в списке участников, в противном случае.
|
10
|
+
attr_accessor :firm_id
|
11
|
+
# @return [Integer] Статус участника:
|
12
|
+
# = 0 — отказался от участия,
|
13
|
+
# = 1 — участвует в конкурсе
|
14
|
+
attr_accessor :status
|
15
|
+
# @return [Time] С этой даты организация участвует в конкурсе. Формат значения dd.mm.YYYY HH:ii:ss
|
16
|
+
attr_accessor :date_sent
|
17
|
+
# @return [Time] Дата отправки предквалификационной заявки. Формат значения dd.mm.YYYY HH:ii:ss
|
18
|
+
attr_accessor :date_qoffer
|
19
|
+
# @return [Time] Дата отправки конкурсной заявки. Формат значения dd.mm.YYYY HH:ii:ss
|
20
|
+
attr_accessor :date_offer
|
21
|
+
# @return [Integer] Прошла ли организация предквалификационный отбор:
|
22
|
+
# 0 — нет,
|
23
|
+
# 1 — да
|
24
|
+
attr_accessor :qualified
|
25
|
+
# @return [Time] Дата, когда организация прошла предквалификационный отбор. Формат значения dd.mm.YYYY HH:ii:ss
|
26
|
+
attr_accessor :date_qualified
|
27
|
+
# @return [Integer[]] Список отправленных заявок участником.
|
28
|
+
# Возможные значения:
|
29
|
+
# -1 — предквалификационная заявка
|
30
|
+
# 0 — конкурсная заявка
|
31
|
+
# целое_число — альтернативное предложение №
|
32
|
+
attr_accessor :offers_nums
|
33
|
+
|
34
|
+
# @return [Array] Массив {TenderParticipant}
|
35
|
+
def self.from_response(response, client, tender_id)
|
36
|
+
r = response.result[:value]
|
37
|
+
return if r.nil?
|
38
|
+
mas = to_array(r[:participant]).map do |p|
|
39
|
+
ap = TenderParticipant.new
|
40
|
+
ap.soap_client = client
|
41
|
+
ap.tender_id = tender_id
|
42
|
+
ap.firm_id = convert(p[:firm_id], :string)
|
43
|
+
ap.status = convert(p[:status], :integer)
|
44
|
+
ap.date_sent = convert(p[:date_sent], :time)
|
45
|
+
ap.date_qoffer = convert(p[:date_qoffer], :time)
|
46
|
+
ap.date_offer = convert(p[:date_offer], :time)
|
47
|
+
ap.qualified = convert(p[:qualified], :integer)
|
48
|
+
ap.date_qualified = convert(p[:date_qualified], :time)
|
49
|
+
ap.offers_nums = ArrayOfIds.from_part_response(p[:offers_nums]).map(&:to_i)
|
50
|
+
ap
|
51
|
+
end
|
52
|
+
|
53
|
+
mas
|
54
|
+
end
|
55
|
+
|
56
|
+
# @return [FirmInfo] Информация об организации
|
57
|
+
def firm
|
58
|
+
return firm_id if firm_id.include? 'Participant'
|
59
|
+
remote_market.get_firm_info(firm_id)
|
60
|
+
end
|
61
|
+
|
62
|
+
# @return [AuctionOffer[]] Массив предложений
|
63
|
+
def offers
|
64
|
+
offers_nums.map { |offer_num| remote_tender.get_offer(tender_id, firm_id, offer_num) }
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'b2b_center_api/web_service/
|
2
|
-
|
3
|
-
|
4
|
-
require 'b2b_center_api/web_service/types/b2b_file'
|
5
|
-
require 'b2b_center_api/web_service/types/array_of_ids'
|
1
|
+
require 'b2b_center_api/web_service/base_type'
|
2
|
+
|
3
|
+
Dir[File.dirname(__FILE__) + '/types/*.rb'].each { |file| require file }
|
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.5
|
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-
|
11
|
+
date: 2015-06-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -88,6 +88,7 @@ files:
|
|
88
88
|
- lib/b2b_center_api/settings.rb
|
89
89
|
- lib/b2b_center_api/version.rb
|
90
90
|
- lib/b2b_center_api/web_service.rb
|
91
|
+
- lib/b2b_center_api/web_service/base_type.rb
|
91
92
|
- lib/b2b_center_api/web_service/remote.rb
|
92
93
|
- lib/b2b_center_api/web_service/remote_auction.rb
|
93
94
|
- lib/b2b_center_api/web_service/remote_market.rb
|
@@ -99,8 +100,9 @@ files:
|
|
99
100
|
- lib/b2b_center_api/web_service/types/auction_offer.rb
|
100
101
|
- lib/b2b_center_api/web_service/types/auction_participant.rb
|
101
102
|
- lib/b2b_center_api/web_service/types/b2b_file.rb
|
102
|
-
- lib/b2b_center_api/web_service/types/base.rb
|
103
103
|
- lib/b2b_center_api/web_service/types/firm_info.rb
|
104
|
+
- lib/b2b_center_api/web_service/types/tender_offer.rb
|
105
|
+
- lib/b2b_center_api/web_service/types/tender_participant.rb
|
104
106
|
- spec/b2b_center_api_spec.rb
|
105
107
|
- spec/spec_helper.rb
|
106
108
|
- wsdl/demo.remote.xml
|
@@ -131,3 +133,4 @@ summary: B2B Center API
|
|
131
133
|
test_files:
|
132
134
|
- spec/b2b_center_api_spec.rb
|
133
135
|
- spec/spec_helper.rb
|
136
|
+
has_rdoc:
|
@@ -1,53 +0,0 @@
|
|
1
|
-
require 'b2b_center_api/web_service/type_cast'
|
2
|
-
require 'b2b_center_api/remote_auction'
|
3
|
-
require 'b2b_center_api/remote_market'
|
4
|
-
require 'b2b_center_api/remote_tender'
|
5
|
-
|
6
|
-
module B2bCenterApi
|
7
|
-
module WebService
|
8
|
-
module Types
|
9
|
-
class Base
|
10
|
-
include B2bCenterApi::WebService::TypeCast
|
11
|
-
|
12
|
-
attr_writer :soap_client
|
13
|
-
|
14
|
-
NO_INSPECT_ATTRS = [:@soap_client]
|
15
|
-
|
16
|
-
def inspect
|
17
|
-
vars = instance_variables
|
18
|
-
NO_INSPECT_ATTRS.each { |a| vars.delete(a) }
|
19
|
-
vars = vars.map { |v| "#{v}=#{instance_variable_get(v).inspect}" }
|
20
|
-
vars = vars.join(', ')
|
21
|
-
"<#{self.class}: #{vars}>"
|
22
|
-
end
|
23
|
-
|
24
|
-
def to_h
|
25
|
-
hash = {}
|
26
|
-
vars = instance_variables
|
27
|
-
NO_INSPECT_ATTRS.each { |a| vars.delete(a) }
|
28
|
-
|
29
|
-
vars.each { |var| hash[var.to_s.delete('@').to_sym] = instance_variable_get(var) }
|
30
|
-
hash
|
31
|
-
end
|
32
|
-
|
33
|
-
private
|
34
|
-
|
35
|
-
def remote_auction
|
36
|
-
B2bCenterApi::RemoteAuction.new(@soap_client)
|
37
|
-
end
|
38
|
-
|
39
|
-
def remote_market
|
40
|
-
B2bCenterApi::RemoteMarket.new(@soap_client)
|
41
|
-
end
|
42
|
-
|
43
|
-
def remote_tender
|
44
|
-
B2bCenterApi::RemoteTender.new(@soap_client)
|
45
|
-
end
|
46
|
-
|
47
|
-
def self.to_array(obj)
|
48
|
-
obj.is_a?(Hash) ? [obj] : obj
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|