Module: Yclients::Api::Companies

Included in:
Client
Defined in:
lib/yclients/api/companies.rb

Constant Summary collapse

URL1 =
'https://api.yclients.com/api/v1/company'
URL2 =
'https://api.yclients.com/api/v1/companies'

Instance Method Summary collapse

Instance Method Details

#companies(args = {}) ⇒ Object

group_id (Number, 83): ID сети компаний. Фильтр по идентификатору сети компаний Default: 83 my (Number, 1): Только для авторизованного пользователя. Если нужно компании, на управление которыми пользователь имеет права active (Number, 1): Если нужно получить только активные для онлайн-записи компании moderated (Number, 1): Если нужно получить только прошедшие модерацию компании. Т.е. чей контент проверен для публикации for_booking (Number, 1): Если нужно получить поле next_slot по каждой компании show_groups (Number, 1): Включить в обьект компании список сетей в которые входит эта компания title: Поиск по вхождению подстроки в название компании distance: Радиус поиска coordinate_lat: Широта центра поиска по координатам coordinate_lon: Долгота центра поиска по координатам



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/yclients/api/companies.rb', line 18

def companies(args={})
  uri = URI(URL2)
  params = {}
  params.merge!(query_param(:group_id, args[:group_id], :numeric)) if args.key?(:group_id)
  params.merge!(query_param(:my, args[:my], :boolean)) if args.key?(:my)
  params.merge!(query_param(:active, args[:active], :boolean)) if args.key?(:active)
  params.merge!(query_param(:moderated, args[:moderated], :boolean)) if args.key?(:moderated)
  params.merge!(query_param(:forBooking, args[:for_booking], :boolean)) if args.key?(:for_booking)
  params.merge!(query_param(:show_groups, args[:show_groups], :boolean)) if args.key?(:show_groups)
  params.merge!(query_param(:title, args[:title], :string)) if args.key?(:title)
#     params.merge!(query_param(:distance, args[:distance], :string)) if args.key?(:distance)
#     params.merge!(query_param(:coordinate_lat, args[:coordinate_lat], :string)) if args.key?(:coordinate_lat)
#     params.merge!(query_param(:coordinate_lon, args[:coordinate_lon], :string)) if args.key?(:coordinate_lon)
  uri.query = URI.encode_www_form(params)

  req = Net::HTTP::Get.new(uri, headers({
    auth: args.key?(:my) && [true, false].include?(args[:my])
  }))

  res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
    http.request(req)
  end

  json = JSON.parse(res.body)
  if json.kind_of?(Array)
    json
  else
    raise CompaniesAccessError, json.to_s
  end
end

#company(id, args = {}) ⇒ Object

for_booking (Number, 1): Если нужно получить поле next_slot по каждой компании show_groups (Number, 1): Включить в обьект компании список сетей в которые входит эта компания



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/yclients/api/companies.rb', line 51

def company(id, args={})
  uri = URI("#{URL1}/#{id}/")
  params = {}
  params.merge!(query_param(:forBooking, args[:for_booking], :boolean)) if args.key?(:for_booking)
  params.merge!(query_param(:show_groups, args[:show_groups], :boolean)) if args.key?(:show_groups)
  uri.query = URI.encode_www_form(params)

  req = Net::HTTP::Get.new(uri, headers({ auth: false }))

  res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
    http.request(req)
  end

  json = JSON.parse(res.body)
  if json.kind_of?(Hash) && json.key?('id')
    json
  else
    raise CompaniesAccessError, json.to_s
  end
end