Instamojo-rb 0.1.1 → 1.1.0

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.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MjFlZWVlYTA1OWFlMmVkYTQ3MzMwZDI5NmZmYWU2NGQ4OTFhMzFmYw==
5
+ data.tar.gz: !binary |-
6
+ MTlhNTczZmM3MTliY2Q0OTYxNWI2OWFjYWFmMGYyOGRiNDBiOTc3ZQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ MWM1YzUzZTBiMTgyMmNhODljZDM3Y2ZlZTNiMjZjYjVlMjFkYmIxNDE3YTk0
10
+ YTRhZWMwNDViMjllMjYxOGIxNmU0MzE0NDI4NGVjMWY1Y2IyNDUwMTdlZjU5
11
+ OTA5ZGQ2NDVmMjU5ZGRhMmMyMDQxYTkyMjgxMzQ1NzI3ZDM1NTc=
12
+ data.tar.gz: !binary |-
13
+ Njk1ZDFmYWFhZTkyM2Q4NjI3NWRlNjc4MjljZjcyODEzZDM1ZjAyM2U2Y2Ey
14
+ YTQ1OTU2M2Y2ZGYwNmQyYTZjYTU4ZjEyYjU4ZjJkMzNlMTIyNDhkNWQzNjQx
15
+ ZGQ4OTJiNzg4MGU0MzhiYjFlZGQxODgwNDViNTJlMGYzOTVkOTc=
data/Gemfile CHANGED
@@ -3,14 +3,13 @@ source "http://rubygems.org"
3
3
  # Example:
4
4
  # gem "activesupport", ">= 2.3.5"
5
5
  gem "faraday", "0.8.8"
6
+ gem 'rest-client', '~> 1.8'
6
7
 
7
8
  # Add dependencies to develop your gem here.
8
9
  # Include everything needed to run rake, tests, features, etc.
9
10
  group :development do
10
- gem "rspec", "~> 2.8.0"
11
- gem "rdoc", "~> 3.12"
11
+ gem "rspec", "~> 2.8"
12
12
  gem "bundler", "~> 1.0"
13
- gem "jeweler", "~> 1.8.7"
14
- gem "faraday", "0.8.8"
15
- gem "debugger"
13
+ gem "jeweler", "~> 1.8"
14
+ gem "debugger", "~> 1.6"
16
15
  end
@@ -11,6 +11,8 @@ GEM
11
11
  debugger-linecache (1.2.0)
12
12
  debugger-ruby_core_source (1.3.1)
13
13
  diff-lcs (1.1.3)
14
+ domain_name (0.5.25)
15
+ unf (>= 0.0.5, < 1.0.0)
14
16
  faraday (0.8.8)
15
17
  multipart-post (~> 1.2.0)
16
18
  git (1.2.6)
@@ -23,6 +25,8 @@ GEM
23
25
  oauth2
24
26
  hashie (2.0.5)
25
27
  highline (1.6.20)
28
+ http-cookie (1.0.2)
29
+ domain_name (~> 0.5)
26
30
  httpauth (0.2.0)
27
31
  jeweler (1.8.8)
28
32
  builder
@@ -36,9 +40,11 @@ GEM
36
40
  json (1.8.1)
37
41
  jwt (0.1.8)
38
42
  multi_json (>= 1.5)
43
+ mime-types (2.99)
39
44
  multi_json (1.8.2)
40
45
  multi_xml (0.5.5)
41
46
  multipart-post (1.2.0)
47
+ netrc (0.11.0)
42
48
  nokogiri (1.5.10)
43
49
  oauth2 (0.9.2)
44
50
  faraday (~> 0.8)
@@ -51,6 +57,10 @@ GEM
51
57
  rake (10.1.1)
52
58
  rdoc (3.12.2)
53
59
  json (~> 1.4)
60
+ rest-client (1.8.0)
61
+ http-cookie (>= 1.0.2, < 2.0)
62
+ mime-types (>= 1.16, < 3.0)
63
+ netrc (~> 0.7)
54
64
  rspec (2.8.0)
55
65
  rspec-core (~> 2.8.0)
56
66
  rspec-expectations (~> 2.8.0)
@@ -59,14 +69,15 @@ GEM
59
69
  rspec-expectations (2.8.0)
60
70
  diff-lcs (~> 1.1.2)
61
71
  rspec-mocks (2.8.0)
72
+ unf (0.2.0.beta2)
62
73
 
63
74
  PLATFORMS
64
75
  ruby
65
76
 
66
77
  DEPENDENCIES
67
78
  bundler (~> 1.0)
68
- debugger
79
+ debugger (~> 1.6)
69
80
  faraday (= 0.8.8)
70
- jeweler (~> 1.8.7)
71
- rdoc (~> 3.12)
72
- rspec (~> 2.8.0)
81
+ jeweler (~> 1.8)
82
+ rest-client (~> 1.8)
83
+ rspec (~> 2.8)
@@ -2,15 +2,17 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
+ # stub: Instamojo-rb 1.1.0 ruby lib
5
6
 
6
7
  Gem::Specification.new do |s|
7
8
  s.name = "Instamojo-rb"
8
- s.version = "0.1.1"
9
+ s.version = "1.1.0"
9
10
 
10
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
11
13
  s.authors = ["Ankur Goel"]
12
- s.date = "2014-02-01"
13
- s.description = "Instamojo Ruby library - Assists you to programmatically create, edit and delete offers on Instamojo"
14
+ s.date = "2015-12-18"
15
+ s.description = "Instamojo Ruby library - Assists you to programmatically create, edit and delete offers on Instamojo. Also supports listing, updation and details of Payments, Payments Requests and Refunds."
14
16
  s.email = "ankurgel@gmail.com"
15
17
  s.extra_rdoc_files = [
16
18
  "LICENSE.txt",
@@ -30,45 +32,48 @@ Gem::Specification.new do |s|
30
32
  "VERSION",
31
33
  "lib/API/api.rb",
32
34
  "lib/Instamojo-rb.rb",
35
+ "lib/base.rb",
33
36
  "lib/client/client.rb",
37
+ "lib/client/link.rb",
38
+ "lib/client/payment.rb",
39
+ "lib/client/payment_request.rb",
40
+ "lib/client/refund.rb",
41
+ "lib/common_object.rb",
42
+ "lib/response.rb",
34
43
  "lib/utility.rb",
35
44
  "spec/Instamojo-rb_spec.rb",
36
45
  "spec/spec_helper.rb"
37
46
  ]
38
47
  s.homepage = "http://github.com/AnkurGel/Instamojo-rb"
39
48
  s.licenses = ["MIT"]
40
- s.require_paths = ["lib"]
41
- s.rubygems_version = "1.8.23"
49
+ s.rubygems_version = "2.2.2"
42
50
  s.summary = "Instamojo Ruby library - Assists you to programmatically create, edit and delete offers on Instamojo"
43
51
 
44
52
  if s.respond_to? :specification_version then
45
- s.specification_version = 3
53
+ s.specification_version = 4
46
54
 
47
55
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
48
56
  s.add_runtime_dependency(%q<faraday>, ["= 0.8.8"])
49
- s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
50
- s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
57
+ s.add_runtime_dependency(%q<rest-client>, ["~> 1.8"])
58
+ s.add_development_dependency(%q<rspec>, ["~> 2.8"])
51
59
  s.add_development_dependency(%q<bundler>, ["~> 1.0"])
52
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.7"])
53
- s.add_development_dependency(%q<faraday>, ["= 0.8.8"])
54
- s.add_development_dependency(%q<debugger>, [">= 0"])
60
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8"])
61
+ s.add_development_dependency(%q<debugger>, ["~> 1.6"])
55
62
  else
56
63
  s.add_dependency(%q<faraday>, ["= 0.8.8"])
57
- s.add_dependency(%q<rspec>, ["~> 2.8.0"])
58
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
64
+ s.add_dependency(%q<rest-client>, ["~> 1.8"])
65
+ s.add_dependency(%q<rspec>, ["~> 2.8"])
59
66
  s.add_dependency(%q<bundler>, ["~> 1.0"])
60
- s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
61
- s.add_dependency(%q<faraday>, ["= 0.8.8"])
62
- s.add_dependency(%q<debugger>, [">= 0"])
67
+ s.add_dependency(%q<jeweler>, ["~> 1.8"])
68
+ s.add_dependency(%q<debugger>, ["~> 1.6"])
63
69
  end
64
70
  else
65
71
  s.add_dependency(%q<faraday>, ["= 0.8.8"])
66
- s.add_dependency(%q<rspec>, ["~> 2.8.0"])
67
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
72
+ s.add_dependency(%q<rest-client>, ["~> 1.8"])
73
+ s.add_dependency(%q<rspec>, ["~> 2.8"])
68
74
  s.add_dependency(%q<bundler>, ["~> 1.0"])
69
- s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
70
- s.add_dependency(%q<faraday>, ["= 0.8.8"])
71
- s.add_dependency(%q<debugger>, [">= 0"])
75
+ s.add_dependency(%q<jeweler>, ["~> 1.8"])
76
+ s.add_dependency(%q<debugger>, ["~> 1.6"])
72
77
  end
73
78
  end
74
79
 
data/README.md CHANGED
@@ -1,99 +1,258 @@
1
- #Instamojo-rb#
2
- This is the **Ruby** library of [Instamojo API](http://instamojo.com/developers).
3
- This will assist you to programmatically create, edit and delete offers on Instamojo.
1
+ # Instamojo-rb
2
+ This is the **Ruby** library of [Instamojo REST API](https://www.instamojo.com/developers/rest/).
3
+ This will assist you to programmatically create, edit and delete links on Instamojo. Also supports [RAP](https://www.instamojo.com/developers/request-a-payment-api/) api for payments request, listing and status.
4
4
 
5
- ##Installation##
6
- `gem install Instamojo-rb`
7
-
8
- For your Rails/bundler projects:
5
+ ## Installation
6
+ `gem install Instamojo-rb`
7
+ For your Rails/bundler projects:
9
8
  `gem 'Instamojo-rb'`
10
9
 
11
- ##Usage##
12
-
13
- ###Set API keys###
10
+ ## Usage
11
+ ### Set API keys
14
12
  ```ruby
15
13
  require 'Instamojo-rb'
16
14
  api = Instamojo::API.new do |app|
17
- app.app_id = "app_id-you-received-from-api@instamojo.com"
15
+ app.api_key = "api_key-you-received-from-api@instamojo.com"
16
+ app.auth_token = "auth_token-you-received-from-api@instamojo.com"
18
17
  end
19
18
  #or
20
- api = Instamojo::API.new("app_id-you-received-from-api@instamojo.com")
19
+ api = Instamojo::API.new("api_key-you-received-from-api@instamojo.com", "auth_token-you-received-from-api@instamojo.com")
21
20
  ```
22
-
23
- ###Generate client:###
21
+ ### Generate client
24
22
  `client = api.client`
25
23
 
26
- ###Authentication###
24
+ ---
25
+ ### Links
26
+
27
+ `Link` object contains all the necessary information required to interpret, modify and archive an Instamojo Link. All link operations on client returns one or collectionn of `links`. Original response from Instamojo API for a link is encapsulated in `link.original`, which is immutable. Call `#to_h` on `link` to get it's all attributes.
28
+ _Helper methods_ for `Link`:
29
+ * `link.to_h` - Returns equivalent Ruby hash for a link.
30
+ * `link.to_json` - Returns equivalent JSON for a link
31
+ * `link.original` - Returns original link data fetched from API.
32
+ * `link.save` - Edits updates carried out on Link object at Instamojo.
33
+ * `link.archive` - Archives link at Instamojo
34
+ * `link.reload` or `link.refresh` - Looks for changes on Instamojo server for the link. Immutable
35
+ * `link.reload!` or `link.refresh!` - Same as `link.reload`, but mutable.
36
+
37
+ More about it's usage is below.
38
+
39
+
40
+ #### Get Links
27
41
  ```ruby
28
- client.authenticate('instamojo_username', 'instamojo_password')
29
- #or
30
- client.authenticate do |user|
31
- user.username = "instamojo_username"
32
- user.password = "instamojo_password"
33
- end
34
- #=> Instamojo Client(URL: https://www.instamojo.com/api/1, Status: Authenticated)
42
+ client.links_list
43
+ #=> Array of Instamojo::Link objects
35
44
  ```
36
45
 
37
- ###Offers###
38
- ####List all offers####
39
- `client.get_offers`
46
+ #### Create a new link
47
+ ##### Required:
48
+ * `title` - Title of the Link, be concise.
49
+ * `description` - Describe what your customers will get, you can add terms and conditions and any other relevant information here. Markdown is supported, popular media URLs like Youtube, Flickr are auto-embedded.
50
+ * `base_price` - Price of the Link. This may be 0, if you want to offer it for free.
51
+
52
+ ##### File and Cover image:
53
+ * `file_upload` - Full path to the file you want to sell. This file will be available only after successful payment.
54
+ * `cover_image` - Full path to the IMAGE you want to upload as a cover image.
55
+
56
+ ##### Quantity:
57
+ * `quantity` - Set to 0 for unlimited sales. If you set it to say 10, a total of 10 sales will be allowed after which the Link will be made unavailable.
58
+
59
+ ##### Post Purchase Note
60
+ * `note` - A post-purchase note, will only displayed after successful payment. Will also be included in the ticket/ receipt that is sent as attachment to the email sent to buyer. This will not be shown if the payment fails.
40
61
 
41
- ####List details of an offer####
42
- **Syntax:** `client.get_offer(offer_slug)`
62
+ ##### Event
63
+ * `start_date` - Date-time when the event is beginning. Format: `YYYY-MM-DD HH:mm`
64
+ * `end_date` - Date-time when the event is ending. Format: `YYYY-MM-DD HH:mm`
65
+ * `venue` - Address of the place where the event will be held.
66
+ * `timezone` - Timezone of the venue. Example: Asia/Kolkata
43
67
 
68
+ ##### Redirects and Webhooks
69
+ * `redirect_url` - This can be a Thank-You page on your website. Buyers will be redirected to this page after successful payment.
70
+ * `webhook_url` - Set this to a URL that can accept POST requests made by Instamojo server after successful payment.
71
+ * `enable_pwyw` - set this to True, if you want to enable Pay What You Want. Default is False.
72
+ * `enable_sign` - set this to True, if you want to enable Link Signing. Default is False. For more information regarding this, and to avail this feature write to support at instamojo.com.
73
+
74
+ ##### Code:
44
75
  ```ruby
45
- client.get_offer('demo-product')
46
- #=> {"offer"=> {"shorturl"=>nil, "start_date"=>nil, "note"=>"", "description"=>"This is a demo product. Just *claim* it. ", "venue"=>nil, "title"=>"Demo product", "url"=>"https://www.instamojo.com/ankurgel/demo-product/", "slug"=>"demo-product", "base_price"=>"0.00", "quantity"=>nil, "end_date"=>nil, "currency"=>"INR", "cover_image"=>nil, "timezone"=>nil, "redirect_url"=>""},
47
- # "success"=>true}
76
+ new_link = client.create_link do |link|
77
+ link.title = 'API link v1.1'
78
+ link.description = 'Dummy offer via API'
79
+ link.currency = 'INR'
80
+ link.base_price = 0
81
+ link.quantity = 10
82
+ link.redirect_url = 'http://ankurgoel.com'
83
+ link.file_upload = '~/Pictures/RISE.jpg'
84
+ link.cover_image = '~/Pictures/saturday.jpg'
85
+ end
86
+ #=> Instamojo Link(slug: api-link-v11, title: API link v1.1, shorturl: )
87
+ new_link.reload!
88
+ #=> Instamojo Link(slug: api-link-v11, title: API link v1.1, shorturl: http://imojo.in/1dxv1h)
89
+ ```
90
+ or
91
+ ```ruby
92
+ new_link_params = {base_price: 199, title: 'API link 3', description: 'My dummy offer via API', currency: 'INR', quantity: 20}
93
+ new_link = client.create_link(new_link_params)
48
94
  ```
49
95
 
50
- ####Create an offer####
96
+ #### Detail of a link
51
97
  ```ruby
52
- client.create_offer do |offer|
53
- offer.title = "Command line offer"
54
- offer.description = "This offer is being created via Instamojo-rb"
55
- offer.currency = "INR"
56
- offer.base_price = 0
57
- offer.quantity = 0
98
+ link = client.link_detail('link_slug_goes_here')
99
+ #=> Instamojo Link(slug: link_slug_goes_here, title: Foo Bar, shorturl: http://imojo.in/ankurfoobar)
100
+ link.to_h
101
+ #=> {"title"=>"Foo Bar", "description"=>"", "slug"=>"foo-product", "shorturl"=>"http://imojo.in/ankurfoobar", "url"=>"https://www.instamojo.com/ankurgel/foo-product/", "cover_image"=> "https://www.filepicker.io/api/file/BHeefKAARCKGC5l1J29e/convert?w=500&h=500&fit=clip&quality=70", "currency"=>"INR", "base_price"=>"0.00", "quantity"=>nil, "quantity_sold"=>2, "requires_shipping"=>false, "ships_within_days"=>nil, "start_date"=>nil, "end_date"=>nil, "venue"=>"", "timezone"=>"", "note"=>"", "redirect_url"=>"", "webhook_url"=>"", "status"=>"Live", "enable_pwyw"=>false, "enable_sign"=>false, "socialpay_platforms"=>""}
102
+ ```
103
+
104
+ #### Edit a link
105
+ ```ruby
106
+ link = client.links_list.first
107
+ link.save do |l|
108
+ l.title = "Foo"
109
+ l.description = "This new information should go in link"
58
110
  end
111
+ #=> Returns updated Link object from Instamojo
112
+ ```
113
+ or
114
+ ```ruby
115
+ link = client.link_detail('foo-product')
116
+ link.title = 'Foo'; link.description = 'This new information should go in link'
117
+ link.save
118
+ # returns updated Link object from Instamojo
119
+ ```
120
+ or handle it directly without Link object
121
+ ```ruby
122
+ client.edit_link({slug: 'foo-product', title: 'Foo', description: 'This new infromation should go in link'})
123
+ ```
124
+
125
+ ---
126
+ ### Payments
127
+ `Payment` object contains the necessary information such as `payment_id`, `quantity`, `status`, `buyer_email` etc. Call `#to_h` on `payment` to get it's all attributes. `Payment` object has following helpers:
128
+ - `payment.to_h` - Returns equivalent Ruby hash for a payment
129
+ - `payment.to_json` - Returns equivalent JSON for a payment
130
+ - `payment.original` - Returns original payment data fetched from API.
131
+ - Like `Link`, it also exposes `reload` and `reload!`
59
132
 
60
- #OR
61
- client.create_offer({
62
- "title" => "Command line offer",
63
- "description" => "This offer is being created via Instamojo-rb",
64
- "currency" => "INR",
65
- "base_price" => 0,
66
- "quantity" => 0
67
- })
133
+ Details are documented [here](https://www.instamojo.com/developers/rest/#toc-payments)
134
+
135
+ #### Get Payments
136
+ ```ruby
137
+ client.payments_list
138
+ #=> Returns array of Payment objects
139
+ ```
140
+ #### Detail or status of a payment
141
+ ```ruby
142
+ payment = client.payment_detail('MOJxxx06000F97367750')
143
+ #=> Instamojo Payment(payment_id: MOJxxx06000F97367750, quantity: 1, amount: 0.00, status: Credit, link_slug: api-link-7-node, buyer_name: Ankur Goel)
144
+ payment.to_h
145
+ #=> Hash of all payment object attributes
68
146
  ```
147
+ #### Request a payment
148
+ This is a part of [RAP API](https://www.instamojo.com/developers/request-a-payment-api/). You can request a payment from anyone via this who will then be notified to make a payment with specified payment. The payment then can be carried out via [Instapay](https://www.instamojo.com/pay/). Jump over to the documentation to see accepted parameters.
149
+ ##### Code:
150
+ ```ruby
151
+ payment_request = client.payment_request({amount:100, purpose: 'api', send_email: true, email: 'ankurgel+2@gmail.com', redirect_url: 'http://ankurgoel.com'})
152
+ #=> Instamojo PaymentRequest(id: 8726f8c5001e426f8b24e908b2761686, purpose: api, amount: 100.00, status: Sent, shorturl: , longurl: https://www.instamojo.com/@ashwini/8726f8c5001e426f8b24e908b2761686)
153
+ ```
154
+ #### Get Payment Requests
155
+ ```ruby
156
+ payment_requests = client.payment_requests_list
157
+ #=> Returns array of PaymentRequest objects
158
+ ```
159
+ #### Status of payment request
160
+ You can get the status of a payment_request from the id you obtained after making payment request.
161
+ ```ruby
162
+ payment_request.reload!
163
+ #or
164
+ payment_request = client.payment_request_status('8726f8c5001e426f8b24e908b2761686')
165
+ #=> Instamojo PaymentRequest(id: 8726f8c5001e426f8b24e908b2761686, purpose: api, amount: 100.00, status: Sent, shorturl: http://imjo.in/Nasdf , longurl: https://www.instamojo.com/@ashwini/8726f8c5001e426f8b24e908b2761686)
166
+ ```
167
+ ---
168
+ ### Refunds
169
+ `Refund` object contains the necessary information such as `payment_id`, `refund_amount`, `status` and `body` etc. Call `#to_h` on `refund` to get it's all attributes. `Refund` object has the same helpers as `Payment` above, including `reload` and `reload!`.
69
170
 
70
- ####Archive an offer####
71
- `client.delete_offer('demo-product')`
171
+ #### Get Refunds
172
+ ```ruby
173
+ refunds = client.refunds_list
174
+ #=> Returns array of Refund objects
175
+ ```
72
176
 
73
- ###Logout###
74
- `client.logout`
177
+ #### Create a new refund
178
+ ##### Required:
179
+ * `payment_id` - Payment ID of the payment against which you're initiating the refund.
180
+ * `type` - A three letter short-code identifying the [reason for this case](https://www.instamojo.com/developers/rest/#toc-refunds).
181
+ * `body` - Additonal text explaining the refund.
75
182
 
183
+ ```ruby
184
+ client.create_refund({payment_id: 'MOJO5c04000J30502939', type: 'QFL', body: 'Customer is not satisfied'})
185
+ #=> Returns Refund object or non-200 response object
186
+ ```
187
+ or
188
+ ```ruby
189
+ client.create_refund do |refund|
190
+ refund.payment_id = 'MOJO5c04000J30502939'
191
+ refund.type = 'QFL'
192
+ refund.body = 'Customer is not satisifed'
193
+ end
194
+ ```
195
+ or refund a `payment` directly:
196
+ ```ruby
197
+ payment = client.payment_detail('MOJO5c05000F97367750')
198
+ payment.process_refund(type: 'QFL', body: 'User wanted different version') #or
199
+ payment.process_refund do |refund|
200
+ refund.type = 'QFL'
201
+ refund.body = 'User wanted different version'
202
+ end
203
+ ```
76
204
 
77
- ##Development pipeline##
205
+ #### Details of a refund
206
+ ```ruby
207
+ refund = client.refund_detail 'C5c0751269'
208
+ #=> Instamojo Refund(id: C5c0751269, status: 'Refunded' payment_id: MOJO5c04000J30502939, refund_amount: 100)
209
+ refund.to_h
210
+ #=> Hash of all refund attributes
211
+ refund.reload!
212
+ #=> Updates the refund from server
213
+ #=> Instamojo Refund(id: C5c0751269, status: 'Closed' payment_id: MOJO5c04000J30502939, refund_amount: 100)
214
+ ```
215
+ or
216
+ ```ruby
217
+ refunds = client.refunds_list
218
+ refund = refunds.last
219
+ refund.reload #=> refetches the refund from server
220
+ #=> Instamojo Refund(id: C5c0751269, status: 'Refunded' payment_id: MOJO5c04000J30502939, refund_amount: 100)
221
+ ```
222
+
223
+ ---
224
+ ### Authentication
225
+ ```ruby
226
+ client.authenticate('instamojo_username', 'instamojo_password')
227
+ #or
228
+ client.authenticate do |user|
229
+ user.username = "instamojo_username"
230
+ user.password = "instamojo_password"
231
+ end
232
+ #=> Instamojo Client(URL: https://www.instamojo.com/api/1, Status: Authenticated)
233
+ ```
234
+ #### Logout
235
+ ```ruby
236
+ client.logout
237
+ ```
238
+ ---
239
+ ### Misc
240
+ * `client.authorized` - View last status of api client request.
241
+ * `client.response` - View last procured response by client.
242
+ * `client.response.code` - View `response_code` of last request sent by client.
78
243
 
79
- Few things which will be available in next versions:
244
+ #### Logging
245
+ If you are interested in seeing api requests being made to Instamojo server. Flip this flag: `Instamojo::DEBUG = true` and genereate the api client again.
80
246
 
81
- * Error handling; with respect to `Instamojo` error codes.
82
- * File Upload support.
83
- * `Offer` and `Event` model with api methods like
84
- + _Accessor_ methods like on `Offer`: `#title`, `#description`, `#quantity`
85
- + `offer.set_title('Changed offer title')`
86
- + `offer.set_quantity(30)`
87
- + `offer.enable_variants`
88
247
 
89
- ##Contributing##
248
+ ## Contributing
90
249
 
91
250
  * [Fork](https://github.com/AnkurGel/Instamojo-rb/fork) the project
92
251
  * `bundle install` to satisfy gem dependencies.
93
- * `rake install` to install the gem.
94
- * Swim around in `lib/`.
252
+ * `rake install` to install the gem.
253
+ * Swim around in `lib/`.
95
254
 
96
- ##Copyright##
255
+ ## Copyright
97
256
 
98
257
  Copyright (c) 2014 Ankur Goel.
99
258