twelvedata_ruby 0.2.2 → 0.3.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
  SHA256:
3
- metadata.gz: 3c68e57643ad8c9b7d4c5e17bfe92ad823bacc55bdae1c194a30f5f3a74adbdd
4
- data.tar.gz: 5d768c9549e371aa12deb250fbfdd0e090b14966dec5a650dfdadb6ce6832ae9
3
+ metadata.gz: f7d5d01f41fde75fae4a61796b121816c87d6d95afc4ea3126e3044b46648eb3
4
+ data.tar.gz: 04cdeaf1de8e47c3728bcefdade8b18544869dbc8b4b6af8b01354ffd3e50f73
5
5
  SHA512:
6
- metadata.gz: 87f664fc2864c97d2a570e946aad0d49c2fbb68fc92acbf019757b18deabfd2aa9b3351a0db9fee5f23d2792bb682baaaa4300bc43fd3b6ace929491f85a3e07
7
- data.tar.gz: 7b9ed31762e393242b6d64cade3130c318336a5075d75c1283c2ad073101111ee6c432e74bed5e4586732c33ca71759142021d81a8bf903976540bae41e62c56
6
+ metadata.gz: 6353eaab3d7e93d532d25990c32014c3c324ae02bff155500e05135a07f96f592cfdaf2927566b088c95d5ef7aba31ef4b87c6d5dfe1f8fa1a808d37a3c40d95
7
+ data.tar.gz: 8566bd2833987cbff4f792a0b28403e7a1a3b1d963a723de6ab2b76370548f4ee6441e943d4acb299bfe1d28c3004de52e60b4ccaa032bc6f2f66f3f980dabb0
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- twelvedata_ruby (0.2.2)
4
+ twelvedata_ruby (0.3.0)
5
5
  httpx (~> 0.14, >= 0.14.5)
6
6
 
7
7
  GEM
@@ -12,11 +12,11 @@ require_relative "twelvedata_ruby/client"
12
12
  module TwelvedataRuby
13
13
  # Holds the current version
14
14
  # @return [String] version number
15
- VERSION = "0.2.2"
15
+ VERSION = "0.3.0"
16
16
 
17
17
  # A convenient and clearer way of getting and overriding default attribute values of the singleton `Client.instance`
18
18
  #
19
- # @param [Hash] options the optional Hash object that may contain values to override the defaults
19
+ # @param [Hash] options the optional Hash object that may contain values to override the cd Docdefaults
20
20
  # @option options [Symbol, String] :apikey the private key from Twelvedata API key
21
21
  # @option options [Integer, String] :connect_timeout milliseconds
22
22
  #
@@ -6,9 +6,9 @@ module TwelvedataRuby
6
6
  "EndpointError" => "Endpoint is not valid. %{invalid}",
7
7
  "EndpointNameError" => "`%{invalid}` is not a correct endpoint. Valid values are: `%{valid_names}`",
8
8
  "EndpointParametersKeysError" => "Invalid parameters found: `%{invalid}`. Valid parameters for `%{name}` "\
9
- "endpoint are: `%{parameters}`. Please see: `Twelvedata::Endpoint#parameters` for more details",
9
+ "endpoint are: `%{parameters}`. Please see: `Twelvedata::Endpoint#parameters` for more details",
10
10
  "EndpointRequiredParametersError" => "Missing values for required parameters: `%{invalid}`. "\
11
- "`%{name}` endpoint required parameters are: `%{required}`.",
11
+ "`%{name}` endpoint required parameters are: `%{required}`.",
12
12
  "ResponseError" => "Encountered an error from the response"
13
13
  }.freeze
14
14
 
@@ -35,12 +35,10 @@ module TwelvedataRuby
35
35
  end
36
36
  end
37
37
 
38
- attr_reader :http_response, :headers, :body, :request
38
+ attr_reader :http_response, :headers, :body, :body_bytesize, :request
39
39
 
40
40
  def initialize(http_response:, request:, headers: nil, body: nil)
41
41
  self.http_response = http_response
42
- self.headers = headers || http_response.headers
43
- self.body = body || http_response.body
44
42
  end
45
43
 
46
44
  def attachment_filename
@@ -57,8 +55,8 @@ module TwelvedataRuby
57
55
  @content_type ||= headers["content-type"].match(%r{^.+/([a-z]+).*$})&.send(:[], 1)&.to_sym
58
56
  end
59
57
 
60
- def csv_parser(io_str=nil)
61
- CSV.parse(io_str || body.to_s, headers: true, col_sep: CSV_COL_SEP)
58
+ def csv_parser(io)
59
+ CSV.parse(io, headers: true, col_sep: CSV_COL_SEP)
62
60
  end
63
61
 
64
62
  def csv_dumper
@@ -85,35 +83,39 @@ module TwelvedataRuby
85
83
  parsed_body.is_a?(Hash) ? JSON.dump(parsed_body) : nil
86
84
  end
87
85
 
88
- def json_parser(io_obj=nil)
89
- JSON.parse(io_obj || body.to_s, symbolize_names: true)
86
+ def json_parser(io)
87
+ JSON.parse(io, symbolize_names: true)
90
88
  end
91
89
 
92
90
  def parsed_body
93
- return @parsed_body if @parsed_body
94
- if body.bytesize < BODY_MAX_BYTESIZE
95
- @parsed_body = send(body_parser)
96
- else
97
- tmp_file = Tempfile.new
98
- begin
99
- body.copy_to(tmp_file)
100
- tmp_file.close
91
+ return @parsed_body if @parsed_body || http_response&.body.nil? || http_response&.body.closed?
92
+
93
+ begin
94
+ tmp_file = nil
95
+ if body_bytesize < BODY_MAX_BYTESIZE
96
+ @parsed_body = send(body_parser, http_response.body.to_s)
97
+ else
98
+ tmp_file = Tempfile.new
99
+ http_response.body.copy_to(tmp_file)
101
100
  @parsed_body = send(body_parser, IO.read(tmp_file.path))
102
- ensure
103
- body.close
104
- tmp_file.close
105
- tmp_file.unlink
106
101
  end
102
+ ensure
103
+ http_response.body.close
104
+ tmp_file&.close
105
+ tmp_file&.unlink
107
106
  end
107
+
108
108
  @parsed_body
109
109
  end
110
+ alias body parsed_body
111
+ alias parse_http_response_body parsed_body
110
112
 
111
113
  def parsed_body_dumper
112
114
  CONTENT_TYPE_HANDLERS[content_type][:dumper]
113
115
  end
114
116
 
115
- def plain_parser
116
- body.to_s
117
+ def plain_parser(io=nil)
118
+ io.to_s || http_response.body.to_s
117
119
  end
118
120
 
119
121
  def status_code
@@ -138,6 +140,17 @@ module TwelvedataRuby
138
140
 
139
141
  private
140
142
 
141
- attr_writer :http_response, :headers, :body, :request
143
+ attr_writer :request
144
+
145
+ def http_response=(http_resp)
146
+ @http_response = http_resp
147
+ @body_bytesize = http_resp.body.bytesize
148
+ self.headers = http_response.headers
149
+ parse_http_response_body
150
+ end
151
+
152
+ def headers=(http_resp_headers)
153
+ @headers = http_response&.headers
154
+ end
142
155
  end
143
156
  end
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
31
31
  spec.add_dependency "httpx", "~> 0.14", ">= 0.14.5"
32
32
  spec.add_development_dependency "rake", "~> 13.0", ">= 13.0.0"
33
33
  spec.add_development_dependency "rspec", "~> 3.10", ">= 3.10.0"
34
- spec.add_development_dependency "rubocop", "~> 1.17", ">= 1.17.0"
34
+ spec.add_development_dependency "rubocop", "~> 1.17", ">= 1.17.0"
35
35
  spec.add_development_dependency "simplecov", "~> 0.21", ">= 0.21.2"
36
36
  spec.add_development_dependency "webmock", "~> 3.13", ">= 3.13.0"
37
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twelvedata_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kendo Camajalan, KCD
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-08-10 00:00:00.000000000 Z
11
+ date: 2021-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpx