currencyconversion 0.0.1 → 0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5fe4a97084675d6729a0c4122fcd20226595fdac
4
- data.tar.gz: 48ffc10f099769d133836d9183303944df122d12
3
+ metadata.gz: e1f1d4f491e70656b3d318aafb32206d79a20b52
4
+ data.tar.gz: 1505c844a7bf804c90a85faead45c9f51ed3c695
5
5
  SHA512:
6
- metadata.gz: 20bf4fa23f2cfed99874dcacbe3a15cbbac0c8e7c7311bf21a04e30235ab4350438e0158f9ac1a4174fb1d1f88a484187e52ad2bfe7114babfa66a1980aa4f72
7
- data.tar.gz: f996a6c5d28d03cc760158081dc9ee6e26b28a37f5452a88f9a9600746fb83e034b814b41a65c448682597095b2d50b9450c57a58e581c2a9a22ffb3aca59e47
6
+ metadata.gz: 17fd0b7b3a393485b6149d1c309310e45981388e77c03959bf5fde429302661de60994d3eab64e6d25033188eb18645799e619831437ef7ed6262f4ce37bdec4
7
+ data.tar.gz: b0577d35d7c3c6c743c732d1a2e5171129b5afc15024ddffcb1a3022c8977030947a431f8c3fb8af5d77c158fda0bd61ddc04e8cc4d90320fc0ab38d185ba211
@@ -12,8 +12,8 @@ Gem::Specification.new do |spec|
12
12
  spec.authors = ["Peter Andreas Moelgaard"]
13
13
  spec.email = ["github@petermolgaard.com"]
14
14
 
15
- spec.summary = "currency_conversion"
16
- spec.description = "currency_conversion"
15
+ spec.description = "Ruby Library for the currencylayer API, Reliable Exchange Rates & Currency Conversion, https://currencylayer.com/"
16
+ spec.summary = "Free and startup-friendly currency converter JSON API for real-time and historical exchange rates - reliable and accurate, supporting 168 world currencies."
17
17
  spec.homepage = "https://github.com/pmoelgaard/currency_conversion"
18
18
  spec.license = "MIT"
19
19
 
@@ -22,7 +22,14 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ["lib"]
24
24
 
25
+ spec.required_ruby_version = '>= 2.0.0'
26
+
27
+ spec.add_runtime_dependency "httparty"
28
+ spec.add_runtime_dependency "hashable"
29
+
25
30
  spec.add_development_dependency "bundler", "~> 1.11"
26
31
  spec.add_development_dependency "rake", "~> 10.0"
27
32
  spec.add_development_dependency "rspec", "~> 3.0"
33
+ spec.add_development_dependency "dotenv"
34
+ spec.add_development_dependency "bump"
28
35
  end
@@ -0,0 +1,30 @@
1
+ require 'dotenv'
2
+ require 'currency_conversion'
3
+ require 'currency_conversion/live/live_options'
4
+
5
+ # Load Environment Variables
6
+ Dotenv.load
7
+
8
+ begin
9
+
10
+ # Declare the Client instance passing in the authentication parameters
11
+ @client = CurrencyLayer::Client.new(ENV['ACCESS_KEY'])
12
+
13
+ # Set the currencies to fetch
14
+ currencies = 'AUD,EUR,GBP,PLN'
15
+
16
+ # We declare the options
17
+ options = CurrencyLayer::LiveOptions.new()
18
+
19
+ # We make the call to fetch the live currencies
20
+ response = @client.live(currencies, options)
21
+
22
+ # If its a success, we print a message to the user
23
+ if !response.nil?
24
+ puts 'SUCCESS : Live Currencies Fetched...' << response.to_s
25
+ end
26
+
27
+ rescue => e
28
+ puts e.inspect
29
+
30
+ end
@@ -0,0 +1,35 @@
1
+ require 'dotenv'
2
+ require 'currency_conversion'
3
+ require 'currency_conversion/live/live_options'
4
+
5
+ # Load Environment Variables
6
+ Dotenv.load
7
+
8
+ begin
9
+
10
+ # Declare the Client instance passing in the authentication parameters
11
+ @client = CurrencyLayer::Client.new(ENV['ACCESS_KEY'])
12
+
13
+ # Set the currencies to fetch
14
+ currencies = [
15
+ 'AUD',
16
+ 'EUR',
17
+ 'GBP',
18
+ 'PLN'
19
+ ]
20
+
21
+ # We declare the options
22
+ options = CurrencyLayer::LiveOptions.new()
23
+
24
+ # We make the call to fetch the live currencies
25
+ response = @client.live(currencies, options)
26
+
27
+ # If its a success, we print a message to the user
28
+ if !response.nil?
29
+ puts 'SUCCESS : Live Currencies Fetched...' << response.to_s
30
+ end
31
+
32
+ rescue => e
33
+ puts e.inspect
34
+
35
+ end
@@ -0,0 +1,34 @@
1
+ require 'dotenv'
2
+ require 'currency_conversion'
3
+ require 'currency_conversion/live/live_options'
4
+
5
+ # Load Environment Variables
6
+ Dotenv.load
7
+
8
+ begin
9
+
10
+ # Declare the Client instance passing in the authentication parameters
11
+ @client = CurrencyLayer::Client.new(ENV['ACCESS_KEY'])
12
+
13
+ # Set the currencies to fetch
14
+ currencies = 'AUD,EUR,GBP,PLN'
15
+
16
+ # Set the source of the conversion
17
+ source = 'SGD'
18
+
19
+ # We declare the options
20
+ options = CurrencyLayer::LiveOptions.new()
21
+ options.source = source
22
+
23
+ # We make the call to fetch the live currencies
24
+ response = @client.live(currencies, options)
25
+
26
+ # If its a success, we print a message to the user
27
+ if !response.nil?
28
+ puts 'SUCCESS : Live Currencies Fetched w. source...' << response.to_s
29
+ end
30
+
31
+ rescue => e
32
+ puts e.inspect
33
+
34
+ end
@@ -0,0 +1,13 @@
1
+ module CurrencyLayer
2
+
3
+ class LiveException < Exception
4
+
5
+ attr_accessor :error
6
+
7
+ def initialize(error)
8
+ self.error = error
9
+ end
10
+
11
+ end
12
+
13
+ end
@@ -0,0 +1,18 @@
1
+ module CurrencyLayer
2
+
3
+ class LiveOptions
4
+
5
+ include Hashable
6
+
7
+ attr_accessor :access_key
8
+
9
+ attr_accessor :currencies
10
+ attr_accessor :source
11
+
12
+ def initialize()
13
+ @query = nil
14
+ end
15
+
16
+ end
17
+
18
+ end
@@ -0,0 +1,21 @@
1
+ require "hashable"
2
+
3
+ module CurrencyLayer
4
+
5
+ class LiveRequest
6
+
7
+ include Hashable
8
+
9
+ attr_accessor :query
10
+
11
+ def initialize(query = {})
12
+
13
+ # Ruby passes by reference, so we can manipulate the object, and we check if the currencies is an array, and if so, we convert to string according to API
14
+ query.currencies = query.currencies.kind_of?(String) ? query.currencies : query.currencies.join(',')
15
+
16
+ self.query = query
17
+
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,15 @@
1
+ module CurrencyLayer
2
+
3
+ class LiveResponse
4
+
5
+ SUCCESS_EXPR = 'success'
6
+ ERROR_EXPR = 'error'
7
+
8
+ def bar
9
+ SUCCESS_EXPR
10
+ ERROR_EXPR
11
+ end
12
+
13
+ end
14
+
15
+ end
@@ -0,0 +1,13 @@
1
+ module CurrencyLayer
2
+
3
+ class MissingArgumentException < Exception
4
+
5
+ attr_accessor :argument
6
+
7
+ def initialize(argument)
8
+ self.argument = argument
9
+ end
10
+
11
+ end
12
+
13
+ end
@@ -1,3 +1,3 @@
1
1
  module CurrencyLayer
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -1,5 +1,68 @@
1
+ require "httparty"
2
+ require "hashable"
1
3
  require "currency_conversion/version"
4
+ require "currency_conversion/live/live_request"
5
+ require "currency_conversion/live/live_response"
2
6
 
3
7
  module CurrencyLayer
4
- # Your code goes here...
8
+
9
+ class Client
10
+
11
+ include HTTParty
12
+
13
+ base_uri 'apilayer.net/api'
14
+
15
+ def initialize(access_key)
16
+
17
+ if access_key.nil?
18
+ raise CurrencyLayer::MissingArgumentException.new 'access_key'
19
+ end
20
+
21
+ @access_key = access_key
22
+
23
+ end
24
+
25
+ def live(currencies, options = {})
26
+
27
+ if currencies.nil?
28
+ raise CurrencyLayer::MissingArgumentException.new 'currencies'
29
+ return
30
+ end
31
+
32
+ # Create a shallow copy so we don't manipulate the original reference
33
+ q = options.dup
34
+
35
+ # Populate the Query
36
+ q.access_key = @access_key
37
+ q.currencies = currencies
38
+
39
+ # We then create the Request
40
+ req = CurrencyLayer::LiveRequest.new(q)
41
+
42
+ # We create a Hash of the request so we can send it via HTTP
43
+ req_dto = req.to_dh
44
+
45
+ begin
46
+
47
+ # We make the actual request
48
+ res = self.class.get('/live', req_dto)
49
+
50
+ # We ensure that we tap the response so we can use the results
51
+ res.inspect
52
+
53
+ if (res[CurrencyLayer::LiveResponse::ERROR_EXPR])
54
+ raise CurrencyLayer::LiveException.new res[CurrencyLayer::LiveResponse::ERROR_EXPR]
55
+ end
56
+
57
+ # We just return the parsed binary response
58
+ return res.parsed_response
59
+
60
+ rescue => e
61
+ puts e.inspect
62
+ return e
63
+
64
+ end
65
+ end
66
+
67
+ end
5
68
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: currencyconversion
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Andreas Moelgaard
@@ -10,6 +10,34 @@ bindir: exe
10
10
  cert_chain: []
11
11
  date: 2016-02-20 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httparty
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: hashable
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: bundler
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,7 +80,36 @@ dependencies:
52
80
  - - ~>
53
81
  - !ruby/object:Gem::Version
54
82
  version: '3.0'
55
- description: currency_conversion
83
+ - !ruby/object:Gem::Dependency
84
+ name: dotenv
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: bump
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Ruby Library for the currencylayer API, Reliable Exchange Rates & Currency
112
+ Conversion, https://currencylayer.com/
56
113
  email:
57
114
  - github@petermolgaard.com
58
115
  executables: []
@@ -69,7 +126,15 @@ files:
69
126
  - bin/console
70
127
  - bin/setup
71
128
  - currency_conversion.gemspec
129
+ - example/example_live.rb
130
+ - example/example_live_w_currencies_as_array.rb
131
+ - example/example_live_w_source.rb
72
132
  - lib/currency_conversion.rb
133
+ - lib/currency_conversion/live/live_exception.rb
134
+ - lib/currency_conversion/live/live_options.rb
135
+ - lib/currency_conversion/live/live_request.rb
136
+ - lib/currency_conversion/live/live_response.rb
137
+ - lib/currency_conversion/missing_argument_exception.rb
73
138
  - lib/currency_conversion/version.rb
74
139
  homepage: https://github.com/pmoelgaard/currency_conversion
75
140
  licenses:
@@ -83,7 +148,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
83
148
  requirements:
84
149
  - - '>='
85
150
  - !ruby/object:Gem::Version
86
- version: '0'
151
+ version: 2.0.0
87
152
  required_rubygems_version: !ruby/object:Gem::Requirement
88
153
  requirements:
89
154
  - - '>='
@@ -94,5 +159,6 @@ rubyforge_project:
94
159
  rubygems_version: 2.0.14
95
160
  signing_key:
96
161
  specification_version: 4
97
- summary: currency_conversion
162
+ summary: Free and startup-friendly currency converter JSON API for real-time and historical
163
+ exchange rates - reliable and accurate, supporting 168 world currencies.
98
164
  test_files: []