Class: Starling::Client
- Inherits:
-
Object
- Object
- Starling::Client
- Defined in:
- lib/starling/client.rb
Constant Summary collapse
- BASE_PRODUCTION_URL =
"https://api.starlingbank.com/api/v2"- BASE_SANDBOX_URL =
"https://api-sandbox.starlingbank.com/api/v2"
Class Method Summary collapse
- .connection ⇒ Object
- .delete_request(url, headers: {}) ⇒ Object
- .get_request(url, params: {}, headers: {}) ⇒ Object
- .handle_response(response) ⇒ Object
- .patch_request(url, body:, headers: {}) ⇒ Object
- .post_request(url, body: {}, headers: {}) ⇒ Object
- .put_request(url, body:, headers: {}) ⇒ Object
Class Method Details
.connection ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/starling/client.rb', line 9 def connection @connection ||= Faraday.new(Starling.config.url) do |conn| conn.request :authorization, :Bearer, Starling.config.access_token conn.request :json conn.headers = { "User-Agent" => "starlingrb/v#{VERSION} (github.com/deanpcmad/starlingrb)" } conn.response :dates conn.response :json, content_type: "application/json" end end |
.delete_request(url, headers: {}) ⇒ Object
39 40 41 |
# File 'lib/starling/client.rb', line 39 def delete_request(url, headers: {}) handle_response connection.delete(url, headers) end |
.get_request(url, params: {}, headers: {}) ⇒ Object
23 24 25 |
# File 'lib/starling/client.rb', line 23 def get_request(url, params: {}, headers: {}) handle_response connection.get(url, params, headers) end |
.handle_response(response) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/starling/client.rb', line 43 def handle_response(response) case response.status when 400 raise Error, "Error 400: Your request was malformed. '#{response.body["error_description"]}'" when 401 raise Error, "Error 401: You did not supply valid authentication credentials. '#{response.body["error_description"]}'" when 403 raise Error, "Error 403: You are not allowed to perform that action. '#{response.body["error_description"]}'" when 404 raise Error, "Error 404: No results were found for your request." when 409 raise Error, "Error 409: Your request was a conflict. '#{response.body["error_description"]}'" when 429 raise Error, "Error 429: Your request exceeded the API rate limit. '#{response.body["error_description"]}'" when 500 raise Error, "Error 500: We were unable to perform the request due to server-side problems. '#{response.body["error_description"]}'" when 503 raise Error, "Error 503: You have been rate limited for sending more than 20 requests per second. '#{response.body["error_description"]}'" when 501 raise Error, "Error 501: This resource has not been implemented. '#{response.body["error_description"]}'" when 204 return true end response end |
.patch_request(url, body:, headers: {}) ⇒ Object
35 36 37 |
# File 'lib/starling/client.rb', line 35 def patch_request(url, body:, headers: {}) handle_response connection.patch(url, body, headers) end |
.post_request(url, body: {}, headers: {}) ⇒ Object
27 28 29 |
# File 'lib/starling/client.rb', line 27 def post_request(url, body: {}, headers: {}) handle_response connection.post(url, body, headers) end |
.put_request(url, body:, headers: {}) ⇒ Object
31 32 33 |
# File 'lib/starling/client.rb', line 31 def put_request(url, body:, headers: {}) handle_response connection.put(url, body, headers) end |