Class: PandaDoc
Instance Attribute Summary collapse
-
#key ⇒ Object
Returns the value of attribute key.
-
#key_type ⇒ Object
Returns the value of attribute key_type.
Instance Method Summary collapse
- #create_document_folder(params = nil) ⇒ Object
-
#create_document_from_pdf(params = nil) ⇒ Object
POST.
- #create_document_from_template(params = nil) ⇒ Object
- #create_document_link(params = nil) ⇒ Object
- #create_template_folder(params = nil) ⇒ Object
- #delete_document(params = nil) ⇒ Object
- #delete_template(params = nil) ⇒ Object
- #document_details(params = nil) ⇒ Object
- #document_status(params = nil) ⇒ Object
- #download_document(params = nil) ⇒ Object
- #download_protected_document(params = nil) ⇒ Object
- #get_code(params = nil) ⇒ Object
-
#headers ⇒ Object
generic headers EXCEPT create doc from PDF.
-
#initialize(params) ⇒ PandaDoc
constructor
A new instance of PandaDoc.
- #list_document_folders(params = nil) ⇒ Object
- #list_documents(params = nil) ⇒ Object
- #list_template_folders(params = nil) ⇒ Object
- #list_templates(params = nil) ⇒ Object
-
#raise_if_no_id(params) ⇒ Object
show calls have corresponding ID.
-
#raise_if_non_authed ⇒ Object
key to make request is present.
- #refresh_access_token(params = nil) ⇒ Object
- #send_document(params = nil) ⇒ Object
- #template_details(params = nil) ⇒ Object
- #update_document_folder(params = nil) ⇒ Object
- #update_template_folder(params = nil) ⇒ Object
Constructor Details
#initialize(params) ⇒ PandaDoc
Returns a new instance of PandaDoc.
12 13 14 15 |
# File 'lib/panda_api.rb', line 12 def initialize(params) @key = params[:key] @key_type = params[:key_type] end |
Instance Attribute Details
#key ⇒ Object
Returns the value of attribute key.
10 11 12 |
# File 'lib/panda_api.rb', line 10 def key @key end |
#key_type ⇒ Object
Returns the value of attribute key_type.
10 11 12 |
# File 'lib/panda_api.rb', line 10 def key_type @key_type end |
Instance Method Details
#create_document_folder(params = nil) ⇒ Object
157 158 159 160 |
# File 'lib/panda_api.rb', line 157 def create_document_folder(params = nil) raise_if_non_authed self.class.post('https://api.pandadoc.com/public/v1/documents/folders', headers: headers, body: JSON.dump(params)).parsed_response end |
#create_document_from_pdf(params = nil) ⇒ Object
POST
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/panda_api.rb', line 104 def create_document_from_pdf(params = nil) raise_if_non_authed # URI for Request url = URI.parse('https://api.pandadoc.com/public/v1/documents/') # Payload will have a file along with other form-data json = { "name": params[:name], "recipients": params[:recipients], "fields": params[:fields], "metadata": params[:metadata], "parse_form_fields": params[:parse_form_fields] } payload = { data: JSON.dump(json), file: Faraday::UploadIO.new(params[:file], "application/pdf") } # making request connection connection = Faraday.new(url) do |conn| conn. "API-Key", @key # request is multipart conn.request :multipart # url_encoded request conn.request :url_encoded # expects json conn.response :json, content_type: /\bjson$/ conn.adapter Faraday.default_adapter end # make request connection.post(url, payload).body end |
#create_document_from_template(params = nil) ⇒ Object
139 140 141 142 143 |
# File 'lib/panda_api.rb', line 139 def create_document_from_template(params = nil) raise_if_non_authed self.class.post('https://api.pandadoc.com/public/v1/documents/', body: JSON.dump(params), headers: headers).parsed_response end |
#create_document_link(params = nil) ⇒ Object
151 152 153 154 155 |
# File 'lib/panda_api.rb', line 151 def create_document_link(params = nil) raise_if_non_authed self.class.post("https://api.pandadoc.com/public/v1/documents/#{params[:id]}/session", body: JSON.dump(params), headers: headers).parsed_response end |
#create_template_folder(params = nil) ⇒ Object
162 163 164 165 |
# File 'lib/panda_api.rb', line 162 def create_template_folder(params = nil) raise_if_non_authed self.class.post('https://api.pandadoc.com/public/v1/templates/folders', headers: headers, body: JSON.dump(params)).parsed_response end |
#delete_document(params = nil) ⇒ Object
199 200 201 202 |
# File 'lib/panda_api.rb', line 199 def delete_document(params = nil) raise_if_no_id(params) self.class.delete("https://api.pandadoc.com/public/v1/documents/#{params[:id]}", headers: headers).parsed_response end |
#delete_template(params = nil) ⇒ Object
204 205 206 207 |
# File 'lib/panda_api.rb', line 204 def delete_template(params = nil) raise_if_no_id(params) self.class.delete("https://api.pandadoc.com/public/v1/templates/#{params[:id]}", headers: headers).parsed_response end |
#document_details(params = nil) ⇒ Object
49 50 51 52 53 54 |
# File 'lib/panda_api.rb', line 49 def document_details(params = nil) raise_if_non_authed raise_if_no_id(params) self.class.get("https://api.pandadoc.com/public/v1/documents/#{params[:id]}/details", headers: headers).parsed_response end |
#document_status(params = nil) ⇒ Object
42 43 44 45 46 47 |
# File 'lib/panda_api.rb', line 42 def document_status(params = nil) raise_if_non_authed raise_if_no_id(params) self.class.get("https://api.pandadoc.com/public/v1/documents/#{params[:id]}", headers: headers).parsed_response end |
#download_document(params = nil) ⇒ Object
62 63 64 65 66 67 68 |
# File 'lib/panda_api.rb', line 62 def download_document(params = nil) raise_if_non_authed raise_if_no_id(params) sanitized_params = params.nil? ? params : URI.encode_www_form(params) self.class.get("https://api.pandadoc.com/public/v1/documents/#{params[:id]}/download?#{sanitized_params}", headers: headers).parsed_response end |
#download_protected_document(params = nil) ⇒ Object
70 71 72 73 74 75 |
# File 'lib/panda_api.rb', line 70 def download_protected_document(params = nil) raise_if_non_authed raise_if_no_id(params) self.class.get("https://api.pandadoc.com/public/v1/documents/#{params[:id]}/download-protected", headers: headers).parsed_response end |
#get_code(params = nil) ⇒ Object
167 168 169 170 171 172 173 174 |
# File 'lib/panda_api.rb', line 167 def get_code(params = nil) first = "https://app.pandadoc.com/oauth2/authorize?client_id=#{params[:client_id]}&redirect_uri=#{params[:redirect_uri]}&scope=read+write&response_type=code" Launchy.open(first) puts "enter the code located on your redirect URI browser instance: " code = STDIN.gets params[:code] = code self.get_oauth_access_token(params) end |
#headers ⇒ Object
generic headers EXCEPT create doc from PDF
18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/panda_api.rb', line 18 def headers if @key_type == "bearer" { 'Authorization': "Bearer #{@key}", "Content-Type": "application/json" } else { 'Authorization': "API-Key #{@key}", "Content-Type": "application/json" } end end |
#list_document_folders(params = nil) ⇒ Object
90 91 92 93 94 |
# File 'lib/panda_api.rb', line 90 def list_document_folders(params = nil) raise_if_non_authed sanitized_params = params.nil? ? params : URI.encode_www_form(params) self.class.get("https://api.pandadoc.com/public/v1/documents/folders?#{sanitized_params}", headers: headers).parsed_response end |
#list_documents(params = nil) ⇒ Object
56 57 58 59 60 |
# File 'lib/panda_api.rb', line 56 def list_documents(params = nil) raise_if_non_authed sanitized_params = params.nil? ? params : URI.encode_www_form(params) self.class.get("https://api.pandadoc.com/public/v1/documents?#{sanitized_params}", headers: headers).parsed_response end |
#list_template_folders(params = nil) ⇒ Object
96 97 98 99 100 |
# File 'lib/panda_api.rb', line 96 def list_template_folders(params = nil) raise_if_non_authed sanitized_params = params.nil? ? params : URI.encode_www_form(params) self.class.get("https://api.pandadoc.com/public/v1/templates/folders?#{sanitized_params}", headers: headers).parsed_response end |
#list_templates(params = nil) ⇒ Object
77 78 79 80 81 |
# File 'lib/panda_api.rb', line 77 def list_templates(params = nil) raise_if_non_authed sanitized_params = params.nil? ? params : URI.encode_www_form(params) self.class.get("https://api.pandadoc.com/public/v1/templates?#{sanitized_params}", headers: headers).parsed_response end |
#raise_if_no_id(params) ⇒ Object
show calls have corresponding ID
38 39 40 |
# File 'lib/panda_api.rb', line 38 def raise_if_no_id(params) raise 'No ID to make request' unless !params[:id].nil? end |
#raise_if_non_authed ⇒ Object
key to make request is present
33 34 35 |
# File 'lib/panda_api.rb', line 33 def raise_if_non_authed raise 'No access key to make request' unless !@key.nil? end |
#refresh_access_token(params = nil) ⇒ Object
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 |
# File 'lib/panda_api.rb', line 176 def refresh_access_token(params = nil) raise_if_non_authed # required => client, client_secret, redirect parsed_params = { "grant_type": "refresh_token", "client_id": @client_id || params[:client_id], "client_secret": @client_secret || params[:client_secret], "refresh_token": params[:refresh_token], "code": params[:code], "scope": params[:scope] || 'read+write' } missing_keys = parsed_params.keys.select { |p| parsed_params[p.to_sym].nil? } raise "Please Provide #{missing_keys.join(', ')} to make request" if missing_keys.length > 0 res = self.class.post("https://api.pandadoc.com/oauth2/access_token", body: URI.encode_www_form(parsed_params), headers: {"Accept": "application/json"}).parsed_response @key = res["access_token"] @key_type = "bearer" res end |
#send_document(params = nil) ⇒ Object
145 146 147 148 149 |
# File 'lib/panda_api.rb', line 145 def send_document(params = nil) raise_if_non_authed self.class.post("https://api.pandadoc.com/public/v1/documents/#{params[:id]}/send", body: JSON.dump(params), headers: headers).parsed_response end |
#template_details(params = nil) ⇒ Object
83 84 85 86 87 88 |
# File 'lib/panda_api.rb', line 83 def template_details(params = nil) raise_if_non_authed raise_if_no_id(params) self.class.get("https://api.pandadoc.com/public/v1/templates/#{params[:id]}/details", headers: headers).parsed_response end |
#update_document_folder(params = nil) ⇒ Object
209 210 211 212 |
# File 'lib/panda_api.rb', line 209 def update_document_folder(params = nil) raise_if_no_id(params) self.class.put("https://api.pandadoc.com/public/v1/documents/folders/#{params[:id]}", headers: headers, body: JSON.dump(params)).parsed_response end |
#update_template_folder(params = nil) ⇒ Object
214 215 216 217 |
# File 'lib/panda_api.rb', line 214 def update_template_folder(params = nil) raise_if_no_id(params) self.class.put("https://api.pandadoc.com/public/v1/templates/folders/#{params[:id]}", headers: headers, body: JSON.dump(params)).parsed_response end |