b2b_center_api 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|