monri 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.
Files changed (60) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +0 -0
  3. data/Gemfile +24 -0
  4. data/README.md +1 -0
  5. data/Rakefile +8 -0
  6. data/bin/byebug +27 -0
  7. data/bin/coderay +27 -0
  8. data/bin/m +27 -0
  9. data/bin/pry +27 -0
  10. data/bin/rake +27 -0
  11. data/bin/rubocop +27 -0
  12. data/bin/ruby-parse +27 -0
  13. data/bin/ruby-rewrite +27 -0
  14. data/extensions/x86_64-darwin-19/2.6.0/byebug-11.1.3/byebug/byebug.bundle +0 -0
  15. data/extensions/x86_64-darwin-19/2.6.0/byebug-11.1.3/gem.build_complete +0 -0
  16. data/extensions/x86_64-darwin-19/2.6.0/byebug-11.1.3/gem_make.out +1043 -0
  17. data/extensions/x86_64-darwin-19/2.6.0/jaro_winkler-1.5.4/gem.build_complete +0 -0
  18. data/extensions/x86_64-darwin-19/2.6.0/jaro_winkler-1.5.4/gem_make.out +235 -0
  19. data/extensions/x86_64-darwin-19/2.6.0/jaro_winkler-1.5.4/jaro_winkler/jaro_winkler_ext.bundle +0 -0
  20. data/lib/monri/access_tokens.rb +26 -0
  21. data/lib/monri/api_http_response.rb +50 -0
  22. data/lib/monri/client.rb +87 -0
  23. data/lib/monri/config.rb +44 -0
  24. data/lib/monri/customers.rb +24 -0
  25. data/lib/monri/errors.rb +23 -0
  26. data/lib/monri/http_client.rb +57 -0
  27. data/lib/monri/payment_methods.rb +26 -0
  28. data/lib/monri/payments.rb +46 -0
  29. data/lib/monri/response.rb +45 -0
  30. data/lib/monri/transaction.rb +14 -0
  31. data/lib/monri.rb +23 -0
  32. data/monri.gemspec +37 -0
  33. data/specifications/addressable-2.8.1.gemspec +40 -0
  34. data/specifications/ast-2.4.2.gemspec +50 -0
  35. data/specifications/byebug-11.1.3.gemspec +39 -0
  36. data/specifications/coderay-1.1.3.gemspec +25 -0
  37. data/specifications/crack-0.4.5.gemspec +32 -0
  38. data/specifications/hashdiff-1.0.1.gemspec +46 -0
  39. data/specifications/jaro_winkler-1.5.4.gemspec +44 -0
  40. data/specifications/m-1.6.0.gemspec +49 -0
  41. data/specifications/metaclass-0.0.4.gemspec +19 -0
  42. data/specifications/method_source-1.0.0.gemspec +35 -0
  43. data/specifications/minitest-5.16.2.gemspec +41 -0
  44. data/specifications/mocha-0.13.3.gemspec +43 -0
  45. data/specifications/parallel-1.22.1.gemspec +21 -0
  46. data/specifications/parser-3.1.2.1.gemspec +63 -0
  47. data/specifications/power_assert-2.0.2.gemspec +54 -0
  48. data/specifications/pry-0.14.1.gemspec +39 -0
  49. data/specifications/pry-byebug-3.8.0.gemspec +38 -0
  50. data/specifications/public_suffix-5.0.0.gemspec +24 -0
  51. data/specifications/rack-3.0.0.gemspec +45 -0
  52. data/specifications/rainbow-3.1.1.gemspec +33 -0
  53. data/specifications/rake-13.0.6.gemspec +26 -0
  54. data/specifications/rexml-3.2.5.gemspec +42 -0
  55. data/specifications/rubocop-0.80.0.gemspec +59 -0
  56. data/specifications/ruby-progressbar-1.11.0.gemspec +43 -0
  57. data/specifications/test-unit-3.5.5.gemspec +48 -0
  58. data/specifications/unicode-display_width-1.6.1.gemspec +39 -0
  59. data/specifications/webmock-3.18.1.gemspec +85 -0
  60. metadata +115 -0
@@ -0,0 +1,235 @@
1
+ current directory: /Users/jasminsuljic/developing/monri/ruby-sdk-monri/gems/jaro_winkler-1.5.4/ext/jaro_winkler
2
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/bin/ruby -I /Users/jasminsuljic/.rbenv/versions/2.6.3/lib/ruby/2.6.0 -r ./siteconf20221114-79509-guebjb.rb extconf.rb
3
+ creating Makefile
4
+
5
+ current directory: /Users/jasminsuljic/developing/monri/ruby-sdk-monri/gems/jaro_winkler-1.5.4/ext/jaro_winkler
6
+ make "DESTDIR=" clean
7
+
8
+ current directory: /Users/jasminsuljic/developing/monri/ruby-sdk-monri/gems/jaro_winkler-1.5.4/ext/jaro_winkler
9
+ make "DESTDIR="
10
+ compiling adj_matrix.c
11
+ compiling codepoints.c
12
+ compiling jaro.c
13
+ compiling jaro_winkler.c
14
+ jaro_winkler.c:37:45: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
15
+ VALUE weight = rb_hash_aref(opt, ID2SYM(rb_intern("weight"))),
16
+ ^~~~~~~~~~~~~~~~~~~
17
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1826:23: note: expanded from macro 'rb_intern'
18
+ __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
19
+ ^
20
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:413:29: note: expanded from macro 'ID2SYM'
21
+ #define ID2SYM(x) RB_ID2SYM(x)
22
+ ^
23
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:408:33: note: expanded from macro 'RB_ID2SYM'
24
+ #define RB_ID2SYM(x) (rb_id2sym(x))
25
+ ^
26
+ jaro_winkler.c:37:45: note: '{' token is here
27
+ VALUE weight = rb_hash_aref(opt, ID2SYM(rb_intern("weight"))),
28
+ ^~~~~~~~~~~~~~~~~~~
29
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1826:24: note: expanded from macro 'rb_intern'
30
+ __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
31
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
32
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1811:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
33
+ { \
34
+ ^
35
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:413:29: note: expanded from macro 'ID2SYM'
36
+ #define ID2SYM(x) RB_ID2SYM(x)
37
+ ^
38
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:408:33: note: expanded from macro 'RB_ID2SYM'
39
+ #define RB_ID2SYM(x) (rb_id2sym(x))
40
+ ^
41
+ jaro_winkler.c:37:45: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
42
+ VALUE weight = rb_hash_aref(opt, ID2SYM(rb_intern("weight"))),
43
+ ^~~~~~~~~~~~~~~~~~~
44
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1826:24: note: expanded from macro 'rb_intern'
45
+ __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
46
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
47
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1816:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
48
+ }
49
+ ^
50
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:413:29: note: expanded from macro 'ID2SYM'
51
+ #define ID2SYM(x) RB_ID2SYM(x)
52
+ ^
53
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:408:33: note: expanded from macro 'RB_ID2SYM'
54
+ #define RB_ID2SYM(x) (rb_id2sym(x))
55
+ ^
56
+ jaro_winkler.c:37:45: note: ')' token is here
57
+ VALUE weight = rb_hash_aref(opt, ID2SYM(rb_intern("weight"))),
58
+ ^~~~~~~~~~~~~~~~~~~
59
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1826:56: note: expanded from macro 'rb_intern'
60
+ __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
61
+ ^
62
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:413:29: note: expanded from macro 'ID2SYM'
63
+ #define ID2SYM(x) RB_ID2SYM(x)
64
+ ^
65
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:408:33: note: expanded from macro 'RB_ID2SYM'
66
+ #define RB_ID2SYM(x) (rb_id2sym(x))
67
+ ^
68
+ jaro_winkler.c:38:48: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
69
+ threshold = rb_hash_aref(opt, ID2SYM(rb_intern("threshold"))),
70
+ ^~~~~~~~~~~~~~~~~~~~~~
71
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1826:23: note: expanded from macro 'rb_intern'
72
+ __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
73
+ ^
74
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:413:29: note: expanded from macro 'ID2SYM'
75
+ #define ID2SYM(x) RB_ID2SYM(x)
76
+ ^
77
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:408:33: note: expanded from macro 'RB_ID2SYM'
78
+ #define RB_ID2SYM(x) (rb_id2sym(x))
79
+ ^
80
+ jaro_winkler.c:38:48: note: '{' token is here
81
+ threshold = rb_hash_aref(opt, ID2SYM(rb_intern("threshold"))),
82
+ ^~~~~~~~~~~~~~~~~~~~~~
83
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1826:24: note: expanded from macro 'rb_intern'
84
+ __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
85
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
86
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1811:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
87
+ { \
88
+ ^
89
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:413:29: note: expanded from macro 'ID2SYM'
90
+ #define ID2SYM(x) RB_ID2SYM(x)
91
+ ^
92
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:408:33: note: expanded from macro 'RB_ID2SYM'
93
+ #define RB_ID2SYM(x) (rb_id2sym(x))
94
+ ^
95
+ jaro_winkler.c:38:48: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
96
+ threshold = rb_hash_aref(opt, ID2SYM(rb_intern("threshold"))),
97
+ ^~~~~~~~~~~~~~~~~~~~~~
98
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1826:24: note: expanded from macro 'rb_intern'
99
+ __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
100
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
101
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1816:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
102
+ }
103
+ ^
104
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:413:29: note: expanded from macro 'ID2SYM'
105
+ #define ID2SYM(x) RB_ID2SYM(x)
106
+ ^
107
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:408:33: note: expanded from macro 'RB_ID2SYM'
108
+ #define RB_ID2SYM(x) (rb_id2sym(x))
109
+ ^
110
+ jaro_winkler.c:38:48: note: ')' token is here
111
+ threshold = rb_hash_aref(opt, ID2SYM(rb_intern("threshold"))),
112
+ ^~~~~~~~~~~~~~~~~~~~~~
113
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1826:56: note: expanded from macro 'rb_intern'
114
+ __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
115
+ ^
116
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:413:29: note: expanded from macro 'ID2SYM'
117
+ #define ID2SYM(x) RB_ID2SYM(x)
118
+ ^
119
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:408:33: note: expanded from macro 'RB_ID2SYM'
120
+ #define RB_ID2SYM(x) (rb_id2sym(x))
121
+ ^
122
+ jaro_winkler.c:39:50: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
123
+ ignore_case = rb_hash_aref(opt, ID2SYM(rb_intern("ignore_case"))),
124
+ ^~~~~~~~~~~~~~~~~~~~~~~~
125
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1826:23: note: expanded from macro 'rb_intern'
126
+ __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
127
+ ^
128
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:413:29: note: expanded from macro 'ID2SYM'
129
+ #define ID2SYM(x) RB_ID2SYM(x)
130
+ ^
131
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:408:33: note: expanded from macro 'RB_ID2SYM'
132
+ #define RB_ID2SYM(x) (rb_id2sym(x))
133
+ ^
134
+ jaro_winkler.c:39:50: note: '{' token is here
135
+ ignore_case = rb_hash_aref(opt, ID2SYM(rb_intern("ignore_case"))),
136
+ ^~~~~~~~~~~~~~~~~~~~~~~~
137
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1826:24: note: expanded from macro 'rb_intern'
138
+ __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
139
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
140
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1811:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
141
+ { \
142
+ ^
143
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:413:29: note: expanded from macro 'ID2SYM'
144
+ #define ID2SYM(x) RB_ID2SYM(x)
145
+ ^
146
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:408:33: note: expanded from macro 'RB_ID2SYM'
147
+ #define RB_ID2SYM(x) (rb_id2sym(x))
148
+ ^
149
+ jaro_winkler.c:39:50: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
150
+ ignore_case = rb_hash_aref(opt, ID2SYM(rb_intern("ignore_case"))),
151
+ ^~~~~~~~~~~~~~~~~~~~~~~~
152
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1826:24: note: expanded from macro 'rb_intern'
153
+ __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
154
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
155
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1816:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
156
+ }
157
+ ^
158
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:413:29: note: expanded from macro 'ID2SYM'
159
+ #define ID2SYM(x) RB_ID2SYM(x)
160
+ ^
161
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:408:33: note: expanded from macro 'RB_ID2SYM'
162
+ #define RB_ID2SYM(x) (rb_id2sym(x))
163
+ ^
164
+ jaro_winkler.c:39:50: note: ')' token is here
165
+ ignore_case = rb_hash_aref(opt, ID2SYM(rb_intern("ignore_case"))),
166
+ ^~~~~~~~~~~~~~~~~~~~~~~~
167
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1826:56: note: expanded from macro 'rb_intern'
168
+ __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
169
+ ^
170
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:413:29: note: expanded from macro 'ID2SYM'
171
+ #define ID2SYM(x) RB_ID2SYM(x)
172
+ ^
173
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:408:33: note: expanded from macro 'RB_ID2SYM'
174
+ #define RB_ID2SYM(x) (rb_id2sym(x))
175
+ ^
176
+ jaro_winkler.c:40:48: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
177
+ adj_table = rb_hash_aref(opt, ID2SYM(rb_intern("adj_table")));
178
+ ^~~~~~~~~~~~~~~~~~~~~~
179
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1826:23: note: expanded from macro 'rb_intern'
180
+ __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
181
+ ^
182
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:413:29: note: expanded from macro 'ID2SYM'
183
+ #define ID2SYM(x) RB_ID2SYM(x)
184
+ ^
185
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:408:33: note: expanded from macro 'RB_ID2SYM'
186
+ #define RB_ID2SYM(x) (rb_id2sym(x))
187
+ ^
188
+ jaro_winkler.c:40:48: note: '{' token is here
189
+ adj_table = rb_hash_aref(opt, ID2SYM(rb_intern("adj_table")));
190
+ ^~~~~~~~~~~~~~~~~~~~~~
191
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1826:24: note: expanded from macro 'rb_intern'
192
+ __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
193
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
194
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1811:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
195
+ { \
196
+ ^
197
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:413:29: note: expanded from macro 'ID2SYM'
198
+ #define ID2SYM(x) RB_ID2SYM(x)
199
+ ^
200
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:408:33: note: expanded from macro 'RB_ID2SYM'
201
+ #define RB_ID2SYM(x) (rb_id2sym(x))
202
+ ^
203
+ jaro_winkler.c:40:48: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
204
+ adj_table = rb_hash_aref(opt, ID2SYM(rb_intern("adj_table")));
205
+ ^~~~~~~~~~~~~~~~~~~~~~
206
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1826:24: note: expanded from macro 'rb_intern'
207
+ __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
208
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
209
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1816:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
210
+ }
211
+ ^
212
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:413:29: note: expanded from macro 'ID2SYM'
213
+ #define ID2SYM(x) RB_ID2SYM(x)
214
+ ^
215
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:408:33: note: expanded from macro 'RB_ID2SYM'
216
+ #define RB_ID2SYM(x) (rb_id2sym(x))
217
+ ^
218
+ jaro_winkler.c:40:48: note: ')' token is here
219
+ adj_table = rb_hash_aref(opt, ID2SYM(rb_intern("adj_table")));
220
+ ^~~~~~~~~~~~~~~~~~~~~~
221
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:1826:56: note: expanded from macro 'rb_intern'
222
+ __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
223
+ ^
224
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:413:29: note: expanded from macro 'ID2SYM'
225
+ #define ID2SYM(x) RB_ID2SYM(x)
226
+ ^
227
+ /Users/jasminsuljic/.rbenv/versions/2.6.3/include/ruby-2.6.0/ruby/ruby.h:408:33: note: expanded from macro 'RB_ID2SYM'
228
+ #define RB_ID2SYM(x) (rb_id2sym(x))
229
+ ^
230
+ 8 warnings generated.
231
+ linking shared-object jaro_winkler/jaro_winkler_ext.bundle
232
+
233
+ current directory: /Users/jasminsuljic/developing/monri/ruby-sdk-monri/gems/jaro_winkler-1.5.4/ext/jaro_winkler
234
+ make "DESTDIR=" install
235
+ /usr/bin/install -c -m 0755 jaro_winkler_ext.bundle ./.gem.20221114-79509-56od1p/jaro_winkler
@@ -0,0 +1,26 @@
1
+ module Monri
2
+ class AccessTokens
3
+
4
+ # @return [Monri::Config]
5
+ attr_accessor :config
6
+
7
+ # @return [Monri::HttpClient]
8
+ attr_writer :http_client
9
+
10
+ def create(options)
11
+ body = {
12
+ client_id: config.authenticity_token,
13
+ client_secret: config.merchant_key,
14
+ grant_type: 'client_credentials',
15
+ scopes: options.delete(:scopes) || []
16
+ }
17
+ response = @http_client.post('/v2/oauth', body)
18
+ # TODO: do we set exception?
19
+ if response.success?
20
+ response.body
21
+ else
22
+ # TODO: handle this case
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,50 @@
1
+ module Monri
2
+ class ApiHttpResponse
3
+
4
+ # @return [Hash]
5
+ attr_reader :body
6
+ # @return [String]
7
+ attr_reader :response_body
8
+ # @return [Integer]
9
+ attr_reader :code
10
+ # @return [Hash]
11
+ attr_reader :headers
12
+ # @return [Exception]
13
+ attr_reader :exception
14
+
15
+ # @param [Net::HTTPResponse] response
16
+ # @return [Monri::ApiHttpResponse]
17
+ def from_net(response)
18
+
19
+ @code = response.code.to_i
20
+ @headers = response.each_header.to_h
21
+ @response_body = response.body
22
+ @body = begin
23
+ JSON.parse(response.body, symbolize_names: true)
24
+ rescue
25
+ @exception = create_exception('JSON parsing failed')
26
+ nil
27
+ end
28
+ unless success?
29
+ @exception = create_exception("Request failed, got status code=#{code}")
30
+ end
31
+ self
32
+ end
33
+
34
+ def success?
35
+ exception == nil && code >= 200 && code < 300
36
+ end
37
+
38
+ def failed?
39
+ exception != nil
40
+ end
41
+
42
+ private
43
+
44
+ # @param [String] message
45
+ def create_exception(message)
46
+ Monri::Errors::HttpRequestError.new(message, code: @code, body: @response_body, headers: @headers)
47
+ end
48
+
49
+ end
50
+ end
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'forwardable'
4
+ module Monri
5
+ class Client
6
+ extend Forwardable
7
+
8
+ def initialize
9
+ @config = Monri::Config.new
10
+ end
11
+
12
+ def_delegators :@config, :merchant_key, :authenticity_token, :environment
13
+ def_delegators :@config, :merchant_key=, :authenticity_token=, :environment=
14
+
15
+ # @return [Monri::Payments]
16
+ def payments
17
+ @payments ||= create_payment_api
18
+ end
19
+
20
+ # @return [Monri::AccessTokens]
21
+ def access_tokens
22
+ @access_tokens ||= create_access_tokens_api
23
+ end
24
+
25
+ # @return [Monri::Customers]
26
+ def customers
27
+ @customers ||= create_customers_api
28
+ end
29
+
30
+ # @return [Monri::PaymentMethods]
31
+ def payment_methods
32
+ @payment_methods ||= create_payment_methods_api
33
+ end
34
+
35
+ private
36
+
37
+ def ensure_config_set!
38
+ unless @config.configured?
39
+ raise Monri::Config::InvalidConfiguration, 'Configuration is not set! Did you call .merchant_key=merchant_key, .authenticity_token=authenticity_token, .environment=environment'
40
+ end
41
+ end
42
+
43
+ def http_client
44
+ if @http_client == nil
45
+ @http_client = Monri::HttpClient.new
46
+ @http_client.config = @config
47
+ end
48
+
49
+ @http_client
50
+ end
51
+
52
+ def create_customers_api
53
+ ensure_config_set!
54
+ rv = Monri::Customers.new
55
+ rv.config = @config
56
+ rv.http_client = http_client
57
+ rv.access_tokens = access_tokens
58
+ rv
59
+ end
60
+
61
+ def create_access_tokens_api
62
+ ensure_config_set!
63
+ rv = Monri::AccessTokens.new
64
+ rv.config = @config
65
+ rv.http_client = http_client
66
+ rv
67
+ end
68
+
69
+ def create_payment_api
70
+ ensure_config_set!
71
+ rv = Monri::Payments.new
72
+ rv.config = @config
73
+ rv.http_client = http_client
74
+ rv.access_tokens = access_tokens
75
+ rv
76
+ end
77
+
78
+ def create_payment_methods_api
79
+ ensure_config_set!
80
+ rv = Monri::PaymentMethods.new
81
+ rv.config = @config
82
+ rv.http_client = http_client
83
+ rv.access_tokens = access_tokens
84
+ rv
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Monri
4
+ class Config
5
+ attr_accessor :merchant_key
6
+ attr_accessor :authenticity_token
7
+
8
+ SUPPORTED_ENVS = %w[test production].freeze
9
+
10
+ # @return [String]
11
+ def base_api_url
12
+ if environment == 'test'
13
+ 'https://ipgtest.monri.com'
14
+ elsif environment == 'production'
15
+ 'https://ipg.monri.com'
16
+ else
17
+ raise ArgumentError, "Environment=#{environment} not supported"
18
+ end
19
+ end
20
+
21
+ def self.default_config
22
+ rv = Config.new
23
+ rv.environment = :test
24
+ rv
25
+ end
26
+
27
+ attr_reader :environment
28
+
29
+ def environment=(val)
30
+ val = val.nil? ? nil : val.to_s
31
+ unless SUPPORTED_ENVS.include?(val)
32
+ raise Monri::Config::InvalidConfiguration, "Environment='#{val}' is not supported environment"
33
+ end
34
+
35
+ @environment = val
36
+ end
37
+
38
+ def configured?
39
+ !merchant_key.nil? && !authenticity_token.nil? && !environment.nil?
40
+ end
41
+
42
+ class InvalidConfiguration < StandardError; end
43
+ end
44
+ end
@@ -0,0 +1,24 @@
1
+ module Monri
2
+ class Customers
3
+ # @return [Monri::Config]
4
+ attr_accessor :config
5
+ # @return [Monri::HttpClient]
6
+ attr_writer :http_client
7
+ # @return [Monri::AccessTokens]
8
+ attr_writer :access_tokens
9
+
10
+ # @param [Hash] options
11
+ def create(options)
12
+ access_token = @access_tokens.create(scopes: ['customers'])[:access_token]
13
+ response = @http_client.post('/v2/customers', options, headers: { 'Authorization' => "Bearer #{access_token}" })
14
+ if response.success?
15
+ response.body
16
+ else
17
+ # TODO: handle this case
18
+ end
19
+ rescue StandardError => e
20
+ # TODO: handle this case
21
+ nil
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,23 @@
1
+ module Monri
2
+ module Errors
3
+ class HttpRequestError < StandardError
4
+
5
+ # @return [Integer]
6
+ attr_reader :code
7
+ # @return [String, NilClass]
8
+ attr_reader :body
9
+
10
+ # @return [Hash]
11
+ attr_reader :headers
12
+
13
+ # @param [String] message
14
+ # @param [Hash] options
15
+ def initialize(message, options)
16
+ super(message)
17
+ @code = options.delete(:code) || 500
18
+ @body = options.delete(:body)
19
+ @headers = options.delete(:headers)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,57 @@
1
+ module Monri
2
+ class HttpClient
3
+
4
+ # @return [Monri::Config]
5
+ attr_accessor :config
6
+
7
+ # @param [String] url
8
+ # @param [Hash] options
9
+ # @return [Monri::ApiHttpResponse]
10
+ def get(url, options = {})
11
+ # TODO: validate
12
+ uri = build_url(url)
13
+ req_headers = options.delete(:headers) || {}
14
+ headers = {
15
+ 'Accept': 'application/json',
16
+ 'x-request-id': SecureRandom.hex
17
+ }.merge(req_headers)
18
+ # Create the HTTP objects
19
+ http = Net::HTTP.new(uri.host, uri.port)
20
+ http.use_ssl = true
21
+ request = Net::HTTP::Get.new(uri.request_uri, headers)
22
+ # Send the request
23
+ response = http.request(request)
24
+ ApiHttpResponse.new.from_net(response)
25
+ end
26
+
27
+ # @param [String] url
28
+ # @param [Hash] body
29
+ # @param [Hash] options
30
+ # @return [Monri::ApiHttpResponse]
31
+ def post(url, body, options = {})
32
+ # TODO: validate
33
+ uri = build_url(url)
34
+ req_headers = options.delete(:headers) || {}
35
+ headers = {
36
+ 'Content-Type': 'application/json',
37
+ 'Accept': 'application/json',
38
+ 'x-request-id': SecureRandom.hex
39
+ }.merge(req_headers)
40
+ # Create the HTTP objects
41
+ http = Net::HTTP.new(uri.host, uri.port)
42
+ http.use_ssl = true
43
+ request = Net::HTTP::Post.new(uri.request_uri, headers)
44
+ request.body = body.to_json
45
+ # Send the request
46
+ response = http.request(request)
47
+ ApiHttpResponse.new.from_net(response)
48
+ end
49
+
50
+ # @param [String] url
51
+ # @return [URI]
52
+ def build_url(url)
53
+ URI.parse("#{config.base_api_url}#{url}")
54
+ end
55
+
56
+ end
57
+ end
@@ -0,0 +1,26 @@
1
+ module Monri
2
+ class PaymentMethods
3
+ # @return [Monri::Config]
4
+ attr_accessor :config
5
+ # @return [Monri::HttpClient]
6
+ attr_writer :http_client
7
+
8
+ # @return [Monri::AccessTokens]
9
+ attr_writer :access_tokens
10
+
11
+ # @param [Hash] options
12
+ def list(options = {})
13
+ access_token = @access_tokens.create(scopes: ['payment-methods'])[:access_token]
14
+ response = @http_client.get('/v2/payment-methods', headers: { 'Authorization' => "Bearer #{access_token}" })
15
+ if response.success?
16
+ response.body
17
+ else
18
+ # TODO: handle this case
19
+ end
20
+
21
+ rescue StandardError => e
22
+ # TODO: handle this case
23
+ nil
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Monri
4
+ class Payments
5
+ # @return [Monri::Config]
6
+ attr_accessor :config
7
+ # @return [Monri::HttpClient]
8
+ attr_writer :http_client
9
+
10
+ # @return [Monri::AccessTokens]
11
+ attr_writer :access_tokens
12
+
13
+ # @param [Hash] options
14
+ def create(options)
15
+ Response.create do
16
+ access_token = @access_tokens.create(scopes: ['payments'])[:access_token]
17
+ response = @http_client.post('/v2/payment/new', options, headers: { 'Authorization' => "Bearer #{access_token}" })
18
+ if response.failed?
19
+ raise response.exception
20
+ elsif response.success?
21
+ response.body
22
+ else
23
+ nil
24
+ end
25
+ end
26
+ end
27
+
28
+ # @param [String] id
29
+ # @return [Response] id
30
+ def status(id)
31
+ Response.create do
32
+ if id.nil? || !id.is_a?(String)
33
+ raise ArgumentError('Id should be a string')
34
+ end
35
+
36
+ access_token = @access_tokens.create(scopes: ['payments'])[:access_token]
37
+ response = @http_client.post("/v2/payment/#{id}/status", options, headers: { 'Authorization' => "Bearer #{access_token}" })
38
+ if response.success?
39
+ response.body
40
+ else
41
+ # TODO: handle this case
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Monri
4
+ class Response
5
+ # @return [Object]
6
+ attr_accessor :result
7
+ # @return [Exception]
8
+ attr_accessor :exception
9
+
10
+ # @return [Monri::Response]
11
+ # @param [Object] result
12
+ def self.result(result)
13
+ raise ArgumentError, 'Argument result is nil' if result.nil?
14
+
15
+ rv = Response.new
16
+ rv.result = result
17
+ rv
18
+ end
19
+
20
+ def success?
21
+ exception == nil
22
+ end
23
+
24
+ def failed?
25
+ exception != nil
26
+ end
27
+
28
+ def self.create
29
+ raise ArgumentError, 'Provide a block' unless block_given?
30
+
31
+ begin
32
+ result(yield)
33
+ rescue StandardError => e
34
+ exception(e)
35
+ end
36
+ end
37
+
38
+ # @param [Exception] exception
39
+ def self.exception(exception)
40
+ rv = Response.new
41
+ rv.exception = exception
42
+ rv
43
+ end
44
+ end
45
+ end