svb-client 1.0.0 → 1.0.1
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 +4 -4
- data/lib/client.rb +53 -45
- metadata +1 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 0c673ca2d7ad819becedb6e323949101f805a7c2
         | 
| 4 | 
            +
              data.tar.gz: 30baaa43661db9c8d98a18494c7952e5ad6f699e
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: d74264f9786b791c53a4532ee6a5db5b24902cb49fa6ef18fcbb19f5d5847ed9857e9987103fdf957fcf153b107a4ec2d81b0b1795fc8bc2de160b2f97d74ebf
         | 
| 7 | 
            +
              data.tar.gz: e0c2855747d1c51216e8912cac098dcc5204201ef4f21adb931b358e4b77e3a481e911641a5040f26d912c7f104afde5509f149c8262ae16a0f8c2201fb4e096
         | 
    
        data/lib/client.rb
    CHANGED
    
    | @@ -12,50 +12,58 @@ require 'Base64' | |
| 12 12 | 
             
            require 'net/https'
         | 
| 13 13 | 
             
            require 'uri'
         | 
| 14 14 |  | 
| 15 | 
            -
             | 
| 16 | 
            -
               | 
| 17 | 
            -
                 | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
                 | 
| 21 | 
            -
             | 
| 22 | 
            -
                 | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
                 | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 46 | 
            -
                 | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 54 | 
            -
             | 
| 55 | 
            -
             | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
                 | 
| 15 | 
            +
            class SVBClient
         | 
| 16 | 
            +
              def initialize(api_key, hmac, enviro='', base_url='https://api.svb.com', company_id=nil, key_id=nil, partner_id=nil)
         | 
| 17 | 
            +
                self.API_KEY = api_key
         | 
| 18 | 
            +
                self.HMAC_SECRET = hmac
         | 
| 19 | 
            +
                self.ENVIRO = enviro if ['live', 'test'].includes? enviro
         | 
| 20 | 
            +
                self.BASE_URL = base_url
         | 
| 21 | 
            +
                self.COMPANY_ID = company_id
         | 
| 22 | 
            +
                self.KEY_ID = key_id
         | 
| 23 | 
            +
                self.PARTNER_ID = partner_id
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              def signature(timestamp, method, path, query, body)
         | 
| 27 | 
            +
                message = [timestamp, method, path, query, body].join("\n")
         | 
| 28 | 
            +
                OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), HMAC_SECRET, message)
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              def timestamp_header
         | 
| 32 | 
            +
                Time.now.to_i.to_s
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
              def make_request(uri, request)
         | 
| 36 | 
            +
                http = Net::HTTP.new(uri.host, 443)
         | 
| 37 | 
            +
                http.use_ssl = true
         | 
| 38 | 
            +
                http.verify_mode = OpenSSL::SSL::VERIFY_PEER
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                request["Authorization"] = "Bearer " + API_KEY
         | 
| 41 | 
            +
                request["Content-Type"] = "application/json"
         | 
| 42 | 
            +
                response = http.request(request)
         | 
| 43 | 
            +
              end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
              def get(path, query)
         | 
| 46 | 
            +
                mytimestamp = timestamp_header
         | 
| 47 | 
            +
                signature = signature(mytimestamp, 'GET', path, query, '')
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                uri = URI.parse(BASE_URL + path + query)
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                request = Net::HTTP::Get.new(uri.request_uri)
         | 
| 52 | 
            +
                request["X-Timestamp"] = mytimestamp
         | 
| 53 | 
            +
                request["X-Signature"] = signature
         | 
| 54 | 
            +
                make_request(uri, request)
         | 
| 55 | 
            +
              end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
              def post(path, jsonbody)
         | 
| 58 | 
            +
                mytimestamp = timestamp_header
         | 
| 59 | 
            +
                signature = signature(mytimestamp, 'POST', path, '', JSON.generate(jsonbody))
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                uri = URI.parse(BASE_URL + path)
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                request = Net::HTTP::Post.new(uri.request_uri, 'Content-Type' => 'application/json')
         | 
| 64 | 
            +
                request.body = jsonbody.to_json
         | 
| 65 | 
            +
                request["X-Timestamp"] = mytimestamp
         | 
| 66 | 
            +
                request["X-Signature"] = signature
         | 
| 67 | 
            +
                make_request(uri, request)
         | 
| 60 68 | 
             
              end
         | 
| 61 69 | 
             
            end
         |