b2b_center_api 0.1.0 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 421271391b2fd6ad46692438d753830aa293ff18
4
- data.tar.gz: f467f255e9a1e2dc880e103fcad550394a998afd
3
+ metadata.gz: f3527ecfb8c29fb58b6d225bc5f96f64eb3e5a1e
4
+ data.tar.gz: 14853b42a38be14c3104b24b20044078ab9f5efa
5
5
  SHA512:
6
- metadata.gz: 2b42e24f107747891efb69dd0dbb13f561b9f071a93d604aec829003795a4eaf386df2f593a3bbf907cf964f4fe1a7cd1c3d2a872d4eea0f2e71c21b19f4a789
7
- data.tar.gz: 5a32e5d627667bf8bfe43e36fac7d2f6f43dace9b0dc856e578e20b6034d92abb464d11b41459eef2beb342d9cf4c30ec89c7c2d4e35551e41d982eb5d613eb9
6
+ metadata.gz: '0709caded7ed7b3e8fd14212069441837168ba12884d0759c2763d4e111c182b8b62fc74de31a730f701a72b2c42d388125f8f222c0dad5f4e952805a51f31ec'
7
+ data.tar.gz: 729ba088ed41c8af95dbd2688675bf4c27fc94e1388bddab78e2abf845b4ff8d4670f0a9879abd67cc9d1118c3fc7a10b0589f72624c6524d76b80757e41dd46
data/Gemfile CHANGED
@@ -1,4 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in b2b_center_api.gemspec
4
+ gem 'savon', git: 'git@github.com:dukaarpad/savon.git'
5
+
4
6
  gemspec
@@ -22,6 +22,5 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency 'rake'
23
23
  spec.add_development_dependency 'rspec'
24
24
 
25
- spec.add_dependency 'savon', '~> 2.10.0'
26
25
  spec.add_dependency 'socksify'
27
26
  end
@@ -8,6 +8,71 @@ module B2bCenterApi
8
8
  @client_web = WebService::RemoteAuction.new(client)
9
9
  end
10
10
 
11
+ # Поулчить данные о протоколе вскрытия конвертов с предложениями
12
+ # @param auction_id [Integer] Номер аукциона/объявления
13
+ # @param haggling_num [Integer] Номер этапа переторжки
14
+ # Допустимые значени:
15
+ # 0 - Основной этап (По умолчанию)
16
+ # >0 - Этап переторжки с указанным номером
17
+ # @return [AuctionParticipantsProtocol]
18
+ def get_participants_protocol(auction_id, haggling_num = 0)
19
+ response = @client_web.command :get_participants_protocol, auction_id: auction_id, haggling_num: haggling_num
20
+ WebService::Types::AuctionParticipantsProtocol.from_response(response)
21
+ end
22
+
23
+ # Загрузить документацию к аукциону/объявлению через url
24
+ # @param auction_id [Integer] Номер аукциона/объявления
25
+ # @param url [String] Путь к файлу
26
+ # @param type [String] Тип документации
27
+ # Возможные значения:
28
+ # 'docs' - Документация к основному этапу торговой процедуры
29
+ # 'pre_docs' - Документация к предварительному этапу торговой процедуры
30
+ # @param append_mode [Integer] Загружать файлы в режиме добавления
31
+ # Возможные значения:
32
+ # 0 - Режим замены (старые файлы документации будут удалены)
33
+ # 1 - Режим добавления (старые файлы документации не будут удалены, за исключением совпадающих имен)
34
+ # @return [String] Код ошибки (0 - если успешно)
35
+ def upload_doc_from_url(auction_id, url, type = 'docs', append_mode = 1)
36
+ response = @client_web.command :upload_doc, auction_id: auction_id, type: type, append_mode: append_mode, url: url
37
+ response.status[:error_code]
38
+ end
39
+
40
+ # Загрузить документацию к аукциону/объявлению
41
+ # @param auction_id [Integer] Номер аукциона/объявления
42
+ # @param file [String] Путь к файлу
43
+ # @param type [String] Тип документации
44
+ # Возможные значения:
45
+ # 'docs' - Документация к основному этапу торговой процедуры
46
+ # 'pre_docs' - Документация к предварительному этапу торговой процедуры
47
+ # @param append_mode [Integer] Загружать файлы в режиме добавления
48
+ # Возможные значения:
49
+ # 0 - Режим замены (старые файлы документации будут удалены)
50
+ # 1 - Режим добавления (старые файлы документации не будут удалены, за исключением совпадающих имен)
51
+ # @return [String] Код ошибки (0 - если успешно)
52
+ def upload_doc(auction_id, file, type = 'docs', append_mode = 1)
53
+ response = @client_web.command_with_attachments :upload_doc, [file], auction_id: auction_id, type: type, append_mode: append_mode, attachment_name: WebService::Types::AttachmentName.new(file).to_h
54
+ response.status[:error_code]
55
+ end
56
+
57
+ # Загрузить документацию из нескольких файлов к аукциону/объявлению
58
+ # !Загружает не более двух файлов за раз, иначе ошибка!
59
+ # @param auction_id [Integer] Номер аукциона/объявления
60
+ # @param file [Array] Массив файлов
61
+ # @param type [String] Тип документации
62
+ # Возможные значения:
63
+ # 'docs' - Документация к основному этапу торговой процедуры
64
+ # 'pre_docs' - Документация к предварительному этапу торговой процедуры
65
+ # @param append_mode [Integer] Загружать файлы в режиме добавления
66
+ # Возможные значения:
67
+ # 0 - Режим замены (старые файлы документации будут удалены)
68
+ # 1 - Режим добавления (старые файлы документации не будут удалены, за исключением совпадающих имен)
69
+ # @return [String] Код ошибки (0 - если успешно)
70
+ def upload_docs(auction_id, files, type = 'docs', append_mode = 1)
71
+ files = [files] unless files.is_a? Array
72
+ response = @client_web.command_with_attachments :upload_docs, files, auction_id: auction_id, type: type, append_mode: append_mode, attachment_names: WebService::Types::AttachmentName.from_array(files)
73
+ response.status[:error_code]
74
+ end
75
+
11
76
  # Создать новый аукцион
12
77
  # @param auction_data [WebService::Types::AuctionData, Hash] Данные для создания аукциона
13
78
  # @return [Integer] id созданной процедуры
@@ -8,6 +8,53 @@ module B2bCenterApi
8
8
  @client_web = WebService::RemoteMarket.new(client)
9
9
  end
10
10
 
11
+ # Получить категории классификатора организации
12
+ # @param firm_id [Integer] ID организации или 0 для своей организации
13
+ # @param type [Integer] Тип продукции и услуг
14
+ # Возможные значения:
15
+ # '0' - Потребляемая продукция и услуги
16
+ # '1' - Предлагаемая продукция и услуги
17
+ # @return [String[]]
18
+ def get_firm_classifier(firm_id, type)
19
+ response = @client_web.command :get_firm_classifier, firm_id: firm_id, type: type
20
+ WebService::Types::ArrayOfIds.from_response(response)
21
+ end
22
+
23
+ # Получить строки классификатора
24
+ # @param ids [String[]] ID категорий классификатора организации
25
+ # @return [String[]]
26
+ def get_classifier_rows(ids)
27
+ response = @client_web.command :get_classifier_rows, ids: ids
28
+ WebService::Types::OkdpRow.from_response(response)
29
+ end
30
+
31
+ # Получить список адресов организации
32
+ # @param firm_id [Integer] ID организации или 0 для своей организации
33
+ # @return [String[]]
34
+ def get_addresses_ids(firm_id = 0)
35
+ response = @client_web.command :get_addresses_ids, firm_id: firm_id
36
+ WebService::Types::ArrayOfIds.from_response(response)
37
+ end
38
+
39
+ # Получить адрес организации по ОКАТО
40
+ # @param okato [String] ОКАТО организации
41
+ # @param country [Integer] Код страны. Если значение равно = 0, то используется код России = 643
42
+ # @param address [String] Адрес (обязательно для заполнения)
43
+ # @param firm_id [Integer] ID своей или подчиненной организации. Если = 0, то получаем идентификатор адреса своей организации
44
+ # @return [String[]]
45
+ def get_address_id_by_okato(okato:, address:, country: 0, firm_id: 0)
46
+ response = @client_web.command :get_address_id_by_okato, okato: okato, address: address, country: country, firm_id: firm_id
47
+ WebService::Types::Id.from_response(response)
48
+ end
49
+
50
+ # Получить адрес
51
+ # @param address_id [Integer] ID адреса
52
+ # @return [String[]]
53
+ def get_address(address_id)
54
+ response = @client_web.command :get_address, address_id: address_id
55
+ WebService::Types::AddressData.from_response(response, @client)
56
+ end
57
+
11
58
  # Получить информацию об организации
12
59
  # @param firm_id [Integer] ID организации
13
60
  # @return [WebService::Types::FirmInfo]
@@ -23,5 +70,23 @@ module B2bCenterApi
23
70
  response = @client_web.command :find_firm, firm_request: { inn: inn }
24
71
  WebService::Types::FirmData.from_response(response, @client)
25
72
  end
73
+
74
+ # Получить список услуг
75
+ # @param
76
+ # @return [String[]]
77
+ def get_services
78
+ response = @client_web.command :get_services, {}
79
+ WebService::Types::ArrayOfServices.from_response(response)
80
+ end
81
+
82
+ # Создание/изменение адреса
83
+ # @param address_id [Integer] ID адреса. Чтобы создать новый адрес поле id должно быть = 0, либо отсутствовать
84
+ # firm_id [Integer] ID организации
85
+ #
86
+ # @return [Integer]
87
+ def update_address(address_data)
88
+ response = @client_web.command :update_address, data: address_data.to_h
89
+ WebService::Types::Id.from_response(response)
90
+ end
26
91
  end
27
92
  end
@@ -1,3 +1,3 @@
1
1
  module B2bCenterApi
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
@@ -11,6 +11,13 @@ module B2bCenterApi
11
11
  Response.new(res)
12
12
  end
13
13
 
14
+ def command_with_attachments(name, attachments, params)
15
+ auth = B2bCenterApi::Settings.auth_options
16
+ params = auth.merge(params)
17
+ res = @client.call(method_fullname(name), message: params, attachments: attachments)
18
+ Response.new(res)
19
+ end
20
+
14
21
  def initialize(client)
15
22
  @client = client
16
23
  end
@@ -0,0 +1,75 @@
1
+ module B2bCenterApi
2
+ module WebService
3
+ module Types
4
+ # Адрес
5
+ class AddressData < WebService::BaseType
6
+ # @return [Integer] id адреса
7
+ # Для добавления устанавливаем id=0
8
+ attr_accessor :id
9
+
10
+ # @return [Integer] id организации
11
+ attr_accessor :firm_id
12
+
13
+ # @return [Integer] Цифровой код страны ISO_3166-1
14
+ attr_accessor :country
15
+
16
+ # @return [Integer] Код региона по КЛАДРу
17
+ # В случае заполнения поля
18
+ # okato, в поле region можно передать "0", в этом
19
+ # случае оно заполняется автоматически по коду
20
+ # ОКАТО
21
+ attr_accessor :region
22
+
23
+ # @return [String] Код ОКАТО
24
+ attr_accessor :okato
25
+
26
+ # @return [String] Адрес
27
+ attr_accessor :address
28
+
29
+ # @return [String] Название адреса
30
+ attr_accessor :comment
31
+
32
+ # @return [String] Широта, в градусах
33
+ attr_accessor :lat
34
+
35
+ # @return [String] Долгота, в градусах
36
+ attr_accessor :lng
37
+
38
+ # @return [Integer] Тип задания адреса
39
+ # Указывается только при вызове
40
+ # RemoteMarket.updateAddress.
41
+ # Возможные значения:
42
+ # "0" — значения широты и долготы определятся
43
+ # автоматически на основании адреса;
44
+ # "32" — значения широты и долготы
45
+ attr_accessor :status
46
+
47
+ # @return [Integer] Является ли адрес неточным
48
+ # Возможные значения:
49
+ # "0" — адрес, заданный обычным способом;
50
+ # "1" — неточный адрес (может использоваться только в закупках по 223-ФЗ)
51
+ attr_accessor :is_fuzzy_address
52
+
53
+ # @return [AddressData]
54
+ def self.from_response(response, client)
55
+ r = response.result[:address_data]
56
+ return if r.nil?
57
+ ad = AddressData.new
58
+ ad.soap_client = client
59
+ ad.id = convert(r[:id], :integer)
60
+ ad.firm_id = convert(r[:firm_id], :integer)
61
+ ad.country = convert(r[:country], :integer)
62
+ ad.region = convert(r[:region], :integer)
63
+ ad.okato = convert(r[:okato], :string)
64
+ ad.address = convert(r[:address], :string)
65
+ ad.comment = convert(r[:comment], :string)
66
+ ad.lat = convert(r[:lat], :string)
67
+ ad.lng = convert(r[:lng], :string)
68
+ ad.status = convert(r[:status], :integer)
69
+ ad.is_fuzzy_address = convert(r[:is_fuzzy_address], :integer)
70
+ ad
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,17 @@
1
+ module B2bCenterApi
2
+ module WebService
3
+ module Types
4
+ # Список доступных услуг
5
+ class ArrayOfServices < WebService::BaseType
6
+ # @return [ServiceRow]
7
+ def self.from_response(response)
8
+ r = response.result
9
+ return if r.nil?
10
+ Array(r[:services]).map do |service|
11
+ ServiceRow.new(service)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,32 @@
1
+ require 'digest'
2
+
3
+ module B2bCenterApi
4
+ module WebService
5
+ module Types
6
+ # Файл для отправки
7
+ class AttachmentName < WebService::BaseType
8
+
9
+ # @return [String] Имя файла
10
+ attr_reader :filename
11
+
12
+ # @return [String] MD5 от содержимого файла
13
+ attr_reader :md5
14
+
15
+ def initialize(file_path)
16
+ file = File.new(file_path)
17
+ @filename = File.basename(file_path)
18
+ @md5 = Digest::MD5.hexdigest(file.read)
19
+ end
20
+
21
+ # Подготовка массива AttachmentName для отправки
22
+ # @param files_array [Array] Массив файлов
23
+ # @return [Array] Массив хешей для отправки по SOAP
24
+ def self.from_array(files_array)
25
+ files_array.map do |file|
26
+ { file: new(file).to_h }
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,42 @@
1
+ module B2bCenterApi
2
+ module WebService
3
+ module Types
4
+ # Участник аукциона
5
+ class AuctionParticipantsProtocol < WebService::BaseType
6
+
7
+ # @return [String] Номер протокола
8
+ attr_accessor :number
9
+
10
+ # @return [Date] Дата составления протокола
11
+ attr_accessor :date
12
+
13
+ # @return [String] Место составления протокола
14
+ attr_accessor :place
15
+
16
+ # @return [String] Ссылка на скачивание файла протокола, если организатор загрузил протокол
17
+ attr_accessor :file
18
+
19
+ # @return [Time] Дата и время проведения этапа процедуры
20
+ attr_accessor :procedure_stage_date
21
+
22
+ # @return [Date] Дата подписания протокола
23
+ attr_accessor :sign_protocol_date
24
+
25
+ # @return [ParticipantsProtocol]
26
+ def self.from_response(response)
27
+ r = response.result[:participants_protocol]
28
+ return if r.nil?
29
+
30
+ protocol = AuctionParticipantsProtocol.new
31
+ protocol.number = r[:number]
32
+ protocol.date = convert r[:date], :date
33
+ protocol.place = r[:place]
34
+ protocol.file = r[:file]
35
+ protocol.procedure_stage_date = convert r[:procedure_stage_date], :time
36
+ protocol.sign_protocol_date = convert r[:sign_protocol_date], :date
37
+ protocol
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -18,7 +18,7 @@ module B2bCenterApi
18
18
 
19
19
  # @return [B2bFile[]]
20
20
  def self.from_part_response(response)
21
- return if response.nil?
21
+ return [] if response.nil?
22
22
  files = to_array(response[:file]).map do |f|
23
23
  file = B2bFile.new
24
24
  file.title = convert(f[:title], :string)
@@ -0,0 +1,15 @@
1
+ module B2bCenterApi
2
+ module WebService
3
+ module Types
4
+ # ID
5
+ class Id < WebService::BaseType
6
+
7
+ def self.from_response(response)
8
+ r = response.result
9
+ return if r.nil?
10
+ convert(r[:value], :Integer)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,26 @@
1
+ module B2bCenterApi
2
+ module WebService
3
+ module Types
4
+ class OkdpRow < WebService::BaseType
5
+ # @return [Integer] ID
6
+ attr_accessor :id
7
+ # @return [Integer] родительский ID
8
+ attr_accessor :parent_id
9
+ # @return [String] Наименование
10
+ attr_accessor :name
11
+ # @return [OkdpRow]
12
+ def self.from_response(response)
13
+ r = response.result
14
+ return if r.nil?
15
+ Array(r[:okdp_rows]).map do |okdp|
16
+ o = OkdpRow.new
17
+ o.id = okdp[:id]
18
+ o.parent_id = okdp[:parent_id]
19
+ o.name = okdp[:name]
20
+ o
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,19 @@
1
+ module B2bCenterApi
2
+ module WebService
3
+ module Types
4
+ # Список услуг
5
+ class ServiceRow < WebService::BaseType
6
+ # @return [Integer] Номер услуги
7
+ attr_reader :id
8
+ # @return [String] Название услуги
9
+ attr_reader :name
10
+
11
+ def initialize(args = {})
12
+ @id = args[:id]
13
+ @name = args[:name]
14
+ end
15
+
16
+ end
17
+ end
18
+ end
19
+ end
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.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Archakov Aleksandr
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-06 00:00:00.000000000 Z
11
+ date: 2017-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: savon
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 2.10.0
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: 2.10.0
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: socksify
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -112,14 +98,21 @@ files:
112
98
  - lib/b2b_center_api/web_service/response.rb
113
99
  - lib/b2b_center_api/web_service/type_cast.rb
114
100
  - lib/b2b_center_api/web_service/types.rb
101
+ - lib/b2b_center_api/web_service/types/address_data.rb
115
102
  - lib/b2b_center_api/web_service/types/array_of_ids.rb
103
+ - lib/b2b_center_api/web_service/types/array_of_services.rb
104
+ - lib/b2b_center_api/web_service/types/attachment_name.rb
116
105
  - lib/b2b_center_api/web_service/types/auction_data.rb
117
106
  - lib/b2b_center_api/web_service/types/auction_offer.rb
118
107
  - lib/b2b_center_api/web_service/types/auction_participant.rb
108
+ - lib/b2b_center_api/web_service/types/auction_participants_protocol.rb
119
109
  - lib/b2b_center_api/web_service/types/b2b_file.rb
120
110
  - lib/b2b_center_api/web_service/types/firm_data.rb
121
111
  - lib/b2b_center_api/web_service/types/firm_info.rb
112
+ - lib/b2b_center_api/web_service/types/id.rb
122
113
  - lib/b2b_center_api/web_service/types/lot.rb
114
+ - lib/b2b_center_api/web_service/types/okdp_rows.rb
115
+ - lib/b2b_center_api/web_service/types/service_row.rb
123
116
  - lib/b2b_center_api/web_service/types/tender_data.rb
124
117
  - lib/b2b_center_api/web_service/types/tender_lot_result.rb
125
118
  - lib/b2b_center_api/web_service/types/tender_lot_results.rb
@@ -148,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
141
  version: '0'
149
142
  requirements: []
150
143
  rubyforge_project:
151
- rubygems_version: 2.6.11
144
+ rubygems_version: 2.6.13
152
145
  signing_key:
153
146
  specification_version: 4
154
147
  summary: B2B Center API