Module: VsClient

Defined in:
lib/vs_client.rb,
lib/vs_client/version.rb,
lib/vs_client/net_http.rb,
lib/vs_client/response.rb,
lib/vs_client/configuration.rb

Defined Under Namespace

Classes: Configuration, NetHttp, Response

Constant Summary collapse

CLIENT_ERROR =
'client'
REMOTE_ERROR =
'remote'
VERSION =
"0.8.8"

Class Method Summary collapse

Class Method Details

.configurationVsClient::Configuration

Returns:



14
15
16
# File 'lib/vs_client.rb', line 14

def configuration
  @configuration ||= VsClient::Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Override the default configurations

Yields:



19
20
21
22
# File 'lib/vs_client.rb', line 19

def configure
  yield configuration
  setup_http_client
end

.create_recent_search(payload:, headers: {}, fallback: nil) ⇒ Hash, NilClass

POST /search/recent:

Parameters:

  • keys: home_module_id, integer, required search_query, string, required

  • (defaults to: {})

    represent custom http headers.

  • (defaults to: nil)

    executed on failure It should be provided by the initiator.

Returns:

  • on success

  • if fallback is nil



54
55
56
57
58
59
60
61
62
63
# File 'lib/vs_client.rb', line 54

def create_recent_search(payload:, headers: {}, fallback: nil)
  path = '/search/recent'
  @http_client.start_session
  response = @http_client.post(path: path, payload: payload, headers: headers)
  return response.body if response.succeeded?

  handle_failure(fallback, REMOTE_ERROR, [path, payload, response, headers])
rescue => e
  handle_failure(fallback, CLIENT_ERROR, [path, payload, e, headers])
end

.delete_recent_search(headers: {}, fallback: nil) ⇒ Hash, NilClass

DELETE /search/recent:

Parameters:

  • (defaults to: {})

    represent custom http headers.

  • (defaults to: nil)

    executed on failure It should be provided by the initiator.

Returns:

  • on success

  • if fallback is nil



211
212
213
214
215
216
217
218
219
220
# File 'lib/vs_client.rb', line 211

def delete_recent_search(headers: {}, fallback: nil)
  path = "/search/recent"
  @http_client.start_session
  response = @http_client.delete(path: path, headers: headers)
  return response.body if response.succeeded?

  handle_failure(fallback, REMOTE_ERROR, [path, nil, response, headers])
rescue => e
  handle_failure(fallback, CLIENT_ERROR, [path, nil, e, headers])
end

.delete_recent_search_by_home_module_id(home_module_id:, headers: {}, fallback: nil) ⇒ Hash, NilClass

DELETE /search/recent/home_modules/id:

Parameters:

  • represent ID.

  • (defaults to: {})

    represent custom http headers.

  • (defaults to: nil)

    executed on failure It should be provided by the initiator.

Returns:

  • on success

  • if fallback is nil



229
230
231
232
233
234
235
236
237
238
# File 'lib/vs_client.rb', line 229

def delete_recent_search_by_home_module_id(home_module_id:, headers: {}, fallback: nil)
  path = "/search/recent/home_modules/#{home_module_id}"
  @http_client.start_session
  response = @http_client.delete(path: path, headers: headers)
  return response.body if response.succeeded?

  handle_failure(fallback, REMOTE_ERROR, [path, nil, response, headers])
rescue => e
  handle_failure(fallback, CLIENT_ERROR, [path, nil, e, headers])
end

.get_filters(query:, headers: {}, fallback: nil) ⇒ Hash, NilClass

GET /filters:

Parameters:

  • keys: latitude, float, required longitude, float, required home_module_id, Integer

  • (defaults to: {})

    represent custom http headers.

  • (defaults to: nil)

    executed on failure It should be provided by the initiator.

Returns:

  • on success

  • if fallback is nil



34
35
36
37
38
39
40
41
42
43
# File 'lib/vs_client.rb', line 34

def get_filters(query:, headers: {}, fallback: nil)
  path = '/filters'
  @http_client.start_session
  response = @http_client.get(path: path, query: query, headers: headers)
  return response.body if response.succeeded?

  handle_failure(fallback, REMOTE_ERROR, [path, query, response, headers])
rescue => e
  handle_failure(fallback, CLIENT_ERROR, [path, query, e, headers])
end

.get_premium_vendors(payload:, headers: {}, fallback: nil) ⇒ Hash, NilClass

POST /vendors/premium:

Parameters:

  • keys: home_module_id, integer, optional campaign_id, integer, optional location, float, required location, float, required placement, string, required placement, string, required placement, string, required filters, string, optional filters, slice, optional

  • (defaults to: {})

    represent custom http headers: hs-email, string, optional hs-user-id, integer, optional hs-device-uid, string, required user-agent, string, required hs-is-new-customer, bool, optional hs-email-is-verified, bool, optional accept-language, string, optional perseus-client-id, string, required perseus-session-id, string, required

Returns:

  • on success

  • if fallback is nil



263
264
265
266
267
268
269
270
271
# File 'lib/vs_client.rb', line 263

def get_premium_vendors(payload:, headers: {}, fallback: nil)
  path = '/vendors/premium'
  @http_client.start_session
  response = @http_client.post(path: path, payload: payload, headers: headers, desired_api_version: '/api/v2')
  return response.body if response.succeeded?
  handle_failure(fallback, REMOTE_ERROR, [path, payload, response, headers])
rescue => e
  handle_failure(fallback, CLIENT_ERROR, [path, payload, e, headers])
end

.get_search_autocomplete(query:, headers: {}, fallback: nil) ⇒ Hash, NilClass

GET /search/autocomplete:

Parameters:

  • keys: home_module_id, integer, optional latitude, float, required longitude, float, required search_query, string, required

  • (defaults to: {})

    represent custom http headers.

  • (defaults to: nil)

    executed on failure It should be provided by the initiator.

Returns:

  • on success

  • if fallback is nil



97
98
99
100
101
102
103
104
105
106
# File 'lib/vs_client.rb', line 97

def get_search_autocomplete(query:, headers: {}, fallback: nil)
  path = '/search/autocomplete'
  @http_client.start_session
  response = @http_client.get(path: path, query: query, headers: headers)
  return response.body if response.succeeded?

  handle_failure(fallback, REMOTE_ERROR, [path, query, response, headers])
rescue => e
  handle_failure(fallback, CLIENT_ERROR, [path, query, e, headers])
end

.get_search_suggestions(query:, headers: {}, fallback: nil) ⇒ Hash, NilClass

GET /search/suggestions:

Parameters:

  • keys: home_module_id, integer, optional latitude, float, required longitude, float, required

  • (defaults to: {})

    represent custom http headers.

  • (defaults to: nil)

    executed on failure It should be provided by the initiator.

Returns:

  • on success

  • if fallback is nil



75
76
77
78
79
80
81
82
83
84
# File 'lib/vs_client.rb', line 75

def get_search_suggestions(query:, headers: {}, fallback: nil)
  path = '/search/suggestions'
  @http_client.start_session
  response = @http_client.get(path: path, query: query, headers: headers)
  return response.body if response.succeeded?

  handle_failure(fallback, REMOTE_ERROR, [path, query, response, headers])
rescue => e
  handle_failure(fallback, CLIENT_ERROR, [path, query, e, headers])
end

.get_swimlanes(payload:, headers: {}, fallback: nil) ⇒ Hash, NilClass

POST /swimlanes:

Parameters:

  • keys: home_module_id, integer, optional config, string, required placement_screen, string, required location, float, required location, float, required

  • (defaults to: {})

    represent custom http headers: hs-email, string, optional hs-user-id, integer, optional perseus-client-id, string, required perseus-session-id, string, required

  • (defaults to: nil)

    executed on failure It should be provided by the initiator.

Returns:

  • on success

  • if fallback is nil



124
125
126
127
128
129
130
131
132
133
# File 'lib/vs_client.rb', line 124

def get_swimlanes(payload:, headers: {}, fallback: nil)
  path = '/swimlanes'
  @http_client.start_session
  response = @http_client.post(path: path, payload: payload, headers: headers, desired_api_version: '/api/v3')
  return response.body if response.succeeded?

  handle_failure(fallback, REMOTE_ERROR, [path, payload, response, headers])
rescue => e
  handle_failure(fallback, CLIENT_ERROR, [path, payload, e, headers])
end

.get_vendor_coverage(vendor_id:, query:, headers: {}, fallback: nil) ⇒ Hash, NilClass

GET /vendor-coverage/vendor_id:

Parameters:

  • keys: filter[lat], float, required filter[long], float, required

  • (defaults to: {})

    represent custom http headers: Content-Type, string, required # must be application/vnd.api+json Accept, string, required # must be application/vnd.api+json

Returns:

  • on success

  • if fallback is nil



304
305
306
307
308
309
310
311
312
313
# File 'lib/vs_client.rb', line 304

def get_vendor_coverage(vendor_id:, query:, headers: {}, fallback: nil)
  path = "/vendor-coverage/#{vendor_id}"
  @http_client.start_session
  headers.merge!(json_api_headers)
  response = @http_client.get(path: path, query: query, headers: headers)
  return response.body if response.succeeded?
  handle_failure(fallback, REMOTE_ERROR, [path, query, response, headers])
rescue => e
  handle_failure(fallback, CLIENT_ERROR, [path, query, e, headers])
end

.get_vendors_by_campaign_id(id:, query:, headers: {}, fallback: nil) ⇒ Hash, NilClass

GET /campaigns/id/vendors:

Parameters:

  • integer represent campaign id

  • keys: latitude, float, required longitude, float, required home_module_id, integer, optional pagination, integer pagination, integer

  • (defaults to: {})

    represent custom http headers: hs-email, string, optional hs-user-id, integer, optional hs-device-uid, string, required user-agent, string, required hs-is-new-customer, bool, optional hs-email-is-verified, bool, optional accept-language, string, optional perseus-client-id, string, required perseus-session-id, string, required

Returns:

  • on success

  • if fallback is nil



335
336
337
338
339
340
341
342
343
# File 'lib/vs_client.rb', line 335

def get_vendors_by_campaign_id(id:, query:, headers: {}, fallback: nil)
  path = "/campaigns/#{id}/vendors"
  @http_client.start_session
  response = @http_client.get(path: path, query: query, headers: headers)
  return response.body if response.succeeded?
  handle_failure(fallback, REMOTE_ERROR, [path, query, response, headers])
rescue => e
  handle_failure(fallback, CLIENT_ERROR, [path, query, e, headers])
end

.get_vendors_coverage(query:, headers: {}, fallback: nil) ⇒ Hash, NilClass

GET /vendor-coverage/vendors:

Parameters:

  • keys: filter[lat], float, required filter[long], float, required filter[], Arraystring, optional # must be in [“OPEN”, “CLOSED”, “BUSY”, “SOON”] filter[], Arrayint, optional

  • (defaults to: {})

    represent custom http headers: Content-Type, string, required # must be application/vnd.api+json Accept, string, required # must be application/vnd.api+json

Returns:

  • on success

  • if fallback is nil



284
285
286
287
288
289
290
291
292
293
# File 'lib/vs_client.rb', line 284

def get_vendors_coverage(query:, headers: {}, fallback: nil)
  path = '/vendor-coverage/vendors'
  @http_client.start_session
  headers.merge!(json_api_headers)
  response = @http_client.get(path: path, query: query, headers: headers)
  return response.body if response.succeeded?
  handle_failure(fallback, REMOTE_ERROR, [path, query, response, headers])
rescue => e
  handle_failure(fallback, CLIENT_ERROR, [path, query, e, headers])
end

.get_vendors_listing(payload:, headers: {}, fallback: nil) ⇒ Hash, NilClass

POST /vendors:

Parameters:

  • keys: home_module_id, integer, optional config, string, required search_query, string, required location, float, required location, float, required pagination, int, required pagination, int, required filters[][:type, :ids], slice, optional

  • (defaults to: {})

    represent custom http headers: hs-email, string, optional hs-user-id, integer, optional hs-device-uid, string, required user-agent, string, required hs-is-new-customer, bool, optional hs-email-is-verified, bool, optional accept-language, string, optional perseus-client-id, string, required perseus-session-id, string, required

  • (defaults to: nil)

    executed on failure It should be provided by the initiator.

Returns:

  • on success

  • if fallback is nil



194
195
196
197
198
199
200
201
202
203
# File 'lib/vs_client.rb', line 194

def get_vendors_listing(payload:, headers: {}, fallback: nil)
  path = '/vendors'
  @http_client.start_session
  response = @http_client.post(path: path, payload: payload, headers: headers, desired_api_version: '/api/v2')
  return response.body if response.succeeded?

  handle_failure(fallback, REMOTE_ERROR, [path, payload, response, headers])
rescue => e
  handle_failure(fallback, CLIENT_ERROR, [path, payload, e, headers])
end

.get_vendors_search(payload:, headers: {}, fallback: nil) ⇒ Hash, NilClass

POST /vendors/search:

Parameters:

  • keys: home_module_id, integer, optional config, string, required search_query, string, required location, float, required location, float, required] pagination, int, required pagination, int, required

  • (defaults to: {})

    represent custom http headers: hs-email, string, optional hs-user-id, integer, optional hs-device-uid, string, required user-agent, string, required hs-is-new-customer, bool, optional hs-email-is-verified, bool, optional accept-language, string, optional perseus-client-id, string, required perseus-session-id, string, required

  • (defaults to: nil)

    executed on failure It should be provided by the initiator.

Returns:

  • on success

  • if fallback is nil



159
160
161
162
163
164
165
166
167
168
# File 'lib/vs_client.rb', line 159

def get_vendors_search(payload:, headers: {}, fallback: nil)
  path = '/vendors/search'
  @http_client.start_session
  response = @http_client.post(path: path, payload: payload, headers: headers, desired_api_version: '/api/v2')
  return response.body if response.succeeded?

  handle_failure(fallback, REMOTE_ERROR, [path, payload, response, headers])
rescue => e
  handle_failure(fallback, CLIENT_ERROR, [path, payload, e, headers])
end