aga-money 0.0.1 → 0.0.3

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
  SHA256:
3
- metadata.gz: 985d910b923d6d96300ef35356028e1a5314c76c65103adba8a9cf76953331fa
4
- data.tar.gz: e21714d8f50f0411e2ea79f3eb9bd993ff560962b88e6a2f0069d9d30fb17cd0
3
+ metadata.gz: fb930bdcaebb946f5c5f841103ca4ce0ee1748872ba8ea89793cfe41099fdb17
4
+ data.tar.gz: ff712f49838f5fd642c7e5d6148f1b0af121df9ab2bd22f3a2b2be2a95afd762
5
5
  SHA512:
6
- metadata.gz: 4f6d89ee5eb55ae2489bee5906bfe55022e418f927e9c24a455526550db1e13fd9b84e82b508161b80d9bbb2746b7b71385055f5823b774c8ed4bb08ad0dd71a
7
- data.tar.gz: 35b4fd8ac2cfe1379e40d534b5ec4ccb7b6b5717589d6044a663a52f6df852ee0f534f01888f3b11bbf8e58d0de5f128ae2a534a5c865eee1560b980b42f10dc
6
+ metadata.gz: 01606bcb91ba2f5f17fef8a33dbd0ac71e7a0e839504a440798f6579aed744f4dfba3ce3405b856678e82a031d90ae8fc6b12652943d9f861f01aadb7d8bba5a
7
+ data.tar.gz: 0d1cd32b61a213d202198afeb721fd411a85dc516ceb77ba677b552bff22dbca02ffbb4ec7d339f5f1ad78d5ea04c5d0941e1b4bccb8ac1deb253abc746d3dc7
data/lib/money/base.rb CHANGED
@@ -3,9 +3,10 @@
3
3
  module Money
4
4
  class Base
5
5
  class << self
6
- attr_accessor :app_info
6
+ attr_accessor :app_info, :path_prefix
7
7
  end
8
8
 
9
9
  self.app_info = ::ENV['APP_INFO'] || "#{::Money::NAME} V#{::Money.version}"
10
+ self.path_prefix = 'http://localhost:3000/api/v1/'
10
11
  end
11
12
  end
@@ -36,7 +36,9 @@ module Money
36
36
 
37
37
  liquidity = validator(pairs).liquidity
38
38
 
39
- validator(liquidity).gain
39
+ gain = validator(liquidity).gain
40
+
41
+ validator(gain).exist
40
42
  end
41
43
 
42
44
  def response(data)
@@ -49,5 +51,7 @@ module Money
49
51
 
50
52
  payload
51
53
  end
54
+
55
+ attr_accessor :start
52
56
  end
53
57
  end
@@ -10,6 +10,8 @@ module Money
10
10
  MIN_NUMBER = 0.0000000001
11
11
  MAX_PERC = 0.1
12
12
 
13
+ SET_PERC = 1.0
14
+
13
15
  def initialize(pairs)
14
16
  @pairs = pairs
15
17
  end
@@ -26,15 +28,17 @@ module Money
26
28
  price = detection.dig(:payload, :price)
27
29
  return {} if price.nil?
28
30
 
31
+ return {} if percentage(detection).round(3) < SET_PERC
32
+
29
33
  percentage(detection).round(3) >= computation_percentage(price).round(3)
30
34
  end
31
35
 
32
- # rubocop: disable Metrics/CyclomaticComplexity, Lint/MissingCopEnableDirective
36
+ # rubocop: disable Lint/MissingCopEnableDirective
33
37
  def discriminate_pairs
34
38
  return nil if @pairs.nil?
35
39
 
36
- max = @pairs&.map { |pair| pair[:price] }&.max
37
- min = @pairs&.map { |pair| pair[:price] }&.min
40
+ max = @pairs&.max_by { |pair| pair[:price] }
41
+ min = @pairs&.min_by { |pair| pair[:price] }
38
42
 
39
43
  detection = select_max_pairs(max: max, min: min)
40
44
  gain = compare(detection)
@@ -52,15 +56,16 @@ module Money
52
56
  end
53
57
 
54
58
  def select_exchange_names(data)
55
- data&.map { |pair| { exchange: pair[:exchange], price: pair[:price] } }&.sort_by { |pair| pair[:price] }
59
+ data&.sort_by { |e| e[:price] }
56
60
  end
57
61
 
58
62
  def select_max_pairs(max:, min:)
59
- data = @pairs&.select { |pair| pair[:price] == max || pair[:price] == min }
63
+ data = [min, max]
64
+
60
65
  exchanges = select_exchange_names(data)
61
- diff = max - min
66
+ diff = max[:price] - min[:price]
62
67
 
63
- { payload: { max_diff: diff, exchanges: exchanges, price: min } }
68
+ { payload: { max_diff: diff, exchanges: exchanges, price: min[:price] } }
64
69
  end
65
70
  end
66
71
  end
@@ -16,7 +16,9 @@ module Money
16
16
  @data = data
17
17
  end
18
18
 
19
+ # rubocop: disable Metrics/MethodLength, Lint/MissingCopEnableDirective
19
20
  def gain
21
+ cryptos = []
20
22
  @data&.map do |item|
21
23
  exchanges = item[:exchanges]
22
24
  @gainer = Money::Helpers::Controls::Gain.new(exchanges)
@@ -27,10 +29,10 @@ module Money
27
29
  item[:exchanges] = potential.dig(:payload, :exchanges)
28
30
  item.each { |i| i.delete(:price) }
29
31
 
30
- item
32
+ cryptos << item
31
33
  end&.compact
32
34
 
33
- @data
35
+ cryptos
34
36
  end
35
37
 
36
38
  def liquidity
@@ -40,6 +42,18 @@ module Money
40
42
  end
41
43
  end
42
44
 
45
+ def exist
46
+ cryptos = []
47
+ @data&.map do |item|
48
+ request = Money::Helpers::RequestApp.new.operation_exist(item)
49
+ next if request[:response]['exist'] == true
50
+
51
+ cryptos << item
52
+ end&.compact
53
+
54
+ cryptos
55
+ end
56
+
43
57
  def pairs
44
58
  @data&.map do |item|
45
59
  filtered = item[:exchanges].select { |cmc_item| EXCHANGES.include?(cmc_item[:exchange]) }
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'uri'
4
+ require 'json'
5
+ require 'net/http'
6
+
7
+ module Money
8
+ module Helpers
9
+ class RequestApp
10
+ def operation_exist(payload)
11
+ url = build_url('operations/exist')
12
+ builder_request(url: url, payload: payload)
13
+ end
14
+
15
+ private
16
+
17
+ def build_url(path, params = {})
18
+ URI.parse("#{Money::Base.path_prefix}#{path}")
19
+ end
20
+
21
+ def builder_request(url:, payload:)
22
+ http = Net::HTTP.new(url.host, url.port)
23
+ request = Net::HTTP::Get.new(url)
24
+ request['Authorization'] = 'Bearer 5c16c565fbd9f128063019f2828be964'
25
+ request['Content-Type'] = 'application/json'
26
+ request.body = JSON.dump(payload)
27
+
28
+ response = http.request(request)
29
+ { response: JSON.parse(response.body), status: response.code.to_i == 200 }
30
+ end
31
+
32
+ end
33
+ end
34
+ end
data/lib/money/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Money
4
- VERSION = '0.0.1'
4
+ VERSION = '0.0.3'
5
5
  end
data/lib/money.rb CHANGED
@@ -21,6 +21,10 @@ module Money
21
21
  TZInfo::Timezone.get(value)
22
22
  end
23
23
 
24
+ def path_prefix=(value)
25
+ ::Money::Base.path_prefix = value
26
+ end
27
+
24
28
  def ping
25
29
  { status: 200 }
26
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aga-money
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefano Baldazzi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-07 00:00:00.000000000 Z
11
+ date: 2023-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: zeitwerk
@@ -237,6 +237,7 @@ files:
237
237
  - lib/money/resources/helpers/controls/validator.rb
238
238
  - lib/money/resources/helpers/format.rb
239
239
  - lib/money/resources/helpers/http_request.rb
240
+ - lib/money/resources/helpers/request_app.rb
240
241
  - lib/money/resources/new.rb
241
242
  - lib/money/resources/top.rb
242
243
  - lib/money/version.rb
@@ -262,5 +263,5 @@ requirements: []
262
263
  rubygems_version: 3.3.24
263
264
  signing_key:
264
265
  specification_version: 4
265
- summary: aga-money0.0.1
266
+ summary: aga-money0.0.3
266
267
  test_files: []