leetchi-wallet-services 0.0.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,11 +1,13 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
- gem "json"
3
+ gem 'json', '~> 1.7.7'
4
4
 
5
5
  group :test do
6
- gem 'minitest'
7
- gem 'webmock'
8
- gem 'vcr'
9
- gem 'turn'
10
- gem 'rake'
6
+ gem 'minitest', '~> 4.6.1'
7
+ gem 'webmock', '~> 1.9.3'
8
+ gem 'capybara', '~> 2.0.2'
9
+ gem 'poltergeist', '~> 1.1.0'
10
+ gem 'vcr', '~> 2.4.0'
11
+ gem 'turn', '~> 0.9.6'
12
+ gem 'rake', '~> 10.0.3'
11
13
  end
data/Gemfile.lock CHANGED
@@ -1,26 +1,61 @@
1
1
  GEM
2
- remote: http://rubygems.org/
2
+ remote: https://rubygems.org/
3
3
  specs:
4
- addressable (2.3.2)
4
+ addressable (2.3.3)
5
5
  ansi (1.4.3)
6
+ capybara (2.0.2)
7
+ mime-types (>= 1.16)
8
+ nokogiri (>= 1.3.3)
9
+ rack (>= 1.0.0)
10
+ rack-test (>= 0.5.4)
11
+ selenium-webdriver (~> 2.0)
12
+ xpath (~> 1.0.0)
13
+ childprocess (0.3.8)
14
+ ffi (~> 1.0, >= 1.0.11)
6
15
  crack (0.3.2)
7
- json (1.7.6)
16
+ eventmachine (1.0.0)
17
+ faye-websocket (0.4.7)
18
+ eventmachine (>= 0.12.0)
19
+ ffi (1.4.0)
20
+ http_parser.rb (0.5.3)
21
+ json (1.7.7)
22
+ mime-types (1.21)
8
23
  minitest (4.6.1)
24
+ multi_json (1.6.1)
25
+ nokogiri (1.5.6)
26
+ poltergeist (1.1.0)
27
+ capybara (~> 2.0, >= 2.0.1)
28
+ faye-websocket (~> 0.4, >= 0.4.4)
29
+ http_parser.rb (~> 0.5.3)
30
+ rack (1.5.2)
31
+ rack-test (0.6.2)
32
+ rack (>= 1.0)
9
33
  rake (10.0.3)
34
+ rubyzip (0.9.9)
35
+ selenium-webdriver (2.30.0)
36
+ childprocess (>= 0.2.5)
37
+ multi_json (~> 1.0)
38
+ rubyzip
39
+ websocket (~> 1.0.4)
10
40
  turn (0.9.6)
11
41
  ansi
12
42
  vcr (2.4.0)
13
- webmock (1.9.0)
43
+ webmock (1.9.3)
14
44
  addressable (>= 2.2.7)
15
- crack (>= 0.1.7)
45
+ crack (>= 0.3.2)
46
+ websocket (1.0.7)
47
+ xpath (1.0.0)
48
+ nokogiri (~> 1.3)
16
49
 
17
50
  PLATFORMS
18
51
  ruby
19
52
 
20
53
  DEPENDENCIES
21
- json
22
- minitest
23
- rake
24
- turn
25
- vcr
26
- webmock
54
+ capybara (~> 2.0.2)
55
+ json (~> 1.7.7)
56
+ minitest (~> 4.6.1)
57
+ poltergeist (~> 1.1.0)
58
+ rake (~> 10.0.3)
59
+ turn (~> 0.9.6)
60
+ vcr (~> 2.4.0)
61
+ webmock (~> 1.9.3)
data/README.md CHANGED
@@ -5,21 +5,51 @@ See the [API documentation](http://doc.api.leetchi.com/) for more details on the
5
5
 
6
6
  Tested on the following versions of Ruby: 1.9.2, 1.9.3
7
7
 
8
+ ## Code Status
9
+ [![Build Status](https://travis-ci.org/Leetchi/leetchi-api-ruby-sdk.png?branch=master)](https://travis-ci.org/Leetchi/leetchi-api-ruby-sdk)
10
+ [![Code Climate](https://codeclimate.com/github/Leetchi/leetchi-api-ruby-sdk.png)](https://codeclimate.com/github/Leetchi/leetchi-api-ruby-sdk)
11
+ [![Dependency Status](https://gemnasium.com/Leetchi/leetchi-api-ruby-sdk.png)](https://gemnasium.com/Leetchi/leetchi-api-ruby-sdk)
12
+
8
13
  ## Requirements
9
14
 
10
15
  This gem uses mainly ruby stdlib and the *json* gem.
11
16
 
12
17
  ## Configuration
13
18
 
19
+ Please note that the gem configuration process change between 0.0.1 and 1.0.0.
20
+
21
+ ### Version 0.0.1
22
+
14
23
  Setup the following ENV:
15
24
 
16
- ```ruby
25
+ ```
17
26
  ENV['LEETCHI_API_BASE_URL'] = "https://api-preprod.leetchi.com" # once you've run your test using the preproduction environment use the production one
18
27
  ENV['LEETCHI_KEY_PATH'] = "abcd" # the full path to your leetchi key
19
28
  ENV['LEETCHI_PASSPHRASE'] = "efgh" # you key's passphrase (leave blank if none)
20
29
  ENV['LEETCHI_PARTNER_ID'] = "myID" # your Leetchi API ID
21
30
  ```
22
31
 
32
+ ### Version 1.0.0
33
+
34
+ You can now call the Leetchi.configure method like this:
35
+
36
+ ```ruby
37
+ Leetchi.configure do |c|
38
+ c.preproduction = true
39
+ c.partner_id = 'example'
40
+ c.key_path = './spec/support-files/example.pem'
41
+ c.key_password = ''
42
+ end
43
+ ```
44
+
45
+ The **preproduction** attribute let you specify if you want to use the preproduction api endpoint.
46
+
47
+ The **partner_id** is the id that was issue to you during you registration process.
48
+
49
+ The **key_path** and **key_password** arguments are here to let you use the key you've created before the registration process.
50
+
51
+ This configure method can of course be use to define a Ruby on Rails initialiser.
52
+
23
53
  ## Usage
24
54
 
25
55
  The gem implements the following resources:
@@ -35,7 +65,7 @@ The gem implements the following resources:
35
65
  - Wallet
36
66
  - Withdrawal
37
67
 
38
- Each resource has specifics methods such has `create`, `details`, `update`, etc. Those methods must be called with an ID and / or an Object matching the Leetchi API.
68
+ Each resource has specifics methods such has `create`, `details`, `update`, etc. Those methods must be called with an ID and / or an Object matching the Leetchi API.
39
69
  Calling those methods return the Leetchi API response has an object. Every executions are made synchronously.
40
70
 
41
71
  ### Example
@@ -62,3 +92,4 @@ Leetchi::User.details(123)
62
92
  Make sure that you have run: ```bundle install```
63
93
  Then you just have to run the rake task ```rake test``` to run all the test suite.
64
94
  Feel free to report any test failure by creating an issue on the [Gem's Github](https://github.com/Leetchi/leetchi-api-ruby-sdk/issues)
95
+
@@ -42,20 +42,20 @@ module Leetchi
42
42
  begin
43
43
  JSON.parse(res.body)
44
44
  rescue JSON::ParserError => e
45
- {' ErrorCode' => -1 }
45
+ res.body.is_a?(String) ? res.body : {' ErrorCode' => -1 }
46
46
  end
47
47
  end
48
48
 
49
49
  def self.key
50
- OpenSSL::PKey::RSA.new(File.read(ENV['LEETCHI_KEY_PATH']), ENV['LEETCHI_PASSPHRASE'])
50
+ OpenSSL::PKey::RSA.new(File.read(Leetchi.configuration.key_path), Leetchi.configuration.key_password)
51
51
  end
52
52
 
53
53
  def self.path_for(route, options)
54
- File.join('', 'v1', 'partner', ENV['LEETCHI_PARTNER_ID'], route.to_s) + "?ts=#{Time.now.to_i.to_s}" + (options.nil? ? '' : ('&' + options))
54
+ File.join('', 'v1', 'partner', Leetchi.configuration.partner_id, route.to_s) + "?ts=#{Time.now.to_i.to_s}" + (options.nil? ? '' : ('&' + options))
55
55
  end
56
56
 
57
57
  def self.uri_for(path)
58
- URI(File.join(ENV['LEETCHI_API_BASE_URL'], path))
58
+ URI(File.join(Leetchi.configuration.base_url, path))
59
59
  end
60
60
 
61
61
  def self.sign(data)
@@ -18,4 +18,27 @@ module Leetchi
18
18
  require 'leetchi/expense'
19
19
  require 'leetchi/recurrent_contribution'
20
20
 
21
+
22
+ class Configuration
23
+ attr_accessor :base_url, :partner_id, :key_path, :key_password, :preproduction
24
+
25
+ def preproduction
26
+ @preproduction || false
27
+ end
28
+
29
+ def base_url
30
+ @base_url || (@preproduction == true ? "https://api-preprod.leetchi.com" : "https://api.leetchi.com")
31
+ end
32
+
33
+ end
34
+
35
+ class << self
36
+ attr_accessor :configuration
37
+ end
38
+
39
+ def self.configure
40
+ self.configuration ||= Configuration.new
41
+ yield configuration
42
+ end
43
+
21
44
  end