context_io 1.0.0.pre.beta

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,41 @@
1
+ module ContextIO
2
+ module CollectionHelper
3
+ def collection_return(url:,
4
+ klass:,
5
+ method: :get,
6
+ valid_params: nil,
7
+ given_params: nil)
8
+ request, api_call_made = call_api(method: :get,
9
+ url: url,
10
+ given_params: given_params,
11
+ valid_params:valid_params)
12
+ request.response.map do |resp|
13
+ klass.new(parent: self,
14
+ response: resp,
15
+ status: request.status,
16
+ success: request.success,
17
+ api_call_made: api_call_made)
18
+ end
19
+ end
20
+
21
+ def contact_collection_return(url:,
22
+ method: :get,
23
+ valid_params: nil,
24
+ given_params: nil)
25
+ request, api_call_made = call_api(method: :get,
26
+ url: url,
27
+ given_params: given_params,
28
+ valid_params:valid_params)
29
+ response = request.response
30
+ matches = response["matches"].map do |resp|
31
+ Contact.new(response: resp,
32
+ status: request.status,
33
+ success: request.success,
34
+ parent: self,
35
+ identifier: resp["email"],
36
+ api_call_made: api_call_made)
37
+ end
38
+ [response["query"], matches]
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,15 @@
1
+ module ContextIO
2
+ class DeletedResource
3
+ attr_reader :response, :status, :success, :api_call_made, :identifier
4
+ def initialize(response:,
5
+ status:,
6
+ success:,
7
+ api_call_made:)
8
+ @response = response
9
+ @status = status
10
+ @success = success
11
+ @api_call_made = api_call_made
12
+ @identifier = api_call_made.url.to_s.split("/").last
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,21 @@
1
+ module ContextIO
2
+ class Request
3
+ require "json"
4
+ attr_reader :response, :status, :success, :url
5
+ def initialize(connection, method, url, params = nil)
6
+ request = connection.connect.send(method, url, params)
7
+ if request.headers["content-type"] == "application/json"
8
+ @response = JSON.parse(request.body)
9
+ else
10
+ @response = request.body
11
+ end
12
+ @url = request.env.url
13
+ @status = request.status
14
+ @success = check_success(request.status)
15
+ end
16
+
17
+ def check_success(status)
18
+ status >= 200 && status <= 299
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,60 @@
1
+ module ContextIO
2
+ module ValidGetParams
3
+
4
+ # Accounts
5
+ ACCOUNTS= %I(email status status_ok limit offset)
6
+
7
+ #Contacts
8
+ CONTACTS = %I(search activity_before activity_after sort_by sort_order limit offset)
9
+
10
+ CONTACT_FILES = %I(limit offset)
11
+
12
+ CONTACT_MESSAGES = %I(limit offset)
13
+
14
+ CONTACT_THREADS = %I(limit offset)
15
+
16
+ #Files
17
+ FILES = %I(file_name file_size_min file_size_max email to from cc bcc
18
+ date_before date_after indexed_before indexed_after source
19
+ sort_order limit offset)
20
+
21
+ FILE_CONTENT = %I(as_link)
22
+
23
+ #Messages
24
+ MESSAGES = %I(subject email to from cc bcc folder source file_name file_size_min
25
+ file_size_max date_before date_after indexed_before indexed_after
26
+ include_thread_size include_body include_headers include_flags
27
+ body_type include_source sort_order limit offset)
28
+
29
+ MESSAGE = %I(include_thread_size include_body include_headers include_flags
30
+ body_type include_source)
31
+
32
+ MESSAGE_BODY = %I(type)
33
+
34
+ MESSAGE_HEADER = %I(raw)
35
+
36
+ MESSAGE_THREADS = %I(include_body include_headers include_flags body_type
37
+ limit offset)
38
+
39
+ #Threads
40
+ THREADS = %I(subject email to from cc bcc folder indexed_before indexed_after
41
+ activity_before activity_after started_before started_after
42
+ limit offset)
43
+
44
+ THREAD = %I(include_body include_headers include_flags body_type
45
+ include_source limit offset)
46
+
47
+ #Sources
48
+ SOURCES = %I(status status_ok)
49
+
50
+
51
+ FOLDERS_SOURCES = %I(include_extended_counts no_cache)
52
+
53
+ SOURCE_FOLDER = %I(include_extended_counts delim)
54
+
55
+ SOURCE_FOLDER_MESSAGES = %I(include_thread_size include_body body_type
56
+ include_headers include_flags flag_seen
57
+ limit offset)
58
+
59
+ end
60
+ end
@@ -0,0 +1,48 @@
1
+ module ContextIO
2
+ module ValidPostParams
3
+ #Accounts
4
+ ACCOUNTS = %I(expunge_on_deleted_flag sync_all_folders raw_file_list password
5
+ provider_refresh_token provider_consumer_key callback_url
6
+ status_callback_url use_ssl email server username port type
7
+ migrate_account_id)
8
+
9
+ ACCOUNT = %I(first_name last_name)
10
+
11
+ #Connect Tokens
12
+ CONNECT_TOKEN = %I(email last_name source_callback_url source_expunge_on_deleted_flag
13
+ source_sync_all_folders source_sync_folders source_raw_file_list
14
+ status_callback_url callback_url)
15
+
16
+ #Messages
17
+ MESSAGE = %I(flag_seen flag_answered flag_flagged flag_deleted flag_draft
18
+ message dst_source dst_folder)
19
+
20
+ MESSAGE_MOVE_20 = %I(dst_source move flag_seen flag_answered flag_flagged
21
+ flag_deleted flag_draft dst_folder)
22
+
23
+ FLAGS = %I(seen answered flagged deleted draft)
24
+
25
+ #Sources
26
+ SOURCES = %I(email server username use_ssl port type password origin_ip
27
+ expunge_on_deleted provider_refresh_token string provider_consumer_key
28
+ sync_all_folders callback_url status_callback_url)
29
+
30
+ SOURCE = %I(status force_status_check sync_all_folders expunge_on_deleted_flag
31
+ password provider_refresh_token provider_consumer_key status_callback_url)
32
+
33
+ SOURCE_CONNECT_TOKEN = %I(callback_url)
34
+
35
+ #Webhooks
36
+ WEBHOOKS = %I(callback_url failure_notif_url filter_to filter_from filter_cc
37
+ filter_subject filter_thread filter_file_name filter_folder_added
38
+ filter_folder_removed filter_to_domain filter_from_domain
39
+ include_body body_type include_header)
40
+
41
+ WEBHOOK = %I(callback_url failure_notif_url filter_to filter_from filter_cc
42
+ filter_subject filter_thread filter_file_name filter_folder_added
43
+ filter_folder_removed filter_to_domain filter_from_domain
44
+ include_body body_type include_header active)
45
+
46
+ OAUTH_PROVIDER = %I(type provider_consumer_key provider_consumer_secret)
47
+ end
48
+ end
@@ -0,0 +1,3 @@
1
+ module ContextIO
2
+ VERSION = "1.0.0-beta"
3
+ end
metadata ADDED
@@ -0,0 +1,204 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: context_io
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.pre.beta
5
+ platform: ruby
6
+ authors:
7
+ - Dane Carmichael
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2017-04-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.12'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.12'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: webmock
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.1'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: faraday
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.12'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.12'
111
+ - !ruby/object:Gem::Dependency
112
+ name: faraday_middleware
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.11'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.11'
125
+ - !ruby/object:Gem::Dependency
126
+ name: simple_oauth
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 0.3.1
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 0.3.1
139
+ description: Provides a Ruby interface to the Context.IO API
140
+ email:
141
+ - carmichaeldane@gmail.com
142
+ executables: []
143
+ extensions: []
144
+ extra_rdoc_files: []
145
+ files:
146
+ - ".gitignore"
147
+ - ".rspec"
148
+ - ".travis.yml"
149
+ - Gemfile
150
+ - LICENSE.md
151
+ - README.md
152
+ - Rakefile
153
+ - bin/console
154
+ - bin/setup
155
+ - context_io.gemspec
156
+ - lib/context_io.rb
157
+ - lib/context_io/account.rb
158
+ - lib/context_io/account/contact.rb
159
+ - lib/context_io/account/email_address.rb
160
+ - lib/context_io/account/files.rb
161
+ - lib/context_io/account/sources.rb
162
+ - lib/context_io/account/sync.rb
163
+ - lib/context_io/account/threads.rb
164
+ - lib/context_io/connection.rb
165
+ - lib/context_io/oauth_provider.rb
166
+ - lib/context_io/shared/connect_token.rb
167
+ - lib/context_io/shared/discovery.rb
168
+ - lib/context_io/shared/folder.rb
169
+ - lib/context_io/shared/message.rb
170
+ - lib/context_io/shared/webhook.rb
171
+ - lib/context_io/utilities/api_call_made.rb
172
+ - lib/context_io/utilities/call_helpers.rb
173
+ - lib/context_io/utilities/collection_helper.rb
174
+ - lib/context_io/utilities/deleted_resource.rb
175
+ - lib/context_io/utilities/request.rb
176
+ - lib/context_io/utilities/valid_parameters/get_params.rb
177
+ - lib/context_io/utilities/valid_parameters/post_params.rb
178
+ - lib/context_io/version.rb
179
+ homepage: https://github.com/contextio/Ruby-ContextIO
180
+ licenses:
181
+ - Apache 2.0
182
+ metadata:
183
+ allowed_push_host: https://rubygems.org
184
+ post_install_message:
185
+ rdoc_options: []
186
+ require_paths:
187
+ - lib
188
+ required_ruby_version: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: '2.0'
193
+ required_rubygems_version: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - ">"
196
+ - !ruby/object:Gem::Version
197
+ version: 1.3.1
198
+ requirements: []
199
+ rubyforge_project:
200
+ rubygems_version: 2.5.1
201
+ signing_key:
202
+ specification_version: 4
203
+ summary: Provides a Ruby interface to the Context.IO API
204
+ test_files: []