digidoc_client 0.1.0 → 0.1.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 +7 -0
- data/lib/digidoc/client.rb +72 -72
- data/lib/digidoc/version.rb +1 -1
- metadata +42 -29
    
        checksums.yaml
    ADDED
    
    | @@ -0,0 +1,7 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            SHA1:
         | 
| 3 | 
            +
              metadata.gz: def114f38b327cd277bdc1e7b0d1e35faa36c26e
         | 
| 4 | 
            +
              data.tar.gz: 5941f074b02e0814004ba8d74cc027baaf884be2
         | 
| 5 | 
            +
            SHA512:
         | 
| 6 | 
            +
              metadata.gz: 90a3a9da571a4c238eb49ac3fdfc3513a27b25b29196aa96a7ae6dc12c7780eeb47f2c3c2d0fbb569ce94eb38fd062734f4438dc318f5ee9dfde05c94a1bfa60
         | 
| 7 | 
            +
              data.tar.gz: b66573ea09748785bac0266f555697b1792ddcaa9b14538da263e61b2a43bb063c4f27435c56bfee5c198230ef8ad9ee7b995cf24b20b0ffac7df377ba4f16b6
         | 
    
        data/lib/digidoc/client.rb
    CHANGED
    
    | @@ -8,13 +8,13 @@ require 'digest/sha1' | |
| 8 8 | 
             
            require 'nokogiri'
         | 
| 9 9 |  | 
| 10 10 | 
             
            module Digidoc
         | 
| 11 | 
            -
              TargetNamespace = 'http://www.sk.ee/DigiDocService/DigiDocService_2_3.wsdl' | 
| 11 | 
            +
              TargetNamespace = 'http://www.sk.ee/DigiDocService/DigiDocService_2_3.wsdl'
         | 
| 12 12 | 
             
              TestEndpointUrl = 'https://openxades.org:8443/DigiDocService'
         | 
| 13 | 
            -
             | 
| 13 | 
            +
             | 
| 14 14 | 
             
              class Client
         | 
| 15 15 | 
             
                attr_accessor :session_code, :endpoint_url, :respond_with_nested_struct, :embedded_datafiles
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                def initialize(endpoint_url = TestEndpointUrl) | 
| 16 | 
            +
             | 
| 17 | 
            +
                def initialize(endpoint_url = TestEndpointUrl)
         | 
| 18 18 | 
             
                  self.endpoint_url = endpoint_url || TestEndpointUrl
         | 
| 19 19 | 
             
                  self.respond_with_nested_struct = true
         | 
| 20 20 | 
             
                  self.embedded_datafiles = []
         | 
| @@ -23,7 +23,7 @@ module Digidoc | |
| 23 23 | 
             
                # Authentication message
         | 
| 24 24 | 
             
                def authenticate(*args)
         | 
| 25 25 | 
             
                  options = args.last || {}
         | 
| 26 | 
            -
             | 
| 26 | 
            +
             | 
| 27 27 | 
             
                  phone = options.delete(:phone)
         | 
| 28 28 | 
             
                  personal_code = options.delete(:personal_code)
         | 
| 29 29 | 
             
                  country_code = options.delete(:country_code) || 'EE'
         | 
| @@ -34,15 +34,15 @@ module Digidoc | |
| 34 34 | 
             
                  async_configuration = options.delete(:async_configuration) || 0
         | 
| 35 35 | 
             
                  return_cert_data = options.key?(:return_cert_data) ? options.delete(:return_cer_data) : true
         | 
| 36 36 | 
             
                  return_revocation_data = options.key?(:return_revocation_data) ? options.delete(:return_revocation_data) : true
         | 
| 37 | 
            -
             | 
| 37 | 
            +
             | 
| 38 38 | 
             
                  # SP challenge token
         | 
| 39 39 | 
             
                  sp_challenge = generate_sp_challenge
         | 
| 40 40 | 
             
                  phone = ensure_area_code(phone)
         | 
| 41 41 | 
             
                  self.session_code = nil
         | 
| 42 | 
            -
             | 
| 42 | 
            +
             | 
| 43 43 | 
             
                  # Make webservice call
         | 
| 44 44 | 
             
                  response = savon_client.request(:wsdl, 'MobileAuthenticate') do |soap|
         | 
| 45 | 
            -
                    soap.body = {'CountryCode' => country_code, 'PhoneNo' => phone, 'Language' => language, 'ServiceName' => service_name, | 
| 45 | 
            +
                    soap.body = {'CountryCode' => country_code, 'PhoneNo' => phone, 'Language' => language, 'ServiceName' => service_name,
         | 
| 46 46 | 
             
                      'MessageToDisplay' => message_to_display, 'SPChallenge' => sp_challenge, 'MessagingMode' => messaging_mode,
         | 
| 47 47 | 
             
                      'AsyncConfiguration' => async_configuration, 'ReturnCertData' => return_cert_data,
         | 
| 48 48 | 
             
                      'ReturnRevocationData' => return_revocation_data, 'IdCode' => personal_code }
         | 
| @@ -56,13 +56,13 @@ module Digidoc | |
| 56 56 | 
             
                  end
         | 
| 57 57 | 
             
                  respond_with_hash_or_nested(result)
         | 
| 58 58 | 
             
                end
         | 
| 59 | 
            -
             | 
| 59 | 
            +
             | 
| 60 60 | 
             
                # Authentication status
         | 
| 61 61 | 
             
                def authentication_status(session_code = self.session_code)
         | 
| 62 62 | 
             
                  response = savon_client.request(:wsdl, 'GetMobileAuthenticateStatus') do |soap|
         | 
| 63 63 | 
             
                    soap.body = {'Sesscode' => session_code }
         | 
| 64 | 
            -
                  end | 
| 65 | 
            -
             | 
| 64 | 
            +
                  end
         | 
| 65 | 
            +
             | 
| 66 66 | 
             
                  result = soap_fault?(response) ? response.to_hash[:fault] : response.to_hash[:get_mobile_authenticate_status_response]
         | 
| 67 67 | 
             
                  respond_with_hash_or_nested(result)
         | 
| 68 68 | 
             
                end
         | 
| @@ -74,38 +74,38 @@ module Digidoc | |
| 74 74 | 
             
                  options = args.last || {}
         | 
| 75 75 | 
             
                  signed_doc_file = options.delete(:signed_doc_file)
         | 
| 76 76 | 
             
                  signed_doc_xml = signed_doc_file.read if signed_doc_file
         | 
| 77 | 
            -
             | 
| 77 | 
            +
             | 
| 78 78 | 
             
                  response = savon_client.request(:wsdl, 'StartSession') do |soap|
         | 
| 79 79 | 
             
                    soap.body = { 'bHoldSession' => true, 'SigDocXML' => signed_doc_xml}
         | 
| 80 80 | 
             
                  end
         | 
| 81 | 
            -
             | 
| 81 | 
            +
             | 
| 82 82 | 
             
                  if soap_fault?(response)
         | 
| 83 | 
            -
                    result = response.to_hash[:fault] | 
| 83 | 
            +
                    result = response.to_hash[:fault]
         | 
| 84 84 | 
             
                  else
         | 
| 85 85 | 
             
                    result = response.to_hash[:start_session_response]
         | 
| 86 86 | 
             
                    self.session_code = result[:sesscode]
         | 
| 87 87 | 
             
                  end
         | 
| 88 88 | 
             
                  respond_with_hash_or_nested(result)
         | 
| 89 89 | 
             
                end
         | 
| 90 | 
            -
             | 
| 90 | 
            +
             | 
| 91 91 | 
             
                # Creates DigiDoc container
         | 
| 92 92 | 
             
                def create_signed_doc(*args)
         | 
| 93 93 | 
             
                  options = args.last || {}
         | 
| 94 | 
            -
             | 
| 94 | 
            +
             | 
| 95 95 | 
             
                  session_code = options.delete(:session_code) || self.session_code
         | 
| 96 96 | 
             
                  version = options.delete(:version) || '1.3'
         | 
| 97 | 
            -
             | 
| 97 | 
            +
             | 
| 98 98 | 
             
                  response = savon_client.request(:wsdl, 'CreateSignedDoc') do |soap|
         | 
| 99 99 | 
             
                    soap.body = {'Sesscode' => session_code, 'Format' => 'DIGIDOC-XML', 'Version' => version}
         | 
| 100 100 | 
             
                  end
         | 
| 101 | 
            -
             | 
| 101 | 
            +
             | 
| 102 102 | 
             
                  result = soap_fault?(response) ? response.to_hash[:fault] : response.to_hash[:create_signed_doc_response]
         | 
| 103 103 | 
             
                  respond_with_hash_or_nested(result)
         | 
| 104 104 | 
             
                end
         | 
| 105 | 
            -
             | 
| 105 | 
            +
             | 
| 106 106 | 
             
                def prepare_signature(*args)
         | 
| 107 107 | 
             
                  options = args.last || {}
         | 
| 108 | 
            -
             | 
| 108 | 
            +
             | 
| 109 109 | 
             
                  session_code = options.delete(:session_code) || self.session_code
         | 
| 110 110 | 
             
                  signers_certificate = options.delete(:signers_certificate)
         | 
| 111 111 | 
             
                  signers_token_id = options.delete(:signers_token_id)
         | 
| @@ -114,51 +114,51 @@ module Digidoc | |
| 114 114 | 
             
                  state_or_province = options.delete(:state_or_province)
         | 
| 115 115 | 
             
                  role = options.delete(:role)
         | 
| 116 116 | 
             
                  city = options.delete(:city)
         | 
| 117 | 
            -
                  postal_code = options.delete(:postal_code) | 
| 118 | 
            -
             | 
| 117 | 
            +
                  postal_code = options.delete(:postal_code)
         | 
| 118 | 
            +
             | 
| 119 119 | 
             
                  response = savon_client.request(:wsdl, 'PrepareSignature') do |soap|
         | 
| 120 | 
            -
                    soap.body = {'Sesscode' => session_code, 'SignersCertificate' => signers_certificate, | 
| 120 | 
            +
                    soap.body = {'Sesscode' => session_code, 'SignersCertificate' => signers_certificate,
         | 
| 121 121 | 
             
                      'SignersTokenId' => signers_token_id, 'Role' => role, 'City' => city,
         | 
| 122 122 | 
             
                      'State' => state_or_province, 'PostalCode' => postal_code, 'Country' => country_name, 'SigningProfile' => signing_profile }
         | 
| 123 123 | 
             
                  end
         | 
| 124 | 
            -
             | 
| 124 | 
            +
             | 
| 125 125 | 
             
                  result = soap_fault?(response) ? response.to_hash[:fault] : response.to_hash[:prepare_signature_response]
         | 
| 126 | 
            -
                  respond_with_hash_or_nested(result) | 
| 126 | 
            +
                  respond_with_hash_or_nested(result)
         | 
| 127 127 | 
             
                end
         | 
| 128 | 
            -
             | 
| 128 | 
            +
             | 
| 129 129 | 
             
                def finalize_signature(*args)
         | 
| 130 130 | 
             
                  options = args.last || {}
         | 
| 131 | 
            -
             | 
| 131 | 
            +
             | 
| 132 132 | 
             
                  session_code = options.delete(:session_code) || self.session_code
         | 
| 133 133 | 
             
                  signature = options.delete(:signature)
         | 
| 134 134 | 
             
                  signature_id = options.delete(:signature_id)
         | 
| 135 | 
            -
             | 
| 135 | 
            +
             | 
| 136 136 | 
             
                  response = savon_client.request(:wsdl, 'FinalizeSignature') do |soap|
         | 
| 137 137 | 
             
                    soap.body = {'Sesscode' => session_code, 'SignatureValue' => signature, 'SignatureId' => signature_id}
         | 
| 138 138 | 
             
                  end
         | 
| 139 | 
            -
             | 
| 139 | 
            +
             | 
| 140 140 | 
             
                  result = soap_fault?(response) ? response.to_hash[:fault] : response.to_hash[:finalize_signature_response]
         | 
| 141 | 
            -
                  respond_with_hash_or_nested(result) | 
| 141 | 
            +
                  respond_with_hash_or_nested(result)
         | 
| 142 142 | 
             
                end
         | 
| 143 143 |  | 
| 144 144 | 
             
                def notary(*args)
         | 
| 145 145 | 
             
                  options = args.last || {}
         | 
| 146 | 
            -
             | 
| 146 | 
            +
             | 
| 147 147 | 
             
                  session_code = options.delete(:session_code) || self.session_code
         | 
| 148 148 | 
             
                  signature_id = options.delete(:signature_id)
         | 
| 149 | 
            -
             | 
| 149 | 
            +
             | 
| 150 150 | 
             
                  response = savon_client.request(:wsdl, 'GetNotary') do |soap|
         | 
| 151 151 | 
             
                    soap.body = {'Sesscode' => session_code, 'SignatureId' => signature_id}
         | 
| 152 152 | 
             
                  end
         | 
| 153 | 
            -
             | 
| 153 | 
            +
             | 
| 154 154 | 
             
                  result = soap_fault?(response) ? response.to_hash[:fault] : response.to_hash[:get_notary_response]
         | 
| 155 | 
            -
                  respond_with_hash_or_nested(result) | 
| 155 | 
            +
                  respond_with_hash_or_nested(result)
         | 
| 156 156 | 
             
                end
         | 
| 157 | 
            -
             | 
| 157 | 
            +
             | 
| 158 158 | 
             
                # Sign DigiDoc container
         | 
| 159 159 | 
             
                def mobile_sign(*args)
         | 
| 160 160 | 
             
                  options = args.last || {}
         | 
| 161 | 
            -
             | 
| 161 | 
            +
             | 
| 162 162 | 
             
                  session_code = options.delete(:session_code) || self.session_code
         | 
| 163 163 | 
             
                  phone = options.delete(:phone)
         | 
| 164 164 | 
             
                  personal_code = options.delete(:personal_code)
         | 
| @@ -176,99 +176,99 @@ module Digidoc | |
| 176 176 | 
             
                  city = options.delete(:city)
         | 
| 177 177 | 
             
                  postal_code = options.delete(:postal_code)
         | 
| 178 178 | 
             
                  phone = ensure_area_code(phone)
         | 
| 179 | 
            -
             | 
| 179 | 
            +
             | 
| 180 180 | 
             
                  response = savon_client.request(:wsdl, 'MobileSign') do |soap|
         | 
| 181 | 
            -
                    soap.body = {'Sesscode' => session_code, 'SignersCountry' => country_code, 'CountryName' => country_name, | 
| 182 | 
            -
                      'SignerPhoneNo' => phone, 'Language' => language, 'ServiceName' => service_name, | 
| 181 | 
            +
                    soap.body = {'Sesscode' => session_code, 'SignersCountry' => country_code, 'CountryName' => country_name,
         | 
| 182 | 
            +
                      'SignerPhoneNo' => phone, 'Language' => language, 'ServiceName' => service_name,
         | 
| 183 183 | 
             
                      'AdditionalDataToBeDisplayed' => message_to_display, 'MessagingMode' => messaging_mode,
         | 
| 184 184 | 
             
                      'AsyncConfiguration' => async_configuration, 'ReturnDocInfo' => return_doc_info,
         | 
| 185 185 | 
             
                      'ReturnDocData' => return_doc_data, 'SignerIDCode' => personal_code, 'Role' => role, 'City' => city,
         | 
| 186 186 | 
             
                       'StateOrProvince' => state_or_province, 'PostalCode' => postal_code }
         | 
| 187 187 | 
             
                  end
         | 
| 188 | 
            -
             | 
| 188 | 
            +
             | 
| 189 189 | 
             
                  result = soap_fault?(response) ? response.to_hash[:fault] : response.to_hash[:mobile_sign_response]
         | 
| 190 190 | 
             
                  respond_with_hash_or_nested(result)
         | 
| 191 191 | 
             
                end
         | 
| 192 | 
            -
             | 
| 192 | 
            +
             | 
| 193 193 | 
             
                # Get session status info.
         | 
| 194 194 | 
             
                def sign_status(*args)
         | 
| 195 195 | 
             
                  options = args.last || {}
         | 
| 196 | 
            -
             | 
| 196 | 
            +
             | 
| 197 197 | 
             
                  session_code = options.delete(:session_code) || self.session_code
         | 
| 198 198 | 
             
                  return_doc_info = options.key?(:return_doc_info) ? options.delete(:return_doc_info) : false
         | 
| 199 199 | 
             
                  wait_signature = options.key?(:wait_signature) ? options.delete(:wait_signature) : false
         | 
| 200 | 
            -
             | 
| 200 | 
            +
             | 
| 201 201 | 
             
                  response = savon_client.request(:wsdl, 'GetStatusInfo') do |soap|
         | 
| 202 202 | 
             
                    soap.body = {'Sesscode' => session_code, 'ReturnDocInfo' => return_doc_info, 'WaitSignature' => wait_signature}
         | 
| 203 203 | 
             
                  end
         | 
| 204 | 
            -
             | 
| 204 | 
            +
             | 
| 205 205 | 
             
                  result = soap_fault?(response) ? response.to_hash[:fault] : response.to_hash[:get_status_info_response]
         | 
| 206 206 | 
             
                  respond_with_hash_or_nested(result)
         | 
| 207 207 | 
             
                end
         | 
| 208 | 
            -
             | 
| 208 | 
            +
             | 
| 209 209 | 
             
                # Get DigiDoc container status
         | 
| 210 210 | 
             
                def signed_doc_info(*args)
         | 
| 211 | 
            -
                  options = args.last || {} | 
| 211 | 
            +
                  options = args.last || {}
         | 
| 212 212 | 
             
                  session_code = options.delete(:session_code) || self.session_code
         | 
| 213 | 
            -
             | 
| 213 | 
            +
             | 
| 214 214 | 
             
                  response = savon_client.request(:wsdl, 'GetSignedDocInfo') do |soap|
         | 
| 215 215 | 
             
                    soap.body = {'Sesscode' => session_code }
         | 
| 216 216 | 
             
                  end
         | 
| 217 217 | 
             
                  result = soap_fault?(response) ? response.to_hash[:fault] : response.to_hash[:get_signed_doc_info_response]
         | 
| 218 218 | 
             
                  respond_with_hash_or_nested(result)
         | 
| 219 219 | 
             
                end
         | 
| 220 | 
            -
             | 
| 220 | 
            +
             | 
| 221 221 | 
             
                # Get DigiDoc container
         | 
| 222 222 | 
             
                def save_signed_doc(*args, &block)
         | 
| 223 | 
            -
                  options = args.last || {} | 
| 223 | 
            +
                  options = args.last || {}
         | 
| 224 224 | 
             
                  session_code = options.delete(:session_code) || self.session_code
         | 
| 225 | 
            -
             | 
| 225 | 
            +
             | 
| 226 226 | 
             
                  response = savon_client.request(:wsdl, 'GetSignedDoc') do |soap|
         | 
| 227 227 | 
             
                    soap.body = {'Sesscode' => session_code }
         | 
| 228 228 | 
             
                  end
         | 
| 229 | 
            -
             | 
| 229 | 
            +
             | 
| 230 230 | 
             
                  if soap_fault?(response)
         | 
| 231 231 | 
             
                    result = respond_with_hash_or_nested(response.to_hash[:fault])
         | 
| 232 232 | 
             
                  else
         | 
| 233 | 
            -
                    escaped = Crack::XML.parse(response.http.body).to_hash['SOAP_ENV:Envelope']['SOAP_ENV:Body'][' | 
| 233 | 
            +
                    escaped = Crack::XML.parse(response.http.body).to_hash['SOAP_ENV:Envelope']['SOAP_ENV:Body']['dig:GetSignedDocResponse']['SignedDocData']
         | 
| 234 234 | 
             
                    # TODO: is escaping needed? - it removes original escaped & form XML
         | 
| 235 235 | 
             
                    digidoc_container = escaped#CGI.unescapeHTML(escaped)
         | 
| 236 | 
            -
             | 
| 236 | 
            +
             | 
| 237 237 | 
             
                    if embedded_datafiles.present?
         | 
| 238 238 | 
             
                      xmldata = Nokogiri::XML(digidoc_container)
         | 
| 239 239 | 
             
                      xmldata.root.elements.each { |el| el.replace(embedded_datafiles.shift) if el.name == 'DataFile' }
         | 
| 240 240 | 
             
                      digidoc_container = xmldata.to_xml
         | 
| 241 241 | 
             
                    end
         | 
| 242 | 
            -
             | 
| 242 | 
            +
             | 
| 243 243 | 
             
                    if block_given?
         | 
| 244 244 | 
             
                      yield digidoc_container
         | 
| 245 245 | 
             
                    else
         | 
| 246 246 | 
             
                      digidoc_container
         | 
| 247 247 | 
             
                    end
         | 
| 248 | 
            -
                  end | 
| 248 | 
            +
                  end
         | 
| 249 249 | 
             
                end
         | 
| 250 | 
            -
             | 
| 250 | 
            +
             | 
| 251 251 | 
             
                # Closes current session
         | 
| 252 252 | 
             
                def close_session(session_code = self.session_code)
         | 
| 253 253 | 
             
                  response = savon_client.request(:wsdl, 'CloseSession') do |soap|
         | 
| 254 254 | 
             
                    soap.body = {'Sesscode' => session_code }
         | 
| 255 255 | 
             
                  end
         | 
| 256 256 | 
             
                  self.session_code = nil
         | 
| 257 | 
            -
             | 
| 257 | 
            +
             | 
| 258 258 | 
             
                  result = soap_fault?(response) ? response.to_hash[:fault] : response.to_hash[:close_session_response]
         | 
| 259 259 | 
             
                  respond_with_hash_or_nested(result)
         | 
| 260 260 | 
             
                end
         | 
| 261 | 
            -
             | 
| 261 | 
            +
             | 
| 262 262 | 
             
                # Add datafile to DigiDoc container
         | 
| 263 263 | 
             
                def add_datafile(file, *args)
         | 
| 264 264 | 
             
                  options = args.last || {}
         | 
| 265 | 
            -
             | 
| 265 | 
            +
             | 
| 266 266 | 
             
                  session_code = options.delete(:session_code) || self.session_code
         | 
| 267 267 | 
             
                  filename = options.delete(:filename) || File.basename(file.path)
         | 
| 268 268 | 
             
                  mime_type = options[:mime_type] || calc_mime_type(file)
         | 
| 269 269 | 
             
                  use_hashcode = false #options.key?(:use_hashcode) || true
         | 
| 270 270 | 
             
                  filename = filename.gsub('/', '-')
         | 
| 271 | 
            -
             | 
| 271 | 
            +
             | 
| 272 272 | 
             
                  response = savon_client.request(:wsdl, 'AddDataFile') do |soap|
         | 
| 273 273 | 
             
                    file_content = Base64.encode64(file.read)
         | 
| 274 274 | 
             
                    # Upload file to webservice
         | 
| @@ -277,25 +277,25 @@ module Digidoc | |
| 277 277 | 
             
                      datafile = datafile(filename, mime_type, file.size, file_content, embedded_datafiles.size)
         | 
| 278 278 | 
             
                      self.embedded_datafiles << datafile
         | 
| 279 279 | 
             
                      hex_sha1 = Digest::SHA1.hexdigest(datafile)
         | 
| 280 | 
            -
                      digest_value = Base64.encode64(hex_sha1.lines.to_a.pack('H*')) | 
| 281 | 
            -
                      soap.body = {'Sesscode' => session_code, 'FileName' => filename, 'MimeType' => mime_type, 'ContentType' => 'HASHCODE', | 
| 280 | 
            +
                      digest_value = Base64.encode64(hex_sha1.lines.to_a.pack('H*'))
         | 
| 281 | 
            +
                      soap.body = {'Sesscode' => session_code, 'FileName' => filename, 'MimeType' => mime_type, 'ContentType' => 'HASHCODE',
         | 
| 282 282 | 
             
                        'Size' => file.size, 'DigestType' => 'sha1', 'DigestValue' => digest_value}
         | 
| 283 283 | 
             
                    else
         | 
| 284 | 
            -
                      soap.body = {'Sesscode' => session_code, 'FileName' => filename, 'MimeType' => mime_type, 'ContentType' => 'EMBEDDED_BASE64', | 
| 285 | 
            -
                        'Size' => file.size, 'Content' => file_content} | 
| 284 | 
            +
                      soap.body = {'Sesscode' => session_code, 'FileName' => filename, 'MimeType' => mime_type, 'ContentType' => 'EMBEDDED_BASE64',
         | 
| 285 | 
            +
                        'Size' => file.size, 'Content' => file_content}
         | 
| 286 286 | 
             
                    end
         | 
| 287 287 | 
             
                  end
         | 
| 288 | 
            -
             | 
| 288 | 
            +
             | 
| 289 289 | 
             
                  result = soap_fault?(response) ? response.to_hash[:fault] : response.to_hash[:add_data_file_response]
         | 
| 290 290 | 
             
                  respond_with_hash_or_nested(result)
         | 
| 291 291 | 
             
                end
         | 
| 292 | 
            -
             | 
| 293 | 
            -
                private | 
| 292 | 
            +
             | 
| 293 | 
            +
                private
         | 
| 294 294 |  | 
| 295 295 | 
             
                def soap_fault?(response)
         | 
| 296 296 | 
             
                  response.http.body =~ /<*Fault>/
         | 
| 297 297 | 
             
                end
         | 
| 298 | 
            -
             | 
| 298 | 
            +
             | 
| 299 299 | 
             
                def ensure_area_code(phone)
         | 
| 300 300 | 
             
                  phone =~ /^\+/ ? phone : "+372#{phone}" unless phone.blank?
         | 
| 301 301 | 
             
                end
         | 
| @@ -308,16 +308,16 @@ module Digidoc | |
| 308 308 | 
             
                    http.auth.ssl.verify_mode = :none # todo: add env dependency
         | 
| 309 309 | 
             
                  end
         | 
| 310 310 | 
             
                end
         | 
| 311 | 
            -
             | 
| 311 | 
            +
             | 
| 312 312 | 
             
                def datafile(filename, mime_type, size, content, id)
         | 
| 313 313 | 
             
                  datafile = "<DataFile ContentType=\"EMBEDDED_BASE64\" Filename=\"#{filename}\" Id=\"D#{id}\" MimeType=\"#{mime_type}\" Size=\"#{size}\">#{content}</DataFile>"
         | 
| 314 314 | 
             
                end
         | 
| 315 | 
            -
             | 
| 315 | 
            +
             | 
| 316 316 | 
             
                def calc_mime_type(file)
         | 
| 317 317 | 
             
                  return unless file
         | 
| 318 318 | 
             
                  MIME::Types.type_for(File.basename(file.path)).first.try(:content_type) || 'text/plain'
         | 
| 319 319 | 
             
                end
         | 
| 320 | 
            -
             | 
| 320 | 
            +
             | 
| 321 321 | 
             
                def respond_with_hash_or_nested(hash)
         | 
| 322 322 | 
             
                  if respond_with_nested_struct
         | 
| 323 323 | 
             
                    NestedOpenStruct.new(hash)
         | 
| @@ -325,7 +325,7 @@ module Digidoc | |
| 325 325 | 
             
                    hash
         | 
| 326 326 | 
             
                  end
         | 
| 327 327 | 
             
                end
         | 
| 328 | 
            -
             | 
| 328 | 
            +
             | 
| 329 329 | 
             
                # Hex ID generator
         | 
| 330 330 | 
             
                def generate_unique_hex(codeLength)
         | 
| 331 331 | 
             
                    validChars = ("A".."F").to_a + ("0".."9").to_a
         | 
    
        data/lib/digidoc/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,71 +1,85 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: digidoc_client
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 5 | 
            -
              prerelease: 
         | 
| 4 | 
            +
              version: 0.1.1
         | 
| 6 5 | 
             
            platform: ruby
         | 
| 7 6 | 
             
            authors:
         | 
| 8 7 | 
             
            - Tarmo Talu
         | 
| 9 8 | 
             
            autorequire: 
         | 
| 10 9 | 
             
            bindir: bin
         | 
| 11 10 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date:  | 
| 11 | 
            +
            date: 2014-02-19 00:00:00.000000000 Z
         | 
| 13 12 | 
             
            dependencies:
         | 
| 14 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 14 | 
             
              name: httpclient
         | 
| 16 | 
            -
              requirement:  | 
| 17 | 
            -
                none: false
         | 
| 15 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 18 16 | 
             
                requirements:
         | 
| 19 | 
            -
                - -  | 
| 17 | 
            +
                - - '>='
         | 
| 20 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 21 19 | 
             
                    version: 2.2.4
         | 
| 22 20 | 
             
              type: :runtime
         | 
| 23 21 | 
             
              prerelease: false
         | 
| 24 | 
            -
              version_requirements:  | 
| 22 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            +
                requirements:
         | 
| 24 | 
            +
                - - '>='
         | 
| 25 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            +
                    version: 2.2.4
         | 
| 25 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 26 28 | 
             
              name: savon
         | 
| 27 | 
            -
              requirement:  | 
| 28 | 
            -
                none: false
         | 
| 29 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 29 30 | 
             
                requirements:
         | 
| 30 | 
            -
                - -  | 
| 31 | 
            +
                - - '>='
         | 
| 31 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 32 33 | 
             
                    version: 0.9.7
         | 
| 33 34 | 
             
              type: :runtime
         | 
| 34 35 | 
             
              prerelease: false
         | 
| 35 | 
            -
              version_requirements:  | 
| 36 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            +
                requirements:
         | 
| 38 | 
            +
                - - '>='
         | 
| 39 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            +
                    version: 0.9.7
         | 
| 36 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 37 42 | 
             
              name: mime-types
         | 
| 38 | 
            -
              requirement:  | 
| 39 | 
            -
                none: false
         | 
| 43 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 40 44 | 
             
                requirements:
         | 
| 41 | 
            -
                - -  | 
| 45 | 
            +
                - - '>='
         | 
| 42 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 43 47 | 
             
                    version: '1.16'
         | 
| 44 48 | 
             
              type: :runtime
         | 
| 45 49 | 
             
              prerelease: false
         | 
| 46 | 
            -
              version_requirements:  | 
| 50 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - '>='
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '1.16'
         | 
| 47 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 48 56 | 
             
              name: crack
         | 
| 49 | 
            -
              requirement:  | 
| 50 | 
            -
                none: false
         | 
| 57 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 51 58 | 
             
                requirements:
         | 
| 52 | 
            -
                - -  | 
| 59 | 
            +
                - - '>='
         | 
| 53 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 61 | 
             
                    version: 0.1.8
         | 
| 55 62 | 
             
              type: :runtime
         | 
| 56 63 | 
             
              prerelease: false
         | 
| 57 | 
            -
              version_requirements:  | 
| 64 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                requirements:
         | 
| 66 | 
            +
                - - '>='
         | 
| 67 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            +
                    version: 0.1.8
         | 
| 58 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 59 70 | 
             
              name: nokogiri
         | 
| 60 | 
            -
              requirement:  | 
| 61 | 
            -
                none: false
         | 
| 71 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 62 72 | 
             
                requirements:
         | 
| 63 | 
            -
                - -  | 
| 73 | 
            +
                - - '>='
         | 
| 64 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 65 75 | 
             
                    version: 1.4.0
         | 
| 66 76 | 
             
              type: :runtime
         | 
| 67 77 | 
             
              prerelease: false
         | 
| 68 | 
            -
              version_requirements:  | 
| 78 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 | 
            +
                requirements:
         | 
| 80 | 
            +
                - - '>='
         | 
| 81 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            +
                    version: 1.4.0
         | 
| 69 83 | 
             
            description: An easy way to interact with Estonian DigiDoc services.
         | 
| 70 84 | 
             
            email:
         | 
| 71 85 | 
             
            - tarmo.talu@gmail.com
         | 
| @@ -83,26 +97,25 @@ files: | |
| 83 97 | 
             
            - lib/digidoc_client.rb
         | 
| 84 98 | 
             
            homepage: http://github.com/tarmotalu/digidoc_client
         | 
| 85 99 | 
             
            licenses: []
         | 
| 100 | 
            +
            metadata: {}
         | 
| 86 101 | 
             
            post_install_message: 
         | 
| 87 102 | 
             
            rdoc_options: []
         | 
| 88 103 | 
             
            require_paths:
         | 
| 89 104 | 
             
            - lib
         | 
| 90 105 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 91 | 
            -
              none: false
         | 
| 92 106 | 
             
              requirements:
         | 
| 93 | 
            -
              - -  | 
| 107 | 
            +
              - - '>='
         | 
| 94 108 | 
             
                - !ruby/object:Gem::Version
         | 
| 95 109 | 
             
                  version: '0'
         | 
| 96 110 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 97 | 
            -
              none: false
         | 
| 98 111 | 
             
              requirements:
         | 
| 99 | 
            -
              - -  | 
| 112 | 
            +
              - - '>='
         | 
| 100 113 | 
             
                - !ruby/object:Gem::Version
         | 
| 101 114 | 
             
                  version: '0'
         | 
| 102 115 | 
             
            requirements: []
         | 
| 103 116 | 
             
            rubyforge_project: digidoc_client
         | 
| 104 | 
            -
            rubygems_version: 1. | 
| 117 | 
            +
            rubygems_version: 2.1.10
         | 
| 105 118 | 
             
            signing_key: 
         | 
| 106 | 
            -
            specification_version:  | 
| 119 | 
            +
            specification_version: 4
         | 
| 107 120 | 
             
            summary: Ruby library to interact with Estonian DigiDoc services.
         | 
| 108 121 | 
             
            test_files: []
         |