voucherify 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8903d1d22de61bf4ebda5db9a52ad5ebce28c067
4
- data.tar.gz: 1889dc404c0b5c51f72929f9d9ec6d773bc53ca1
3
+ metadata.gz: 93236863fb4ac7cae0378cb4c8287bf04686b651
4
+ data.tar.gz: 8819259dbfbaa0411336f5a7bcbeead247f67f49
5
5
  SHA512:
6
- metadata.gz: 73682fd328a86822a6cf3306575616f3efef2c883c68b3c9c946d55c5f8c7acf6d283c5b809a0337ac3000509c4e06bb60a7f525d70081965fcf8e3180f25ee3
7
- data.tar.gz: b7e10d6d01eef68d6aeefbe95a03531f4211227bc1ba02b9ccad89b34980390a62eb50099d7db304470fb0212ee020a3e912babdb523e5873c853e44ccb2d7fa
6
+ metadata.gz: 8bf377abdcd3bb07477ed748a179836fc5c5c4033ace42f9feb490fe9c8eba7572ee4fa8ae269d31ee291082a5ab3a40da95372c151a53c26473dcb122f45387
7
+ data.tar.gz: f43536f00e1f4eece69096286742742a7d51d251fe2067412907edc838dbecfcbb293b54fc4d6b6fdaf1fee9409294ebcb8fdb9e4d89ec2abbafda5e6ddd295d
data/README.md CHANGED
@@ -344,24 +344,34 @@ with their namespaced equivalent.
344
344
 
345
345
  ## Error handling
346
346
 
347
- This voucherify gem uses [rest-client](https://github.com/rest-client/rest-client) under the hood for handling HTTP calls. In case of an HTTP 4xx or 5xx error, a RestClient exception is thrown. The server's specific response is available in `.response` of the exception object.
347
+ When the Voucherify API responds with an error (HTTP status code is 4xx or 5xx) then the client raises a `VoucherifyError`.
348
+ It contains following properties:
349
+ - `code` - HTTP status code
350
+ - `message` - a human-readable message providing short description about the error.
351
+ - `details` - a human-readable message providing more details about the error, usually includes a hint on how to fix the error
352
+ - `key` - a short string describing the kind of error that occurred.
353
+
354
+ Example:
348
355
 
349
356
  ```ruby
350
357
  begin
351
358
  voucherify.distributions.publish('test')
352
- rescue => e
353
- JSON.parse(e.response)
359
+ rescue Voucherify::VoucherifyError => e
360
+ puts e.code
361
+ puts e.message
362
+ puts e.details
363
+ puts e.key
354
364
  end
355
365
  ```
356
366
 
357
- ```json
358
- {
359
- "code": 400,
360
- "message": "Couldn't find any voucher suitable for publication."
361
- }
362
- ```
367
+ The ouput may be:
363
368
 
364
- Please refer to [rest-client documentation](https://github.com/rest-client/rest-client#exceptions-see-httpwwww3orgprotocolsrfc2616rfc2616-sec10html) for more detailed information.
369
+ ```
370
+ 400
371
+ Couldn't find any voucher suitable for publication.
372
+ Use auto-update campaigns if you want Voucherify to generate vouchers automatically.
373
+ no_voucher_suitable_for_publication
374
+ ```
365
375
 
366
376
  ## Development
367
377
 
@@ -374,7 +384,8 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
374
384
  Bug reports and pull requests are welcome on GitHub at https://github.com/rspective/voucherify-ruby-sdk.
375
385
 
376
386
  ## Changelog
377
- - **2016-01-04** - `1.2.0` - added [import vouchers](#import-vouchers) method.
387
+ - **2017-03-22** - `1.3.0` - improved error handling
388
+ - **2017-01-04** - `1.2.0` - added [import vouchers](#import-vouchers) method.
378
389
  - **2016-12-29** - `1.1.0` - introduced [campaigns api](#campaigns-api) and [products api](#products-api).
379
390
  - **2016-12-15** - `1.0.0` - introduced namespaces, unified method names, updated README. Migration from versions 0.x required [migration from version 0.x](#migration-from-0x)
380
391
  - **2016-12-02** - `0.8.2` - support gift vouchers in utils, fix price and discount calculations for amount discounts
@@ -406,6 +417,7 @@ The gem is available as open source under the terms of the [MIT License](http://
406
417
  [List Vouchers]: https://docs.voucherify.io/reference?utm_source=github&utm_medium=sdk&utm_campaign=acq#list-vouchers
407
418
  [Enable Voucher]: https://docs.voucherify.io/reference?utm_source=github&utm_medium=sdk&utm_campaign=acq#enable-voucher
408
419
  [Disable Voucher]: https://docs.voucherify.io/reference?utm_source=github&utm_medium=sdk&utm_campaign=acq#disable-voucher
420
+ [Import Vouchers]: https://docs.voucherify.io/reference?utm_source=github&utm_medium=sdk&utm_campaign=acq#import-vouchers-1
409
421
 
410
422
  [Create Campaign]: https://docs.voucherify.io/reference?utm_source=github&utm_medium=sdk&utm_campaign=acq#create-campaign
411
423
  [Get Campaign]: https://docs.voucherify.io/reference?utm_source=github&utm_medium=sdk&utm_campaign=acq#get-campaign
@@ -436,3 +448,4 @@ The gem is available as open source under the terms of the [MIT License](http://
436
448
  [Update SKU]: https://docs.voucherify.io/reference?utm_source=github&utm_medium=sdk&utm_campaign=acq#update-sku
437
449
  [Delete SKU]: https://docs.voucherify.io/reference?utm_source=github&utm_medium=sdk&utm_campaign=acq#delete-sku
438
450
  [List all product SKUs]: https://docs.voucherify.io/reference?utm_source=github&utm_medium=sdk&utm_campaign=acq#list-skus
451
+
data/examples/vouchers.rb CHANGED
@@ -4,13 +4,18 @@ voucherify = Voucherify::Client.new({
4
4
  :applicationId => 'c70a6f00-cf91-4756-9df5-47628850002b',
5
5
  :clientSecretKey => '3266b9f8-e246-4f79-bdf0-833929b1380c'
6
6
  })
7
-
8
- puts voucherify.vouchers.validate('91Ft4U', {
7
+ begin
8
+ puts voucherify.validations.validate_voucher('91Ft4U', {
9
9
  tracking_id: 'john@lemon.com',
10
10
  order: {
11
- amount: 1000
11
+ amount: 1000
12
12
  }
13
- })
13
+ })
14
+ rescue Voucherify::VoucherifyError => e
15
+ puts e.message
16
+ puts e.details
17
+ puts e.key
18
+ end
14
19
 
15
20
  query = {limit: 10, skip: 20, category: 'API Test'}
16
21
  puts voucherify.vouchers.list(query)
@@ -47,32 +47,63 @@ module Voucherify
47
47
  end
48
48
 
49
49
  def get(path, params = {})
50
- url = @backend_url + path
51
- response = RestClient.get(url, @headers.merge({:params => params}))
52
- JSON.parse(response.body)
50
+ begin
51
+ url = @backend_url + path
52
+ response = RestClient.get(url, @headers.merge({:params => params}))
53
+ JSON.parse(response.body)
54
+ rescue RestClient::Exception => e
55
+ raise VoucherifyError.new(e)
56
+ end
53
57
  end
54
58
 
55
59
  def put(path, body, params = {})
56
- url = @backend_url + path
57
- response = RestClient.put(url, body, @headers.merge({:params => params, :content_type => :json}))
58
- JSON.parse(response.body)
60
+ begin
61
+ url = @backend_url + path
62
+ response = RestClient.put(url, body, @headers.merge({:params => params, :content_type => :json}))
63
+ JSON.parse(response.body)
64
+ rescue RestClient::Exception => e
65
+ raise VoucherifyError.new(e)
66
+ end
59
67
  end
60
68
 
61
69
  def post(path, body, params = {})
62
- url = @backend_url + path
63
- response = RestClient.post(url, body, @headers.merge({:params => params, :content_type => :json}))
64
- if !response.body.empty?
65
- JSON.parse(response.body)
66
- else
67
- nil
70
+ begin
71
+ url = @backend_url + path
72
+ response = RestClient.post(url, body, @headers.merge({:params => params, :content_type => :json}))
73
+ if !response.body.empty?
74
+ JSON.parse(response.body)
75
+ else
76
+ nil
77
+ end
78
+ rescue RestClient::Exception => e
79
+ raise VoucherifyError.new(e)
68
80
  end
69
-
70
81
  end
71
82
 
72
83
  def delete(path, params = {})
73
- url = @backend_url + path
74
- RestClient.delete(url, @headers.merge({:params => params}))
75
- nil
84
+ begin
85
+ url = @backend_url + path
86
+ RestClient.delete(url, @headers.merge({:params => params}))
87
+ nil
88
+ rescue RestClient::Exception => e
89
+ raise VoucherifyError.new(e)
90
+ end
91
+ end
92
+ end
93
+
94
+ class VoucherifyError < RuntimeError
95
+ attr_reader :response
96
+ attr_reader :code
97
+ attr_reader :details
98
+ attr_reader :key
99
+
100
+ def initialize (restClientError)
101
+ @response = restClientError.response
102
+ parsedResponse = JSON.parse(@response)
103
+ @code = parsedResponse['code']
104
+ @details = parsedResponse['details']
105
+ @key = parsedResponse['key']
106
+ super(parsedResponse['message'])
76
107
  end
77
108
  end
78
109
 
@@ -1,3 +1,3 @@
1
1
  module Voucherify
2
- VERSION = '1.2.0'
2
+ VERSION = '1.3.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: voucherify
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - pawelrychlik
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-01-09 00:00:00.000000000 Z
11
+ date: 2017-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler