cloudpdf 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 43c1dbf9cddcd471847187077c1ac9cab4d9533da0422139aa615d838aa7c6c7
4
- data.tar.gz: 9aa95abe683f9cf4bd44aa1780ebc6ffede7f842de03c66e330408cd9e4797b2
3
+ metadata.gz: cf33fa66c347e6534f5986b74da2d041a891f74498cb2e17e348ba0fd4176690
4
+ data.tar.gz: eb37060fb4d00500513f0e34793246501ff2e92fa86122d81d80eefb2be9aba5
5
5
  SHA512:
6
- metadata.gz: b42ead52f7b263de41407d7c86b6a397e76313f8b19eb20de1d8c003ca65dd25b2dc681e4df0e6d34d3cde954cc14141230ecdad477170567c6d88f7cc998c33
7
- data.tar.gz: 912a5c961cef45e2de6847f44ab035761e32663e92dc62d0823262064f45edb935bdf4abed038c694d4fac46a1523d623456865bc43fbfc38d5b4db4fb08812e
6
+ metadata.gz: 1d7bff3a3167af0751f7d30e481059d135d61bc46988754dcc68fc20e5d05635b5f985979fdf39d1ecd4883617811c581499e2740aee4396061b251d40c0244d
7
+ data.tar.gz: 95e40f01ae8c2d393f19e382a25a0fea2d6fb2e84f78a931e4ca065926ccd102ce97338425d8c88f67ee3a14107bd4459a218dd7c9976c9bfc9255c2683c7ca0
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in groovehq.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,27 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ cloudpdf (1.0.0)
5
+ httparty
6
+ jwt
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ httparty (0.20.0)
12
+ mime-types (~> 3.0)
13
+ multi_xml (>= 0.5.2)
14
+ jwt (2.3.0)
15
+ mime-types (3.4.1)
16
+ mime-types-data (~> 3.2015)
17
+ mime-types-data (3.2022.0105)
18
+ multi_xml (0.6.0)
19
+
20
+ PLATFORMS
21
+ arm64-darwin-21
22
+
23
+ DEPENDENCIES
24
+ cloudpdf!
25
+
26
+ BUNDLED WITH
27
+ 2.3.7
data/cloudpdf.gemspec ADDED
@@ -0,0 +1,29 @@
1
+ Gem::Specification.new do |spec|
2
+ spec.name = "cloudpdf"
3
+ spec.version = "1.0.1"
4
+ spec.authors = ["Bob Singor"]
5
+ spec.email = ["hello@cloudpdf.io"]
6
+
7
+ spec.summary = "Ruby wrapper for the CloudPDF API"
8
+ spec.homepage = "https://github.com/cloudpdf-io/cloudpdf-ruby"
9
+ spec.license = "MIT"
10
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
11
+
12
+ # spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
13
+
14
+ spec.metadata["homepage_uri"] = spec.homepage
15
+ # spec.metadata["source_code_uri"] = ""
16
+ # spec.metadata["changelog_uri"] = ""
17
+
18
+ spec.add_dependency "httparty"
19
+ spec.add_dependency "jwt"
20
+
21
+ # Specify which files should be added to the gem when it is released.
22
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
24
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
+ end
26
+ spec.bindir = "exe"
27
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+ spec.require_paths = ["lib"]
29
+ end
@@ -0,0 +1,169 @@
1
+ module CloudPDF
2
+
3
+ class Client
4
+
5
+ def initialize(config)
6
+ @api_key = config.fetch(:api_key)
7
+ @cloud_name = config.fetch(:cloud_name, nil)
8
+ @signing_secret = config.fetch(:signing_secret, nil)
9
+ @signed = false
10
+
11
+ if !@signing_secret.nil? && !@cloud_name.nil?
12
+ @signed = true
13
+ end
14
+ end
15
+
16
+ def setSigned(enabled)
17
+ if @signing_secret.nil? || @cloud_name.nil?
18
+ raise "signing_secret and cloud_name should be set"
19
+ end
20
+
21
+ @signed = enabled
22
+ end
23
+
24
+ def account
25
+ get_response("APIV2GetAccount", "/account")
26
+ end
27
+
28
+ def auth
29
+ get_response("APIV2GetAuth", "/account")
30
+ end
31
+
32
+ def create_document(payload)
33
+ post_response("APIV2CreateDocument", "/documents", payload)
34
+ end
35
+
36
+ def get_document(id)
37
+ get_response("APIV2GetDocument", "/documents/" + id, {id: id})
38
+ end
39
+
40
+ def update_document(id, payload)
41
+ put_response("APIV2UpdateDocument", "/documents/" + id, {id: id, **payload})
42
+ end
43
+
44
+ def delete_document(id)
45
+ delete_response("APIV2DeleteDocument", "/documents/" + id, {id: id})
46
+ end
47
+
48
+ def create_new_file_version(id, payload)
49
+ post_response(
50
+ "APIV2CreateDocumentFile",
51
+ "/documents/" + id + "/files",
52
+ {id: id, **payload}
53
+ )
54
+ end
55
+
56
+ def upload_document_file_complete(id, fileId)
57
+ patch_response(
58
+ "APIV2PatchDocumentFile",
59
+ "/documents/" + id + "/files/" + fileId,
60
+ {id: id, fileId: fileId, uploadCompleted: true}
61
+ )
62
+ end
63
+
64
+ def get_document_file(documentId, fileId)
65
+ get_response("APIV2GetDocumentFile", "/documents/" + documentId + "/files/" + fileId, {id: documentId, fileId: fileId})
66
+ end
67
+
68
+ def get_viewer_token(params, expires_in = 60*60)
69
+ get_signed_token("APIGetDocument", params, expires_in)
70
+ end
71
+
72
+ def create_webhook(payload)
73
+ post_response("APIV2CreateWebhook", "/webhooks", payload)
74
+ end
75
+
76
+ def get_webhook(id)
77
+ get_response("APIV2GetWebhook", "/webhooks/" + id, {id: id})
78
+ end
79
+
80
+ def update_webhook(id, payload)
81
+ put_response("APIV2UpdateWebhook", "/webhooks/" + id, {id: id, **payload})
82
+ end
83
+
84
+ def delete_webhook(id)
85
+ delete_response("APIV2DeleteWebhook", "/webhooks/" + id, {id: id})
86
+ end
87
+
88
+ def get_webhooks()
89
+ get_response("APIV2GetWebhooks", "/webhooks")
90
+ end
91
+
92
+ private
93
+
94
+ CLOUDPDF_API_ENDPOINT = "https://api.cloudpdf.io/v2"
95
+
96
+ def get_signed_token(function_name, params, expires_in = 15)
97
+ exp = Time.now.to_i + expires_in
98
+ payload = { function: function_name, params: params, exp: exp }
99
+ token = JWT.encode payload, @signing_secret, 'HS256', { :typ => "JWT", :kid => @cloud_name }
100
+
101
+ return token
102
+ end
103
+
104
+ def get_headers(function_name, params)
105
+ if(@signed)
106
+ token = get_signed_token(function_name, params)
107
+ else
108
+ token = @api_key
109
+ end
110
+
111
+ return { 'Content-Type': 'application/json', 'X-Authorization' => token }
112
+ end
113
+
114
+ def get_response(function_name, url, payload = {})
115
+ response = HTTParty.get("#{CLOUDPDF_API_ENDPOINT}#{url}",
116
+ timeout: 5,
117
+ headers: get_headers(function_name, payload)
118
+ )
119
+ body = JSON.parse(response.body)
120
+ return {"error" => body['errorDescription'], "code" => response.code} if response.code >= 400
121
+ return body
122
+ end
123
+
124
+ def delete_response(function_name, url, payload = {})
125
+ response = HTTParty.delete("#{CLOUDPDF_API_ENDPOINT}#{url}",
126
+ timeout: 5,
127
+ headers: get_headers(function_name, payload)
128
+ )
129
+ body = JSON.parse(response.body)
130
+ return {"error" => body['errorDescription'], "code" => response.code} if response.code >= 400
131
+ return body
132
+ end
133
+
134
+ def patch_response(function_name, url, payload)
135
+ response = HTTParty.patch("#{CLOUDPDF_API_ENDPOINT}#{url}",
136
+ body: payload.to_json,
137
+ timeout: 5,
138
+ headers: get_headers(function_name, payload)
139
+ )
140
+ body = JSON.parse(response.body)
141
+ return {"error" => body['errorDescription'], "code" => response.code} if response.code >= 400
142
+ return body
143
+ end
144
+
145
+ def put_response(function_name, url, payload)
146
+ response = HTTParty.put("#{CLOUDPDF_API_ENDPOINT}#{url}",
147
+ body: payload.to_json,
148
+ timeout: 5,
149
+ headers: get_headers(function_name, payload)
150
+ )
151
+ body = JSON.parse(response.body)
152
+ return {"error" => body['errorDescription'], "code" => response.code} if response.code >= 400
153
+ return body
154
+ end
155
+
156
+ def post_response(function_name, url, payload)
157
+ response = HTTParty.post("#{CLOUDPDF_API_ENDPOINT}#{url}",
158
+ body: payload.to_json,
159
+ timeout: 5,
160
+ headers: get_headers(function_name, payload)
161
+ )
162
+ body = JSON.parse(response.body)
163
+ return {"error" => body['errorDescription'], "code" => response.code} if response.code >= 400
164
+ return body
165
+ end
166
+
167
+ end
168
+
169
+ end
@@ -0,0 +1,3 @@
1
+ module CloudPDF
2
+ VERSION = "1.0.0"
3
+ end
data/lib/cloudpdf.rb ADDED
@@ -0,0 +1,10 @@
1
+ require "httparty"
2
+ require "jwt"
3
+ require "cloudpdf/version"
4
+ require "cloudpdf/client"
5
+
6
+ module CloudPDF
7
+ class Error < StandardError; end
8
+ # Your code goes here...
9
+
10
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudpdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bob Singor
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-29 00:00:00.000000000 Z
11
+ date: 2022-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: jwt
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 2.0.0
33
+ version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 2.0.0
40
+ version: '0'
41
41
  description:
42
42
  email:
43
43
  - hello@cloudpdf.io
@@ -45,7 +45,13 @@ executables: []
45
45
  extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
+ - Gemfile
49
+ - Gemfile.lock
48
50
  - LICENSE
51
+ - cloudpdf.gemspec
52
+ - lib/cloudpdf.rb
53
+ - lib/cloudpdf/client.rb
54
+ - lib/cloudpdf/version.rb
49
55
  homepage: https://github.com/cloudpdf-io/cloudpdf-ruby
50
56
  licenses:
51
57
  - MIT