rightsignature 0.1.8 → 1.0.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.
- data/README.md +42 -44
 - data/lib/rightsignature.rb +0 -49
 - data/lib/rightsignature/account.rb +14 -16
 - data/lib/rightsignature/connection.rb +116 -64
 - data/lib/rightsignature/connection/oauth_connection.rb +65 -55
 - data/lib/rightsignature/connection/token_connection.rb +16 -11
 - data/lib/rightsignature/document.rb +217 -220
 - data/lib/rightsignature/template.rb +217 -221
 - data/lib/rightsignature/version.rb +1 -1
 - data/spec/account_spec.rb +22 -22
 - data/spec/api_token_connection_spec.rb +13 -10
 - data/spec/configuration_spec.rb +42 -42
 - data/spec/connection_spec.rb +91 -91
 - data/spec/document_spec.rb +60 -60
 - data/spec/oauth_connnection_spec.rb +39 -34
 - data/spec/spec_helper.rb +1 -1
 - data/spec/template_spec.rb +62 -62
 - metadata +2 -2
 
    
        data/README.md
    CHANGED
    
    | 
         @@ -8,21 +8,21 @@ gem install rightsignature 
     | 
|
| 
       8 
8 
     | 
    
         
             
            ```
         
     | 
| 
       9 
9 
     | 
    
         
             
            or in your Gemfile
         
     | 
| 
       10 
10 
     | 
    
         
             
            ```
         
     | 
| 
       11 
     | 
    
         
            -
            gem 'rightsignature', '~> 0. 
     | 
| 
      
 11 
     | 
    
         
            +
            gem 'rightsignature', '~> 1.0.0'
         
     | 
| 
       12 
12 
     | 
    
         
             
            ```
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
            Setup
         
     | 
| 
       15 
15 
     | 
    
         
             
            -----
         
     | 
| 
       16 
     | 
    
         
            -
            After getting an API key from RightSignature, you can use the Secure Token or generate an Access Token with the OAuth key and secret using RightSignature:: 
     | 
| 
      
 16 
     | 
    
         
            +
            After getting an API key from RightSignature, you can use the Secure Token or generate an Access Token with the OAuth key and secret using RightSignature::Connection.new. Below are examples on how to use the gem as yourself.
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
            #####Using Token authentication
         
     | 
| 
       19 
19 
     | 
    
         
             
            ```
         
     | 
| 
       20 
     | 
    
         
            -
            RightSignature:: 
     | 
| 
      
 20 
     | 
    
         
            +
            @rs_connection = RightSignature::Connection.new(:api_token => YOUR_TOKEN)
         
     | 
| 
       21 
21 
     | 
    
         
             
            ```
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
            #####Using OAuth authentication
         
     | 
| 
       24 
24 
     | 
    
         
             
            ```
         
     | 
| 
       25 
     | 
    
         
            -
            RightSignature:: 
     | 
| 
      
 25 
     | 
    
         
            +
            @rs_connection = RightSignature::Connection.new(
         
     | 
| 
       26 
26 
     | 
    
         
             
              :consumer_key => "Consumer123", 
         
     | 
| 
       27 
27 
     | 
    
         
             
              :consumer_secret => "Secret098", 
         
     | 
| 
       28 
28 
     | 
    
         
             
              :access_token => "AccessToken098", 
         
     | 
| 
         @@ -34,42 +34,42 @@ Note: if the both OAuth credentials and api_token are set, the default action is 
     | 
|
| 
       34 
34 
     | 
    
         
             
            #####Getting Access Token
         
     | 
| 
       35 
35 
     | 
    
         
             
            Make sure you have a server that is can recieve the parameters from RightSignature and the callback is setup correctly in the RightSignature API settings (https://rightsignature.com/oauth_clients).
         
     | 
| 
       36 
36 
     | 
    
         
             
            ```
         
     | 
| 
       37 
     | 
    
         
            -
            request_token =  
     | 
| 
      
 37 
     | 
    
         
            +
            request_token = @rs_connection.new_request_token
         
     | 
| 
       38 
38 
     | 
    
         
             
            ```
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
            Now Visit the url generated from
         
     | 
| 
       41 
41 
     | 
    
         
             
            ```
         
     | 
| 
       42 
     | 
    
         
            -
            RightSignature::OauthConnection. 
     | 
| 
      
 42 
     | 
    
         
            +
            @rs_oauth = RightSignature::OauthConnection.new(@rs_connection)
         
     | 
| 
      
 43 
     | 
    
         
            +
            @rs_oauth.request_token.authorize_url
         
     | 
| 
       43 
44 
     | 
    
         
             
            ```
         
     | 
| 
       44 
45 
     | 
    
         
             
            and log into the site.
         
     | 
| 
       45 
46 
     | 
    
         | 
| 
       46 
47 
     | 
    
         
             
            After approving the application, you will be redirected to the callback url that is in the RightSignature API settings (https://rightsignature.com/oauth_clients). The OAuth verifier should be in the params "oauth_verifier". Put the verifier in:
         
     | 
| 
       47 
48 
     | 
    
         
             
            ```
         
     | 
| 
       48 
     | 
    
         
            -
            RightSignature::OauthConnection. 
     | 
| 
      
 49 
     | 
    
         
            +
            @rs_oauth = RightSignature::OauthConnection.new(@rs_connection)
         
     | 
| 
      
 50 
     | 
    
         
            +
            @rs_oauth.generate_access_token(params[:oauth_verifer])
         
     | 
| 
       49 
51 
     | 
    
         
             
            ```
         
     | 
| 
       50 
52 
     | 
    
         | 
| 
       51 
53 
     | 
    
         
             
            Now, you should have your Connection setup. You can save the access token and access token secret for later use and skip the previous steps.
         
     | 
| 
       52 
54 
     | 
    
         
             
            ```
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
      
 55 
     | 
    
         
            +
            @rs_oauth.access_token.token
         
     | 
| 
      
 56 
     | 
    
         
            +
            @rs_oauth.access_token.secret
         
     | 
| 
       55 
57 
     | 
    
         
             
            ```
         
     | 
| 
       56 
58 
     | 
    
         
             
            Will give you the Access Token's token and secret.
         
     | 
| 
       57 
59 
     | 
    
         | 
| 
       58 
60 
     | 
    
         
             
            You can also load the Access Token and Secret by calling
         
     | 
| 
       59 
61 
     | 
    
         
             
            ```
         
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
      
 62 
     | 
    
         
            +
            @rs_oauth.set_access_token(token, secret)
         
     | 
| 
       61 
63 
     | 
    
         
             
            ```
         
     | 
| 
       62 
64 
     | 
    
         | 
| 
       63 
     | 
    
         
            -
            After loading the configuration, you can use wrappers in RightSignature:: 
     | 
| 
      
 65 
     | 
    
         
            +
            After loading the configuration, you can use wrappers in RightSignature::Connection to call the API, or use RightSignature::Connection for more custom calls.
         
     | 
| 
       64 
66 
     | 
    
         | 
| 
       65 
67 
     | 
    
         
             
            Documents
         
     | 
| 
       66 
68 
     | 
    
         
             
            ---------
         
     | 
| 
       67 
     | 
    
         
            -
            API calls involving documents are wrapped in the RightSignature::Document class.
         
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
69 
     | 
    
         
             
            #####Listing Document
         
     | 
| 
       70 
70 
     | 
    
         
             
            For showing all documents
         
     | 
| 
       71 
71 
     | 
    
         
             
            ```
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
      
 72 
     | 
    
         
            +
            @rs_connection.documents_list
         
     | 
| 
       73 
73 
     | 
    
         
             
            ```
         
     | 
| 
       74 
74 
     | 
    
         | 
| 
       75 
75 
     | 
    
         
             
            For showing page 1 of completed and trashed documents, with 20 per page, matching search term 'me', with tag "single_tag" and tag "key" with value of "with_value"
         
     | 
| 
         @@ -81,7 +81,7 @@ options = { 
     | 
|
| 
       81 
81 
     | 
    
         
             
              :search => "me",
         
     | 
| 
       82 
82 
     | 
    
         
             
              :tags => ["single_tag", "key" => "with_value"]
         
     | 
| 
       83 
83 
     | 
    
         
             
            }
         
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
      
 84 
     | 
    
         
            +
            @rs_connection.documents_list(options)
         
     | 
| 
       85 
85 
     | 
    
         
             
            ```
         
     | 
| 
       86 
86 
     | 
    
         
             
            Optional Options:
         
     | 
| 
       87 
87 
     | 
    
         
             
             * page: page number
         
     | 
| 
         @@ -102,34 +102,34 @@ Optional Options: 
     | 
|
| 
       102 
102 
     | 
    
         | 
| 
       103 
103 
     | 
    
         
             
            #####Document Details
         
     | 
| 
       104 
104 
     | 
    
         
             
            ```
         
     | 
| 
       105 
     | 
    
         
            -
             
     | 
| 
      
 105 
     | 
    
         
            +
            @rs_connection.document_details(guid)
         
     | 
| 
       106 
106 
     | 
    
         
             
            ```
         
     | 
| 
       107 
107 
     | 
    
         | 
| 
       108 
108 
     | 
    
         
             
            #####Document Details for Multiple documents
         
     | 
| 
       109 
109 
     | 
    
         
             
            ```
         
     | 
| 
       110 
     | 
    
         
            -
             
     | 
| 
      
 110 
     | 
    
         
            +
            @rs_connection.documents_batch_details(guids)
         
     | 
| 
       111 
111 
     | 
    
         
             
            ```
         
     | 
| 
       112 
112 
     | 
    
         
             
             * guids: Array of document GUIDs
         
     | 
| 
       113 
113 
     | 
    
         | 
| 
       114 
114 
     | 
    
         
             
            #####Send Reminder
         
     | 
| 
       115 
115 
     | 
    
         
             
            ```
         
     | 
| 
       116 
     | 
    
         
            -
             
     | 
| 
      
 116 
     | 
    
         
            +
            @rs_connection.send_reminder(guid)
         
     | 
| 
       117 
117 
     | 
    
         
             
            ```
         
     | 
| 
       118 
118 
     | 
    
         | 
| 
       119 
119 
     | 
    
         
             
            #####Trash Document
         
     | 
| 
       120 
120 
     | 
    
         
             
            ```
         
     | 
| 
       121 
     | 
    
         
            -
             
     | 
| 
      
 121 
     | 
    
         
            +
            @rs_connection.trash_document(guid)
         
     | 
| 
       122 
122 
     | 
    
         
             
            ```
         
     | 
| 
       123 
123 
     | 
    
         | 
| 
       124 
124 
     | 
    
         
             
            #####Extend Expiration of Document by 7 days
         
     | 
| 
       125 
125 
     | 
    
         
             
            ```
         
     | 
| 
       126 
     | 
    
         
            -
             
     | 
| 
      
 126 
     | 
    
         
            +
            @rs_connection.extend_expiration(guid)
         
     | 
| 
       127 
127 
     | 
    
         
             
            ```
         
     | 
| 
       128 
128 
     | 
    
         | 
| 
       129 
129 
     | 
    
         
             
            #####Replace Tags on Document
         
     | 
| 
       130 
130 
     | 
    
         
             
            ```
         
     | 
| 
       131 
131 
     | 
    
         
             
            tags=['sent_from_api', {'user_id' => '12345'}]
         
     | 
| 
       132 
     | 
    
         
            -
             
     | 
| 
      
 132 
     | 
    
         
            +
            @rs_connection.update_document_tags(guid, tags)
         
     | 
| 
       133 
133 
     | 
    
         
             
            ```
         
     | 
| 
       134 
134 
     | 
    
         
             
             * guid
         
     | 
| 
       135 
135 
     | 
    
         
             
             * tags: An array of 'tag_name' or {'tag_name' => 'tag_value'}
         
     | 
| 
         @@ -150,11 +150,11 @@ options={ 
     | 
|
| 
       150 
150 
     | 
    
         
             
              'use_text_tags' => false
         
     | 
| 
       151 
151 
     | 
    
         
             
            }
         
     | 
| 
       152 
152 
     | 
    
         | 
| 
       153 
     | 
    
         
            -
             
     | 
| 
      
 153 
     | 
    
         
            +
            @rs_connection.send_document_from_file("here/is/myfile.pdf", 'My Subject', recipients, options)
         
     | 
| 
       154 
154 
     | 
    
         
             
            ```
         
     | 
| 
       155 
155 
     | 
    
         
             
            Or
         
     | 
| 
       156 
156 
     | 
    
         
             
            ```
         
     | 
| 
       157 
     | 
    
         
            -
             
     | 
| 
      
 157 
     | 
    
         
            +
            @rs_connection.send_document_from_file(File.open("here/is/myfile.pdf", 'r'), 'My Subject', recipients)
         
     | 
| 
       158 
158 
     | 
    
         
             
            ```
         
     | 
| 
       159 
159 
     | 
    
         
             
            * subject: Document subject
         
     | 
| 
       160 
160 
     | 
    
         
             
            * recipients: Recipients of the document, should be an array of hashes with :name, :email, and :role ('cc' or 'signer'). 
         
     | 
| 
         @@ -179,14 +179,14 @@ recipients = [ 
     | 
|
| 
       179 
179 
     | 
    
         
             
            ]
         
     | 
| 
       180 
180 
     | 
    
         
             
            raw_data = File.read("here/is/myfile.pdf")
         
     | 
| 
       181 
181 
     | 
    
         
             
            filename = "Desired Filename.pdf"
         
     | 
| 
       182 
     | 
    
         
            -
             
     | 
| 
      
 182 
     | 
    
         
            +
            @rs_connection.send_document_from_file(raw_data, filename, 'My Subject', recipients)
         
     | 
| 
       183 
183 
     | 
    
         
             
            ```
         
     | 
| 
       184 
184 
     | 
    
         | 
| 
       185 
185 
     | 
    
         
             
            #####Embedded Signing Links
         
     | 
| 
       186 
186 
     | 
    
         
             
            Generates URLs for the embedded signing page for documents with recipients with email of 'noemail@rightsignature.com'. 
         
     | 
| 
       187 
187 
     | 
    
         
             
            Returns an array of {:name => "John Bellingham", "url" => "https://rightsignature.com/signatures/embedded?rt=1234"}
         
     | 
| 
       188 
188 
     | 
    
         
             
            ```
         
     | 
| 
       189 
     | 
    
         
            -
             
     | 
| 
      
 189 
     | 
    
         
            +
            @rs_connection.get_document_signer_links_for(guid, redirect_location=nil)
         
     | 
| 
       190 
190 
     | 
    
         
             
            ```
         
     | 
| 
       191 
191 
     | 
    
         
             
            Optional Option:
         
     | 
| 
       192 
192 
     | 
    
         
             
             * redirect_location: URL to redirect user after signing.
         
     | 
| 
         @@ -194,11 +194,9 @@ Optional Option: 
     | 
|
| 
       194 
194 
     | 
    
         | 
| 
       195 
195 
     | 
    
         
             
            Templates
         
     | 
| 
       196 
196 
     | 
    
         
             
            ---------
         
     | 
| 
       197 
     | 
    
         
            -
            API calls involving documents are wrapped in the RightSignature::Template class.
         
     | 
| 
       198 
     | 
    
         
            -
             
     | 
| 
       199 
197 
     | 
    
         
             
            #####Listing Templates
         
     | 
| 
       200 
198 
     | 
    
         
             
            ```
         
     | 
| 
       201 
     | 
    
         
            -
             
     | 
| 
      
 199 
     | 
    
         
            +
            @rs_connection.templates_list(options={})
         
     | 
| 
       202 
200 
     | 
    
         
             
            ```
         
     | 
| 
       203 
201 
     | 
    
         
             
            Optional Options:
         
     | 
| 
       204 
202 
     | 
    
         
             
             * page: page number
         
     | 
| 
         @@ -210,13 +208,13 @@ Optional Options: 
     | 
|
| 
       210 
208 
     | 
    
         | 
| 
       211 
209 
     | 
    
         
             
            #####Template Details
         
     | 
| 
       212 
210 
     | 
    
         
             
            ```
         
     | 
| 
       213 
     | 
    
         
            -
             
     | 
| 
      
 211 
     | 
    
         
            +
            @rs_connection.template_details(guid)
         
     | 
| 
       214 
212 
     | 
    
         
             
            ```
         
     | 
| 
       215 
213 
     | 
    
         | 
| 
       216 
214 
     | 
    
         
             
            #####Prepackage and Send template
         
     | 
| 
       217 
215 
     | 
    
         
             
            Most common use of API, clones a template and sends it for signature.
         
     | 
| 
       218 
216 
     | 
    
         
             
            ```
         
     | 
| 
       219 
     | 
    
         
            -
             
     | 
| 
      
 217 
     | 
    
         
            +
            @rs_connection.prepackage_and_send(guid, roles, options={})
         
     | 
| 
       220 
218 
     | 
    
         
             
            ```
         
     | 
| 
       221 
219 
     | 
    
         
             
             * guid: template guid to use. Should be a template that was prepackaged
         
     | 
| 
       222 
220 
     | 
    
         
             
             * roles: recipient names in array of {:name => "Person's Name", :email => "Email"} hashed by Role ID. Ex. {"signer_A" => {:name => "Your Name", :name => "a@example.com"}}
         
     | 
| 
         @@ -235,13 +233,13 @@ Optional options: 
     | 
|
| 
       235 
233 
     | 
    
         
             
            #####Template Prepacking
         
     | 
| 
       236 
234 
     | 
    
         
             
            For cloning a Template before sending it.
         
     | 
| 
       237 
235 
     | 
    
         
             
            ```
         
     | 
| 
       238 
     | 
    
         
            -
             
     | 
| 
      
 236 
     | 
    
         
            +
            @rs_connection.prepackage(guid)
         
     | 
| 
       239 
237 
     | 
    
         
             
            ```
         
     | 
| 
       240 
238 
     | 
    
         | 
| 
       241 
239 
     | 
    
         
             
            #####Template Prefilling
         
     | 
| 
       242 
240 
     | 
    
         
             
            After prepacking, the new template can be updated with prefill data. This won't send out the template as a document.
         
     | 
| 
       243 
241 
     | 
    
         
             
            ```
         
     | 
| 
       244 
     | 
    
         
            -
             
     | 
| 
      
 242 
     | 
    
         
            +
            @rs_connection.prefill(guid, subject, roles)
         
     | 
| 
       245 
243 
     | 
    
         
             
            ```
         
     | 
| 
       246 
244 
     | 
    
         
             
             * guid: template guid to use. Should be a template that was prepackaged
         
     | 
| 
       247 
245 
     | 
    
         
             
             * subject: document subject. 
         
     | 
| 
         @@ -271,14 +269,14 @@ options = { 
     | 
|
| 
       271 
269 
     | 
    
         
             
              ],
         
     | 
| 
       272 
270 
     | 
    
         
             
              :callback_url => "http://yoursite/callback"
         
     | 
| 
       273 
271 
     | 
    
         
             
            }
         
     | 
| 
       274 
     | 
    
         
            -
             
     | 
| 
      
 272 
     | 
    
         
            +
            @rs_connection.prefill(guid, subject, roles, options)
         
     | 
| 
       275 
273 
     | 
    
         
             
            ```
         
     | 
| 
       276 
274 
     | 
    
         | 
| 
       277 
275 
     | 
    
         | 
| 
       278 
276 
     | 
    
         
             
            #####Template Sending
         
     | 
| 
       279 
277 
     | 
    
         
             
            Send template as a document for signing. Same options as prefill.
         
     | 
| 
       280 
278 
     | 
    
         
             
            ```
         
     | 
| 
       281 
     | 
    
         
            -
             
     | 
| 
      
 279 
     | 
    
         
            +
            @rs_connection.send_template(guid, subject, roles)
         
     | 
| 
       282 
280 
     | 
    
         
             
            ```
         
     | 
| 
       283 
281 
     | 
    
         
             
             * guid: template guid to use. Should be a template that was prepackaged
         
     | 
| 
       284 
282 
     | 
    
         
             
             * subject: document subject. 
         
     | 
| 
         @@ -308,14 +306,14 @@ options = { 
     | 
|
| 
       308 
306 
     | 
    
         
             
              ],
         
     | 
| 
       309 
307 
     | 
    
         
             
              :callback_url => "http://yoursite/callback"
         
     | 
| 
       310 
308 
     | 
    
         
             
            }
         
     | 
| 
       311 
     | 
    
         
            -
             
     | 
| 
      
 309 
     | 
    
         
            +
            @rs_connection.send_template(guid, subject, roles, options)
         
     | 
| 
       312 
310 
     | 
    
         
             
            ```
         
     | 
| 
       313 
311 
     | 
    
         | 
| 
       314 
312 
     | 
    
         
             
            #####Embedded Signing Links for Sent Template
         
     | 
| 
       315 
313 
     | 
    
         
             
            Prepackages a template, and sends it out with each recipients marked as a embedded signer (email as noemail@rightsignature.com), then generates embedded signing URLs.
         
     | 
| 
       316 
314 
     | 
    
         
             
            Returns an array of {:name => "John Bellingham", "url" => "https://rightsignature.com/signatures/embedded?rt=1234"}
         
     | 
| 
       317 
315 
     | 
    
         
             
            ```
         
     | 
| 
       318 
     | 
    
         
            -
             
     | 
| 
      
 316 
     | 
    
         
            +
            @rs_connection.send_as_embedded_signers(guid, recipients, options={})
         
     | 
| 
       319 
317 
     | 
    
         
             
            ```
         
     | 
| 
       320 
318 
     | 
    
         
             
             * guid: guid of template to create document with
         
     | 
| 
       321 
319 
     | 
    
         
             
             * recipient: recipient names in array of {:name => "Person's Name"} hashed by Role ID. Ex. {"signer_A" => {:name => "Your Name"}}
         
     | 
| 
         @@ -335,7 +333,7 @@ RightSignature::Template.send_as_embedded_signers(guid, recipients, options={}) 
     | 
|
| 
       335 
333 
     | 
    
         
             
            #####Create New Template Link
         
     | 
| 
       336 
334 
     | 
    
         
             
            Generate a url that let's someone upload and create a template under OAuth user's account.
         
     | 
| 
       337 
335 
     | 
    
         
             
            ```
         
     | 
| 
       338 
     | 
    
         
            -
             
     | 
| 
      
 336 
     | 
    
         
            +
            @rs_connection.generate_build_url
         
     | 
| 
       339 
337 
     | 
    
         
             
            ```
         
     | 
| 
       340 
338 
     | 
    
         | 
| 
       341 
339 
     | 
    
         
             
            You can also add restrictions to what the person can do:
         
     | 
| 
         @@ -365,7 +363,7 @@ options = { 
     | 
|
| 
       365 
363 
     | 
    
         
             
              :callback_location => "http://example.com/done_signing", 
         
     | 
| 
       366 
364 
     | 
    
         
             
              :redirect_location => "http://example.com/come_back_here"
         
     | 
| 
       367 
365 
     | 
    
         
             
            }
         
     | 
| 
       368 
     | 
    
         
            -
             
     | 
| 
      
 366 
     | 
    
         
            +
            @rs_connection.generate_build_url(options)
         
     | 
| 
       369 
367 
     | 
    
         
             
            ```
         
     | 
| 
       370 
368 
     | 
    
         | 
| 
       371 
369 
     | 
    
         | 
| 
         @@ -375,18 +373,18 @@ API calls involving API user's account. 
     | 
|
| 
       375 
373 
     | 
    
         | 
| 
       376 
374 
     | 
    
         
             
            #####User Details
         
     | 
| 
       377 
375 
     | 
    
         
             
            ```
         
     | 
| 
       378 
     | 
    
         
            -
             
     | 
| 
      
 376 
     | 
    
         
            +
            @rs_connection.user_details
         
     | 
| 
       379 
377 
     | 
    
         
             
            ```
         
     | 
| 
       380 
378 
     | 
    
         | 
| 
       381 
379 
     | 
    
         
             
            #####Add User to Account
         
     | 
| 
       382 
380 
     | 
    
         
             
            ```
         
     | 
| 
       383 
     | 
    
         
            -
             
     | 
| 
      
 381 
     | 
    
         
            +
            @rs_connection.add_user(name, email)
         
     | 
| 
       384 
382 
     | 
    
         
             
            ```
         
     | 
| 
       385 
383 
     | 
    
         | 
| 
       386 
384 
     | 
    
         
             
            #####Usage Report
         
     | 
| 
       387 
385 
     | 
    
         
             
            Returns number of documents sent. Can scope to week, month, or day and count only signed, unsigned, or all documents.
         
     | 
| 
       388 
386 
     | 
    
         
             
            ```
         
     | 
| 
       389 
     | 
    
         
            -
             
     | 
| 
      
 387 
     | 
    
         
            +
            @rs_connection.usage_report(since=nil, signed=nil)
         
     | 
| 
       390 
388 
     | 
    
         
             
            ```
         
     | 
| 
       391 
389 
     | 
    
         
             
            * since: Only count documents sent withing the 'week', 'month', or 'day'.
         
     | 
| 
       392 
390 
     | 
    
         
             
            * signed: Only count signed documents if 'true', else all documents
         
     | 
| 
         @@ -397,7 +395,7 @@ Custom API calls using RightSignature::Connection 
     | 
|
| 
       397 
395 
     | 
    
         
             
            In case there are new API paths, RightSignature::Connection allows a specific path to be specified.
         
     | 
| 
       398 
396 
     | 
    
         
             
            #####Ex. GET https://rightsignature.com/api/documents.xml
         
     | 
| 
       399 
397 
     | 
    
         
             
            ```
         
     | 
| 
       400 
     | 
    
         
            -
             
     | 
| 
      
 398 
     | 
    
         
            +
            @rs_connection.get('/api/documents.xml', {:my => 'params'}, {'custom_header' => 'headerValue'})
         
     | 
| 
       401 
399 
     | 
    
         
             
            ```
         
     | 
| 
       402 
400 
     | 
    
         | 
| 
       403 
401 
     | 
    
         
             
            #####Ex. POST https://rightsignature.com/api/documents.xml
         
     | 
| 
         @@ -408,14 +406,14 @@ request_hash= { 
     | 
|
| 
       408 
406 
     | 
    
         
             
                'document_data' => {:type => 'url', :value => 'http://localhost:3000/sub.pdf' }
         
     | 
| 
       409 
407 
     | 
    
         
             
              }
         
     | 
| 
       410 
408 
     | 
    
         
             
            }
         
     | 
| 
       411 
     | 
    
         
            -
             
     | 
| 
      
 409 
     | 
    
         
            +
            @rs_connection.post('/api/documents.xml', request_hash, {'custom_header' => 'headerValue'})
         
     | 
| 
       412 
410 
     | 
    
         
             
            ```
         
     | 
| 
       413 
411 
     | 
    
         | 
| 
       414 
412 
     | 
    
         
             
            Development Notes
         
     | 
| 
       415 
413 
     | 
    
         
             
            -----------------
         
     | 
| 
       416 
414 
     | 
    
         
             
            To load in irb from project root:
         
     | 
| 
       417 
415 
     | 
    
         
             
            ```
         
     | 
| 
       418 
     | 
    
         
            -
            $:.push File.expand_path("../lib", __FILE__); require "rightsignature"; RightSignature:: 
     | 
| 
      
 416 
     | 
    
         
            +
            $:.push File.expand_path("../lib", __FILE__); require "rightsignature"; RightSignature::Connection.new(MY_KEYS)
         
     | 
| 
       419 
417 
     | 
    
         
             
            ```
         
     | 
| 
       420 
418 
     | 
    
         | 
| 
       421 
419 
     | 
    
         
             
            TODO:
         
     | 
    
        data/lib/rightsignature.rb
    CHANGED
    
    | 
         @@ -11,52 +11,3 @@ require 'rightsignature/connection/token_connection' 
     | 
|
| 
       11 
11 
     | 
    
         
             
            require 'rightsignature/connection'
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
            XmlFu::Node.symbol_conversion_algorithm = :none
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
            module RightSignature
         
     | 
| 
       16 
     | 
    
         
            -
              class <<self
         
     | 
| 
       17 
     | 
    
         
            -
                attr_accessor :configuration
         
     | 
| 
       18 
     | 
    
         
            -
                
         
     | 
| 
       19 
     | 
    
         
            -
                def load_configuration(creds={})
         
     | 
| 
       20 
     | 
    
         
            -
                  @configuration = {}
         
     | 
| 
       21 
     | 
    
         
            -
                  oauth_keys.each do |key|
         
     | 
| 
       22 
     | 
    
         
            -
                    @configuration[key] = creds[key].to_s
         
     | 
| 
       23 
     | 
    
         
            -
                  end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                  api_token_keys.each do |key|
         
     | 
| 
       26 
     | 
    
         
            -
                    @configuration[key] = creds[key].to_s
         
     | 
| 
       27 
     | 
    
         
            -
                  end
         
     | 
| 
       28 
     | 
    
         
            -
                  
         
     | 
| 
       29 
     | 
    
         
            -
                  @configuration
         
     | 
| 
       30 
     | 
    
         
            -
                end
         
     | 
| 
       31 
     | 
    
         
            -
                
         
     | 
| 
       32 
     | 
    
         
            -
                def check_credentials
         
     | 
| 
       33 
     | 
    
         
            -
                  raise "Please set load_configuration with #{api_token_keys.join(',')} or #{oauth_keys.join(',')}" unless has_api_token? || has_oauth_credentials?
         
     | 
| 
       34 
     | 
    
         
            -
                end
         
     | 
| 
       35 
     | 
    
         
            -
                
         
     | 
| 
       36 
     | 
    
         
            -
                def has_api_token?
         
     | 
| 
       37 
     | 
    
         
            -
                  return false if @configuration.nil?
         
     | 
| 
       38 
     | 
    
         
            -
                  api_token_keys.each do |key|
         
     | 
| 
       39 
     | 
    
         
            -
                    return false if @configuration[key].nil? || @configuration[key].match(/^\s*$/)
         
     | 
| 
       40 
     | 
    
         
            -
                  end
         
     | 
| 
       41 
     | 
    
         
            -
                  
         
     | 
| 
       42 
     | 
    
         
            -
                  return true
         
     | 
| 
       43 
     | 
    
         
            -
                end
         
     | 
| 
       44 
     | 
    
         
            -
                
         
     | 
| 
       45 
     | 
    
         
            -
                def has_oauth_credentials?
         
     | 
| 
       46 
     | 
    
         
            -
                  return false if @configuration.nil?
         
     | 
| 
       47 
     | 
    
         
            -
                  oauth_keys.each do |key| 
         
     | 
| 
       48 
     | 
    
         
            -
                    return false if @configuration[key].nil? || @configuration[key].match(/^\s*$/)
         
     | 
| 
       49 
     | 
    
         
            -
                  end
         
     | 
| 
       50 
     | 
    
         
            -
                  
         
     | 
| 
       51 
     | 
    
         
            -
                  return true
         
     | 
| 
       52 
     | 
    
         
            -
                end
         
     | 
| 
       53 
     | 
    
         
            -
                
         
     | 
| 
       54 
     | 
    
         
            -
                def oauth_keys
         
     | 
| 
       55 
     | 
    
         
            -
                  [:consumer_key, :consumer_secret, :access_token, :access_secret].freeze
         
     | 
| 
       56 
     | 
    
         
            -
                end
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
                def api_token_keys
         
     | 
| 
       59 
     | 
    
         
            -
                  [:api_token].freeze
         
     | 
| 
       60 
     | 
    
         
            -
                end
         
     | 
| 
       61 
     | 
    
         
            -
              end
         
     | 
| 
       62 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,20 +1,18 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module RightSignature
         
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
       3 
     | 
    
         
            -
                 
     | 
| 
       4 
     | 
    
         
            -
                   
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                   
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                   
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                    RightSignature::Connection.get "/api/account/usage_report.xml", options
         
     | 
| 
       17 
     | 
    
         
            -
                  end
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Account 
         
     | 
| 
      
 3 
     | 
    
         
            +
                def user_details
         
     | 
| 
      
 4 
     | 
    
         
            +
                  get "/api/users/user_details.xml"
         
     | 
| 
      
 5 
     | 
    
         
            +
                end
         
     | 
| 
      
 6 
     | 
    
         
            +
                
         
     | 
| 
      
 7 
     | 
    
         
            +
                def add_user(name, email)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  post "/api/users.xml", {:user => {:name => name, :email => email}}
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
                
         
     | 
| 
      
 11 
     | 
    
         
            +
                def usage_report(since=nil, signed=nil)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  options = {}
         
     | 
| 
      
 13 
     | 
    
         
            +
                  options[:since] = since if since && ["month", "week", "day"].include?(since)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  options[:signed] = signed.to_s unless signed.nil?
         
     | 
| 
      
 15 
     | 
    
         
            +
                  get "/api/account/usage_report.xml", options
         
     | 
| 
       18 
16 
     | 
    
         
             
                end
         
     | 
| 
       19 
17 
     | 
    
         
             
              end
         
     | 
| 
       20 
18 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,84 +1,136 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module RightSignature
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Connection
         
     | 
| 
       3 
     | 
    
         
            -
                 
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
      
 3 
     | 
    
         
            +
                include RightSignature::Document
         
     | 
| 
      
 4 
     | 
    
         
            +
                include RightSignature::Account
         
     | 
| 
      
 5 
     | 
    
         
            +
                include RightSignature::Template
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                attr_accessor :configuration
         
     | 
| 
      
 8 
     | 
    
         
            +
                attr_accessor :oauth_connection
         
     | 
| 
      
 9 
     | 
    
         
            +
                attr_accessor :token_connection
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                def initialize(creds={})
         
     | 
| 
      
 12 
     | 
    
         
            +
                  @configuration = {}
         
     | 
| 
      
 13 
     | 
    
         
            +
                  RightSignature::Connection.oauth_keys.each do |key|
         
     | 
| 
      
 14 
     | 
    
         
            +
                    @configuration[key] = creds[key].to_s
         
     | 
| 
       10 
15 
     | 
    
         
             
                  end
         
     | 
| 
       11 
16 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                   
     | 
| 
       13 
     | 
    
         
            -
                     
     | 
| 
       14 
     | 
    
         
            -
                      options = {}
         
     | 
| 
       15 
     | 
    
         
            -
                      options[:headers] = headers
         
     | 
| 
       16 
     | 
    
         
            -
                      options[:body] = XmlFu.xml(body)
         
     | 
| 
       17 
     | 
    
         
            -
                      
         
     | 
| 
       18 
     | 
    
         
            -
                      parse_response(RightSignature::TokenConnection.request(:put, url, options))
         
     | 
| 
       19 
     | 
    
         
            -
                    else
         
     | 
| 
       20 
     | 
    
         
            -
                      parse_response(RightSignature::OauthConnection.request(:put, url, XmlFu.xml(body), headers))
         
     | 
| 
       21 
     | 
    
         
            -
                    end
         
     | 
| 
      
 17 
     | 
    
         
            +
                  RightSignature::Connection.api_token_keys.each do |key|
         
     | 
| 
      
 18 
     | 
    
         
            +
                    @configuration[key] = creds[key].to_s
         
     | 
| 
       22 
19 
     | 
    
         
             
                  end
         
     | 
| 
       23 
20 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
                   
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                      options = {}
         
     | 
| 
       27 
     | 
    
         
            -
                      options[:headers] = headers
         
     | 
| 
      
 21 
     | 
    
         
            +
                  @token_connection = RightSignature::TokenConnection.new(*RightSignature::Connection.api_token_keys.map{|k| @configuration[k]})
         
     | 
| 
      
 22 
     | 
    
         
            +
                  @oauth_connection = RightSignature::OauthConnection.new(@configuration)
         
     | 
| 
       28 
23 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 24 
     | 
    
         
            +
                  @configuration
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                def check_credentials
         
     | 
| 
      
 28 
     | 
    
         
            +
                  raise "Please set load_configuration with #{RightSignature::Connection.api_token_keys.join(',')} or #{RightSignature::Connection.oauth_keys.join(',')}" unless has_api_token? || has_oauth_credentials?
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                def has_api_token?
         
     | 
| 
      
 32 
     | 
    
         
            +
                  return false if @configuration.nil?
         
     | 
| 
      
 33 
     | 
    
         
            +
                  RightSignature::Connection.api_token_keys.each do |key|
         
     | 
| 
      
 34 
     | 
    
         
            +
                    return false if @configuration[key].nil? || @configuration[key].match(/^\s*$/)
         
     | 
| 
       33 
35 
     | 
    
         
             
                  end
         
     | 
| 
       34 
36 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
                   
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
      
 37 
     | 
    
         
            +
                  return true
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                def has_oauth_credentials?
         
     | 
| 
      
 41 
     | 
    
         
            +
                  return false if @configuration.nil?
         
     | 
| 
      
 42 
     | 
    
         
            +
                  RightSignature::Connection.oauth_keys.each do |key| 
         
     | 
| 
      
 43 
     | 
    
         
            +
                    return false if @configuration[key].nil? || @configuration[key].match(/^\s*$/)
         
     | 
| 
      
 44 
     | 
    
         
            +
                  end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                  return true
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                def self.oauth_keys
         
     | 
| 
      
 50 
     | 
    
         
            +
                  [:consumer_key, :consumer_secret, :access_token, :access_secret].freeze
         
     | 
| 
      
 51 
     | 
    
         
            +
                end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                def self.api_token_keys
         
     | 
| 
      
 54 
     | 
    
         
            +
                  [:api_token].freeze
         
     | 
| 
      
 55 
     | 
    
         
            +
                end    
         
     | 
| 
      
 56 
     | 
    
         
            +
                
         
     | 
| 
      
 57 
     | 
    
         
            +
                def site
         
     | 
| 
      
 58 
     | 
    
         
            +
                  if has_api_token?
         
     | 
| 
      
 59 
     | 
    
         
            +
                    RightSignature::TokenConnection.base_uri
         
     | 
| 
      
 60 
     | 
    
         
            +
                  else
         
     | 
| 
      
 61 
     | 
    
         
            +
                    @oauth_connection.oauth_consumer.site
         
     | 
| 
       49 
62 
     | 
    
         
             
                  end
         
     | 
| 
      
 63 
     | 
    
         
            +
                end
         
     | 
| 
       50 
64 
     | 
    
         | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
      
 65 
     | 
    
         
            +
                def put(url, body={}, headers={})
         
     | 
| 
      
 66 
     | 
    
         
            +
                  if has_api_token?
         
     | 
| 
      
 67 
     | 
    
         
            +
                    options = {}
         
     | 
| 
      
 68 
     | 
    
         
            +
                    options[:headers] = headers
         
     | 
| 
      
 69 
     | 
    
         
            +
                    options[:body] = XmlFu.xml(body)
         
     | 
| 
       53 
70 
     | 
    
         | 
| 
       54 
     | 
    
         
            -
                     
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
                      options[:body] = XmlFu.xml(body)
         
     | 
| 
       58 
     | 
    
         
            -
                      parse_response(RightSignature::TokenConnection.request(:post, url, options))
         
     | 
| 
       59 
     | 
    
         
            -
                    else
         
     | 
| 
       60 
     | 
    
         
            -
                      parse_response(RightSignature::OauthConnection.request(:post, url, XmlFu.xml(body), headers))
         
     | 
| 
       61 
     | 
    
         
            -
                    end
         
     | 
| 
      
 71 
     | 
    
         
            +
                    parse_response(@token_connection.request(:put, url, options))
         
     | 
| 
      
 72 
     | 
    
         
            +
                  else
         
     | 
| 
      
 73 
     | 
    
         
            +
                    parse_response(@oauth_connection.request(:put, url, XmlFu.xml(body), headers))
         
     | 
| 
       62 
74 
     | 
    
         
             
                  end
         
     | 
| 
      
 75 
     | 
    
         
            +
                end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                def delete(url, headers={})
         
     | 
| 
      
 78 
     | 
    
         
            +
                  if has_api_token?
         
     | 
| 
      
 79 
     | 
    
         
            +
                    options = {}
         
     | 
| 
      
 80 
     | 
    
         
            +
                    options[:headers] = headers
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
                    parse_response(@token_connection.request(:delete, url, options))
         
     | 
| 
      
 83 
     | 
    
         
            +
                  else
         
     | 
| 
      
 84 
     | 
    
         
            +
                    parse_response(@oauth_connection.request(:delete, url, headers))
         
     | 
| 
      
 85 
     | 
    
         
            +
                  end
         
     | 
| 
      
 86 
     | 
    
         
            +
                end
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
                def get(url, params={}, headers={})
         
     | 
| 
      
 89 
     | 
    
         
            +
                  check_credentials
         
     | 
| 
       63 
90 
     | 
    
         | 
| 
       64 
     | 
    
         
            -
                   
     | 
| 
       65 
     | 
    
         
            -
                     
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
                       
     | 
| 
       72 
     | 
    
         
            -
                    else
         
     | 
| 
       73 
     | 
    
         
            -
                      unless response.success?
         
     | 
| 
       74 
     | 
    
         
            -
                        puts response.body
         
     | 
| 
       75 
     | 
    
         
            -
                        raise RightSignature::ResponseError.new(response)
         
     | 
| 
       76 
     | 
    
         
            -
                      end
         
     | 
| 
       77 
     | 
    
         
            -
                      
         
     | 
| 
       78 
     | 
    
         
            -
                      response.parsed_response
         
     | 
| 
      
 91 
     | 
    
         
            +
                  if has_api_token?
         
     | 
| 
      
 92 
     | 
    
         
            +
                    options = {}
         
     | 
| 
      
 93 
     | 
    
         
            +
                    options[:headers] = headers
         
     | 
| 
      
 94 
     | 
    
         
            +
                    options[:query] = params
         
     | 
| 
      
 95 
     | 
    
         
            +
                    parse_response(@token_connection.request(:get, url, options))
         
     | 
| 
      
 96 
     | 
    
         
            +
                  else
         
     | 
| 
      
 97 
     | 
    
         
            +
                    unless params.empty?
         
     | 
| 
      
 98 
     | 
    
         
            +
                      url = "#{url}?#{params.sort.map{|param| URI.escape("#{param[0]}=#{param[1]}")}.join('&')}"
         
     | 
| 
       79 
99 
     | 
    
         
             
                    end
         
     | 
| 
      
 100 
     | 
    
         
            +
                    parse_response(@oauth_connection.request(:get, url, headers))
         
     | 
| 
       80 
101 
     | 
    
         
             
                  end
         
     | 
| 
      
 102 
     | 
    
         
            +
                end
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
                def post(url, body={}, headers={})
         
     | 
| 
      
 105 
     | 
    
         
            +
                  check_credentials
         
     | 
| 
       81 
106 
     | 
    
         | 
| 
      
 107 
     | 
    
         
            +
                  if has_api_token?
         
     | 
| 
      
 108 
     | 
    
         
            +
                    options = {}
         
     | 
| 
      
 109 
     | 
    
         
            +
                    options[:headers] = headers
         
     | 
| 
      
 110 
     | 
    
         
            +
                    options[:body] = XmlFu.xml(body)
         
     | 
| 
      
 111 
     | 
    
         
            +
                    parse_response(@token_connection.request(:post, url, options))
         
     | 
| 
      
 112 
     | 
    
         
            +
                  else
         
     | 
| 
      
 113 
     | 
    
         
            +
                    parse_response(@oauth_connection.request(:post, url, XmlFu.xml(body), headers))
         
     | 
| 
      
 114 
     | 
    
         
            +
                  end
         
     | 
| 
      
 115 
     | 
    
         
            +
                end
         
     | 
| 
      
 116 
     | 
    
         
            +
                
         
     | 
| 
      
 117 
     | 
    
         
            +
                def parse_response(response)
         
     | 
| 
      
 118 
     | 
    
         
            +
                  if response.is_a? Net::HTTPResponse
         
     | 
| 
      
 119 
     | 
    
         
            +
                    unless response.is_a? Net::HTTPSuccess
         
     | 
| 
      
 120 
     | 
    
         
            +
                      puts response.body
         
     | 
| 
      
 121 
     | 
    
         
            +
                      raise RightSignature::ResponseError.new(response)
         
     | 
| 
      
 122 
     | 
    
         
            +
                    end
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
                    MultiXml.parse(response.body)
         
     | 
| 
      
 125 
     | 
    
         
            +
                  else
         
     | 
| 
      
 126 
     | 
    
         
            +
                    unless response.success?
         
     | 
| 
      
 127 
     | 
    
         
            +
                      puts response.body
         
     | 
| 
      
 128 
     | 
    
         
            +
                      raise RightSignature::ResponseError.new(response)
         
     | 
| 
      
 129 
     | 
    
         
            +
                    end
         
     | 
| 
      
 130 
     | 
    
         
            +
                    
         
     | 
| 
      
 131 
     | 
    
         
            +
                    response.parsed_response
         
     | 
| 
      
 132 
     | 
    
         
            +
                  end
         
     | 
| 
       82 
133 
     | 
    
         
             
                end
         
     | 
| 
      
 134 
     | 
    
         
            +
                
         
     | 
| 
       83 
135 
     | 
    
         
             
              end
         
     | 
| 
       84 
136 
     | 
    
         
             
            end
         
     |