starkinfra 0.0.2 → 0.0.3

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 (50) hide show
  1. checksums.yaml +4 -4
  2. data/lib/creditnote/creditnote.rb +561 -0
  3. data/lib/creditnote/log.rb +126 -0
  4. data/lib/event/attempt.rb +126 -0
  5. data/lib/event/event.rb +125 -7
  6. data/lib/issuingauthorization/issuingauthorization.rb +141 -0
  7. data/lib/issuingbalance/issuingbalance.rb +55 -0
  8. data/lib/issuingbin/issuingbin.rb +89 -0
  9. data/lib/issuingcard/issuingcard.rb +260 -0
  10. data/lib/issuingcard/log.rb +123 -0
  11. data/lib/issuingholder/issuingholder.rb +206 -0
  12. data/lib/issuingholder/log.rb +123 -0
  13. data/lib/issuinginvoice/issuinginvoice.rb +152 -0
  14. data/lib/issuinginvoice/log.rb +120 -0
  15. data/lib/issuingpurchase/issuingpurchase.rb +209 -0
  16. data/lib/issuingpurchase/log.rb +131 -0
  17. data/lib/issuingrule/issuingrule.rb +81 -0
  18. data/lib/issuingtransaction/issuingtransaction.rb +136 -0
  19. data/lib/issuingwithdrawal/issuingwithdrawal.rb +153 -0
  20. data/lib/pixbalance/pixbalance.rb +13 -13
  21. data/lib/pixchargeback/log.rb +129 -0
  22. data/lib/pixchargeback/pixchargeback.rb +225 -0
  23. data/lib/pixclaim/log.rb +135 -0
  24. data/lib/pixclaim/pixclaim.rb +225 -0
  25. data/lib/pixdirector/pixdirector.rb +76 -0
  26. data/lib/pixdomain/certificate.rb +30 -0
  27. data/lib/pixdomain/pixdomain.rb +58 -0
  28. data/lib/pixinfraction/log.rb +129 -0
  29. data/lib/pixinfraction/pixinfraction.rb +212 -0
  30. data/lib/pixkey/log.rb +128 -0
  31. data/lib/pixkey/pixkey.rb +239 -0
  32. data/lib/pixrequest/log.rb +16 -16
  33. data/lib/pixrequest/pixrequest.rb +66 -67
  34. data/lib/pixreversal/log.rb +13 -12
  35. data/lib/pixreversal/pixreversal.rb +72 -71
  36. data/lib/pixstatement/pixstatement.rb +22 -23
  37. data/lib/starkinfra.rb +32 -2
  38. data/lib/user/organization.rb +54 -0
  39. data/lib/user/project.rb +37 -0
  40. data/lib/user/user.rb +20 -0
  41. data/lib/utils/api.rb +10 -2
  42. data/lib/utils/bacenid.rb +19 -0
  43. data/lib/utils/checks.rb +2 -3
  44. data/lib/utils/endtoendid.rb +11 -0
  45. data/lib/utils/parse.rb +13 -13
  46. data/lib/utils/request.rb +1 -1
  47. data/lib/utils/rest.rb +7 -5
  48. data/lib/utils/returnid.rb +11 -0
  49. data/lib/webhook/webhook.rb +124 -0
  50. metadata +45 -24
data/lib/utils/parse.rb CHANGED
@@ -5,28 +5,30 @@ require('starkbank-ecdsa')
5
5
  require_relative('api')
6
6
  require_relative('cache')
7
7
  require_relative('request')
8
- require_relative('../error')\
9
-
8
+ require_relative('../error')
10
9
 
11
10
  module StarkInfra
12
11
  module Utils
13
12
  module Parse
14
13
  def self.parse_and_verify(content:, signature:, user: nil, resource:, key: nil)
15
- event = StarkInfra::Utils::API.from_api_json(resource[:resource_maker], JSON.parse(content))
16
- if key != nil
17
- event = StarkInfra::Utils::API.from_api_json(resource[:resource_maker], JSON.parse(content)[key])
18
- end
14
+ json = JSON.parse(content)
15
+ json = JSON.parse(content)[key] unless key.nil?
16
+ event = StarkInfra::Utils::API.from_api_json(resource[:resource_maker], json)
19
17
 
20
18
  begin
21
19
  signature = EllipticCurve::Signature.fromBase64(signature)
22
20
  rescue
23
21
  raise(StarkInfra::Error::InvalidSignatureError, 'The provided signature is not valid')
24
22
  end
25
-
26
- return event if verify_signature(content: content, signature: signature, user: user)
27
-
28
- return event if verify_signature(content: content, signature: signature, user: user, refresh: true)
29
-
23
+
24
+ if verify_signature(content: content, signature: signature, user: user)
25
+ return event
26
+ end
27
+
28
+ if verify_signature(content: content, signature: signature, user: user, refresh: true)
29
+ return event
30
+ end
31
+
30
32
  raise(StarkInfra::Error::InvalidSignatureError, 'The provided signature and content do not match the Stark Infra public key')
31
33
  end
32
34
 
@@ -46,5 +48,3 @@ module StarkInfra
46
48
  end
47
49
  end
48
50
  end
49
-
50
-
data/lib/utils/request.rb CHANGED
@@ -61,7 +61,7 @@ module StarkInfra
61
61
  req['Access-Time'] = access_time
62
62
  req['Access-Signature'] = signature
63
63
  req['Content-Type'] = 'application/json'
64
- req['User-Agent'] = "Ruby-#{RUBY_VERSION}-SDK-infra-0.0.2"
64
+ req['User-Agent'] = "Ruby-#{RUBY_VERSION}-SDK-Infra-0.0.3"
65
65
  req['Accept-Language'] = language
66
66
 
67
67
  request = Net::HTTP.start(uri.hostname, use_ssl: true) { |http| http.request(req) }
data/lib/utils/rest.rb CHANGED
@@ -50,26 +50,27 @@ module StarkInfra
50
50
  end
51
51
  end
52
52
 
53
- def self.get_id(resource_name:, resource_maker:, id:, user: nil)
53
+ def self.get_id(resource_name:, resource_maker:, id:, user: nil, **query)
54
54
  json = StarkInfra::Utils::Request.fetch(
55
55
  method: 'GET',
56
56
  path: "#{StarkInfra::Utils::API.endpoint(resource_name)}/#{id}",
57
+ query: query,
57
58
  user: user
58
59
  ).json
59
60
  entity = json[StarkInfra::Utils::API.last_name(resource_name)]
60
61
  StarkInfra::Utils::API.from_api_json(resource_maker, entity)
61
62
  end
62
63
 
63
- def self.get_content(resource_name:, resource_maker:, sub_resource_name:, id:, user: nil, **query)
64
+ def self.get_content(resource_name:, sub_resource_name:, id:, user: nil, **query)
64
65
  StarkInfra::Utils::Request.fetch(
65
66
  method: 'GET',
66
67
  path: "#{StarkInfra::Utils::API.endpoint(resource_name)}/#{id}/#{sub_resource_name}",
67
- query: StarkInfra::Utils::API.cast_json_to_api_format(query),
68
+ query: query,
68
69
  user: user
69
70
  ).content
70
71
  end
71
72
 
72
- def self.post(resource_name:, resource_maker:, entities:, user: nil)
73
+ def self.post(resource_name:, resource_maker:, entities:, user: nil, **query)
73
74
  jsons = []
74
75
  entities.each do |entity|
75
76
  jsons << StarkInfra::Utils::API.api_json(entity)
@@ -79,6 +80,7 @@ module StarkInfra
79
80
  method: 'POST',
80
81
  path: StarkInfra::Utils::API.endpoint(resource_name),
81
82
  payload: payload,
83
+ query: query,
82
84
  user: user
83
85
  ).json
84
86
  returned_jsons = json[StarkInfra::Utils::API.last_name_plural(resource_name)]
@@ -126,7 +128,7 @@ module StarkInfra
126
128
  method: 'GET',
127
129
  path: "#{StarkInfra::Utils::API.endpoint(resource_name)}/#{id}/#{StarkInfra::Utils::API.endpoint(sub_resource_name)}",
128
130
  user: user,
129
- query: StarkInfra::Utils::API.cast_json_to_api_format(query)
131
+ query: query
130
132
  ).json
131
133
  entity = json[StarkInfra::Utils::API.last_name(sub_resource_name)]
132
134
  StarkInfra::Utils::API.from_api_json(sub_resource_maker, entity)
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: false
2
+
3
+ require_relative('bacenid')
4
+
5
+ module StarkInfra
6
+ module ReturnId
7
+ def self.create(bank_code)
8
+ 'D' << StarkInfra::Utils::BacenId._create(bank_code)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,124 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative('../utils/resource')
4
+ require_relative('../utils/rest')
5
+ require_relative('../utils/checks')
6
+
7
+ module StarkInfra
8
+ # # Webhook subscription object
9
+ #
10
+ # A Webhook is used to subscribe to notification events on a user-selected endpoint.
11
+ # Currently available services for subscription are contract, credit-note, signer, issuing-card, issuing-invoice, issuing-purchase, pix-request.in, pix-request.out, pix-reversal.in, pix-reversal.out, pix-claim, pix-key, pix-chargeback, pix-infraction.
12
+ #
13
+ # ## Parameters (required):
14
+ # - url [string]: URL that will be notified when an event occurs.
15
+ # - subscriptions [list of strings]: list of any non-empty combination of the available services. ex: ['contract', 'credit-note', 'signer', 'issuing-card', 'issuing-invoice', 'issuing-purchase', 'pix-request.in', 'pix-request.out', 'pix-reversal.in', 'pix-reversal.out', 'pix-claim', 'pix-key', 'pix-chargeback', 'pix-infraction']
16
+ #
17
+ # ## Attributes:
18
+ # - id [string]: unique id returned when the webhook is created. ex: '5656565656565656'
19
+ class Webhook < StarkInfra::Utils::Resource
20
+ attr_reader :url, :subscriptions, :id
21
+ def initialize(url:, subscriptions:, id: nil)
22
+ super(id)
23
+ @url = url
24
+ @subscriptions = subscriptions
25
+ end
26
+
27
+ # # Create Webhook subscription
28
+ #
29
+ # Send a single Webhook subscription for creation in the Stark Infra API
30
+ #
31
+ # ## Parameters (required):
32
+ # - webhook [Webhook object or hash]: Webhook subscription to be created to receive Events. ex: Webhook.new()
33
+ #
34
+ # ## Parameters (optional):
35
+ # - user [Organization/Project object, default nil]: Organization or Project object. Not necessary if StarkInfra.user was set before function call
36
+ #
37
+ # ## Return:
38
+ # - Webhook object with updated attributes
39
+ def self.create(webhook, user: nil)
40
+ StarkInfra::Utils::Rest.post_single(entity: webhook, user: user, **resource)
41
+ end
42
+
43
+ # # Retrieve a specific Webhook subscription
44
+ #
45
+ # Receive a single Webhook subscription object previously created in the Stark Infra API by passing its id
46
+ #
47
+ # ## Parameters (required):
48
+ # - id [string]: object unique id. ex: '5656565656565656'
49
+ #
50
+ # ## Parameters (optional):
51
+ # - user [Organization/Project object, default nil]: Organization or Project object. Not necessary if StarkInfra.user was set before function call
52
+ #
53
+ # ## Return:
54
+ # - Webhook object with updated attributes
55
+ def self.get(id, user: nil)
56
+ StarkInfra::Utils::Rest.get_id(id: id, user: user, **resource)
57
+ end
58
+
59
+ # # Retrieve Webhook subscriptions
60
+ #
61
+ # Receive a generator of Webhook subscription objects previously created in the Stark Infra API
62
+ #
63
+ # ## Parameters (optional):
64
+ # - limit [integer, default nil]: maximum number of objects to be retrieved. Unlimited if nil. ex: 35
65
+ # - user [Organization/Project object, default nil]: Organization or Project object. Not necessary if StarkInfra.user was set before function call
66
+ #
67
+ # ## Return:
68
+ # - generator of Webhook objects with updated attributes
69
+ def self.query(limit: nil, user: nil)
70
+ StarkInfra::Utils::Rest.get_stream(user: user, limit: limit, **resource)
71
+ end
72
+
73
+ # # Retrieve paged Webhooks
74
+ #
75
+ # Receive a list of up to 100 Webhook objects previously created in the Stark Infra API and the cursor to the next page.
76
+ # Use this function instead of query if you want to manually page your requests.
77
+ #
78
+ # ## Parameters (optional):
79
+ # - cursor [string, default nil]: cursor returned on the previous page function call
80
+ # - limit [integer, default 100]: maximum number of objects to be retrieved. Max = 100. ex: 35
81
+ # - user [Organization/Project object, default nil]: Organization or Project object. Not necessary if StarkInfra.user was set before function call
82
+ #
83
+ # ## Return:
84
+ # - list of Webhook objects with updated attributes
85
+ # - cursor to retrieve the next page of Webhook objects
86
+ def self.page(cursor: nil, limit: nil, user: nil)
87
+ return StarkInfra::Utils::Rest.get_page(
88
+ cursor: cursor,
89
+ limit: limit,
90
+ user: user,
91
+ **resource
92
+ )
93
+ end
94
+
95
+ # # Delete a Webhook entity
96
+ #
97
+ # Delete a Webhook entity previously created in the Stark Infra API
98
+ #
99
+ # ## Parameters (required):
100
+ # - id [string]: Webhook unique id. ex: '5656565656565656'
101
+ #
102
+ # ## Parameters (optional):
103
+ # - user [Organization/Project object, default nil]: Organization or Project object. Not necessary if StarkInfra.user was set before function call
104
+ #
105
+ # ## Return:
106
+ # - deleted Webhook object
107
+ def self.delete(id, user: nil)
108
+ StarkInfra::Utils::Rest.delete_id(id: id, user: user, **resource)
109
+ end
110
+
111
+ def self.resource
112
+ {
113
+ resource_name: 'Webhook',
114
+ resource_maker: proc { |json|
115
+ Webhook.new(
116
+ id: json['id'],
117
+ url: json['url'],
118
+ subscriptions: json['subscriptions']
119
+ )
120
+ }
121
+ }
122
+ end
123
+ end
124
+ end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: starkinfra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - starkinfra
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-24 00:00:00.000000000 Z
11
+ date: 2022-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: starkbank
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 2.6.0
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: 2.6.0
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: starkbank-ecdsa
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +30,14 @@ dependencies:
44
30
  requirements:
45
31
  - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: 5.14.1
33
+ version: 5.14.4
48
34
  type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - "~>"
53
39
  - !ruby/object:Gem::Version
54
- version: 5.14.1
40
+ version: 5.14.4
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: rake
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -80,38 +66,73 @@ dependencies:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
68
  version: '0.81'
83
- description:
84
- email:
69
+ description:
70
+ email:
85
71
  executables: []
86
72
  extensions: []
87
73
  extra_rdoc_files: []
88
74
  files:
75
+ - lib/creditnote/creditnote.rb
76
+ - lib/creditnote/log.rb
89
77
  - lib/error.rb
78
+ - lib/event/attempt.rb
90
79
  - lib/event/event.rb
80
+ - lib/issuingauthorization/issuingauthorization.rb
81
+ - lib/issuingbalance/issuingbalance.rb
82
+ - lib/issuingbin/issuingbin.rb
83
+ - lib/issuingcard/issuingcard.rb
84
+ - lib/issuingcard/log.rb
85
+ - lib/issuingholder/issuingholder.rb
86
+ - lib/issuingholder/log.rb
87
+ - lib/issuinginvoice/issuinginvoice.rb
88
+ - lib/issuinginvoice/log.rb
89
+ - lib/issuingpurchase/issuingpurchase.rb
90
+ - lib/issuingpurchase/log.rb
91
+ - lib/issuingrule/issuingrule.rb
92
+ - lib/issuingtransaction/issuingtransaction.rb
93
+ - lib/issuingwithdrawal/issuingwithdrawal.rb
91
94
  - lib/key.rb
92
95
  - lib/pixbalance/pixbalance.rb
96
+ - lib/pixchargeback/log.rb
97
+ - lib/pixchargeback/pixchargeback.rb
98
+ - lib/pixclaim/log.rb
99
+ - lib/pixclaim/pixclaim.rb
100
+ - lib/pixdirector/pixdirector.rb
101
+ - lib/pixdomain/certificate.rb
102
+ - lib/pixdomain/pixdomain.rb
103
+ - lib/pixinfraction/log.rb
104
+ - lib/pixinfraction/pixinfraction.rb
105
+ - lib/pixkey/log.rb
106
+ - lib/pixkey/pixkey.rb
93
107
  - lib/pixrequest/log.rb
94
108
  - lib/pixrequest/pixrequest.rb
95
109
  - lib/pixreversal/log.rb
96
110
  - lib/pixreversal/pixreversal.rb
97
111
  - lib/pixstatement/pixstatement.rb
98
112
  - lib/starkinfra.rb
113
+ - lib/user/organization.rb
114
+ - lib/user/project.rb
115
+ - lib/user/user.rb
99
116
  - lib/utils/api.rb
117
+ - lib/utils/bacenid.rb
100
118
  - lib/utils/cache.rb
101
119
  - lib/utils/case.rb
102
120
  - lib/utils/checks.rb
121
+ - lib/utils/endtoendid.rb
103
122
  - lib/utils/environment.rb
104
123
  - lib/utils/parse.rb
105
124
  - lib/utils/request.rb
106
125
  - lib/utils/resource.rb
107
126
  - lib/utils/rest.rb
127
+ - lib/utils/returnid.rb
108
128
  - lib/utils/sub_resource.rb
109
129
  - lib/utils/url.rb
130
+ - lib/webhook/webhook.rb
110
131
  homepage: https://github.com/starkinfra/sdk-ruby
111
132
  licenses:
112
133
  - MIT
113
134
  metadata: {}
114
- post_install_message:
135
+ post_install_message:
115
136
  rdoc_options: []
116
137
  require_paths:
117
138
  - lib
@@ -126,8 +147,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
147
  - !ruby/object:Gem::Version
127
148
  version: '0'
128
149
  requirements: []
129
- rubygems_version: 3.1.4
130
- signing_key:
150
+ rubygems_version: 3.0.3.1
151
+ signing_key:
131
152
  specification_version: 4
132
153
  summary: SDK to facilitate Ruby integrations with Stark Infra
133
154
  test_files: []