posty_client 2.0.4 → 3.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.
- checksums.yaml +5 -5
- data/README.md +6 -11
- data/Rakefile +9 -0
- data/config/posty_client.yml.dist +25 -0
- data/lib/posty_client.rb +1 -1
- data/lib/posty_client/resources/base.rb +5 -1
- data/lib/posty_client/settings.rb +37 -4
- data/lib/posty_client/version.rb +1 -1
- data/posty_client.gemspec +1 -0
- data/test/settings_test.rb +44 -0
- data/test/test_helper.rb +4 -0
- metadata +39 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 14a9b46e9672ce8aace8bf87f3d604d51e467454e687f2c0d016c179acd3231d
|
4
|
+
data.tar.gz: 7b8fa4e9483bd002c5ba18ea0216e56f454e610c41eb520906db8fabdf4736e5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9833df8aedab3aa6419e5929c00ba2d4ed80c08e9e8435175d6c091c68fbdf7aa551a5b44bc4e23773103564318c619c224a1cecef2f0af1f20c7860b83f96e4
|
7
|
+
data.tar.gz: cc0aaf80dfccb73737c35f835c7e2c494c93dd35335b28db05ae2f7411762e6158e100775bbe1c9571179aabf6fc87d036438c903019df1fb8598685aa18d80c
|
data/README.md
CHANGED
@@ -65,18 +65,13 @@ The cli supplies a command to create a template for you:
|
|
65
65
|
puts '--'*10
|
66
66
|
pp u.aliases
|
67
67
|
|
68
|
-
|
68
|
+
# Usage with multiple servers
|
69
|
+
PostyClient::Settings.current_server = 'server1'
|
70
|
+
# Now all api calls execute on the settings defined for [production|development|test].servers.server1
|
71
|
+
d = PostyClient::Resources::Domain.new('posty-soft1.org')
|
69
72
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
## Support
|
74
|
-
|
75
|
-
* IRC
|
76
|
-
* Server: irc.freenode.net
|
77
|
-
* Channel: #posty
|
78
|
-
* Email:
|
79
|
-
* support@posty-soft.org
|
73
|
+
# The `PostyClient::Settings.current_server` setting is thread local setting. The following is thus save to use:
|
74
|
+
%w(server1 server2).map {|server| PostyClient::Settings.current_server = server; # ...}.map(&:join)
|
80
75
|
|
81
76
|
## Bug reports
|
82
77
|
|
data/Rakefile
CHANGED
@@ -6,6 +6,31 @@ development:
|
|
6
6
|
access_token: ask your admin
|
7
7
|
|
8
8
|
production:
|
9
|
+
# default settings
|
9
10
|
api_url: http://posty-api.herokuapp.com/api/
|
10
11
|
api_version: v1
|
11
12
|
access_token: ask your admin
|
13
|
+
# multi server settings
|
14
|
+
servers:
|
15
|
+
server1:
|
16
|
+
api_url: http://posty-api1.herokuapp.com/api/
|
17
|
+
api_version: v1
|
18
|
+
access_token: ask your admin
|
19
|
+
server2:
|
20
|
+
api_url: http://posty-api2.herokuapp.com/api/
|
21
|
+
api_version: v1
|
22
|
+
access_token: ask your admin
|
23
|
+
|
24
|
+
test:
|
25
|
+
api_url: https://testmailer-default.herokuapp.com/api
|
26
|
+
api_version: v1
|
27
|
+
access_token: token12345
|
28
|
+
servers:
|
29
|
+
server1:
|
30
|
+
api_url: https://testmailer-server1.herokuapp.com/api
|
31
|
+
api_version: v1
|
32
|
+
access_token: token12345
|
33
|
+
server2:
|
34
|
+
api_url: https://testmailer-server2.herokuapp.com/api
|
35
|
+
api_version: v1
|
36
|
+
access_token: token12345
|
data/lib/posty_client.rb
CHANGED
@@ -11,10 +11,14 @@ module PostyClient
|
|
11
11
|
[:id, :virtual_domain_id, :created_at, :updated_at, :password]
|
12
12
|
end
|
13
13
|
|
14
|
-
|
14
|
+
def self.base_uri
|
15
15
|
URI.join(Settings.api_url, Settings.api_version)
|
16
16
|
end
|
17
17
|
|
18
|
+
def base_uri
|
19
|
+
self.class.base_uri
|
20
|
+
end
|
21
|
+
|
18
22
|
class_attribute :primary_key
|
19
23
|
self.primary_key = 'name'
|
20
24
|
|
@@ -1,6 +1,39 @@
|
|
1
1
|
module PostyClient
|
2
|
-
class Settings
|
3
|
-
|
4
|
-
|
2
|
+
class Settings
|
3
|
+
mattr_accessor :settings do
|
4
|
+
YAML.load(ERB.new(File.read(PostyClient.settings_file)).result)
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.servers
|
8
|
+
settings[PostyClient.env]['servers'].keys
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.current_server
|
12
|
+
Thread.current["attr_#{name}_current_server"]
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.current_server=(server)
|
16
|
+
Thread.current["attr_#{name}_current_server"] = server
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.current_settings
|
20
|
+
if current_server.present?
|
21
|
+
settings[PostyClient.env]['servers'][current_server]
|
22
|
+
else
|
23
|
+
settings[PostyClient.env]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.access_token
|
28
|
+
current_settings['access_token']
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.api_url
|
32
|
+
current_settings['api_url']
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.api_version
|
36
|
+
current_settings['api_version']
|
37
|
+
end
|
5
38
|
end
|
6
|
-
end
|
39
|
+
end
|
data/lib/posty_client/version.rb
CHANGED
data/posty_client.gemspec
CHANGED
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class SettingsTest < Minitest::Test
|
4
|
+
def test_env
|
5
|
+
assert_equal 'test', PostyClient.env
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_settings_file_exists
|
9
|
+
assert File.exist?(PostyClient::settings_file)
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_default_settings
|
13
|
+
assert_kind_of Hash, PostyClient::Settings.current_settings
|
14
|
+
refute_nil PostyClient::Settings.access_token
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_servers
|
18
|
+
assert PostyClient::Settings.servers.count > 1
|
19
|
+
assert_includes PostyClient::Settings.servers, 'server1'
|
20
|
+
assert_includes PostyClient::Settings.servers, 'server2'
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_threaded_server_access
|
24
|
+
assert_nil PostyClient::Settings.current_server
|
25
|
+
default_api_url = PostyClient::Settings.api_url
|
26
|
+
|
27
|
+
threads = PostyClient::Settings.servers.map do |server|
|
28
|
+
Thread.start do
|
29
|
+
PostyClient::Settings.current_server = server
|
30
|
+
assert_equal server, PostyClient::Settings.current_server
|
31
|
+
assert_kind_of Hash, PostyClient::Settings.current_settings
|
32
|
+
refute_equal default_api_url, PostyClient::Settings.api_url
|
33
|
+
assert_match(/#{server}/, PostyClient::Settings.api_url)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
assert_nil PostyClient::Settings.current_server
|
37
|
+
assert_equal default_api_url, PostyClient::Settings.api_url
|
38
|
+
|
39
|
+
assert_equal 2, threads.count
|
40
|
+
threads.map(&:join)
|
41
|
+
|
42
|
+
assert_equal [false], threads.map(&:status).uniq # all threads terminated normally
|
43
|
+
end
|
44
|
+
end
|
data/test/test_helper.rb
ADDED
metadata
CHANGED
@@ -1,111 +1,125 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: posty_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Steinhausen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.6'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
39
53
|
- !ruby/object:Gem::Version
|
40
54
|
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: thor
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
|
-
- -
|
59
|
+
- - ">="
|
46
60
|
- !ruby/object:Gem::Version
|
47
61
|
version: '0'
|
48
62
|
type: :runtime
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
|
-
- -
|
66
|
+
- - ">="
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: json
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
|
-
- -
|
73
|
+
- - ">="
|
60
74
|
- !ruby/object:Gem::Version
|
61
75
|
version: '0'
|
62
76
|
type: :runtime
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
|
-
- -
|
80
|
+
- - ">="
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rest-client
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- -
|
87
|
+
- - ">="
|
74
88
|
- !ruby/object:Gem::Version
|
75
89
|
version: '0'
|
76
90
|
type: :runtime
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- -
|
94
|
+
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: readwritesettings
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
|
-
- -
|
101
|
+
- - ">="
|
88
102
|
- !ruby/object:Gem::Version
|
89
103
|
version: '0'
|
90
104
|
type: :runtime
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
|
-
- -
|
108
|
+
- - ">="
|
95
109
|
- !ruby/object:Gem::Version
|
96
110
|
version: '0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: activesupport
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
|
-
- -
|
115
|
+
- - ">="
|
102
116
|
- !ruby/object:Gem::Version
|
103
117
|
version: '0'
|
104
118
|
type: :runtime
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
|
-
- -
|
122
|
+
- - ">="
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '0'
|
111
125
|
description: A library and a command line tool to use the post api.
|
@@ -116,7 +130,7 @@ executables:
|
|
116
130
|
extensions: []
|
117
131
|
extra_rdoc_files: []
|
118
132
|
files:
|
119
|
-
- .gitignore
|
133
|
+
- ".gitignore"
|
120
134
|
- Gemfile
|
121
135
|
- LICENSE.txt
|
122
136
|
- README.md
|
@@ -144,6 +158,8 @@ files:
|
|
144
158
|
- lib/posty_client/settings.rb
|
145
159
|
- lib/posty_client/version.rb
|
146
160
|
- posty_client.gemspec
|
161
|
+
- test/settings_test.rb
|
162
|
+
- test/test_helper.rb
|
147
163
|
homepage: https://github.com/iaddict/posty_client
|
148
164
|
licenses:
|
149
165
|
- MIT
|
@@ -154,19 +170,19 @@ require_paths:
|
|
154
170
|
- lib
|
155
171
|
required_ruby_version: !ruby/object:Gem::Requirement
|
156
172
|
requirements:
|
157
|
-
- -
|
173
|
+
- - ">="
|
158
174
|
- !ruby/object:Gem::Version
|
159
175
|
version: '0'
|
160
176
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
161
177
|
requirements:
|
162
|
-
- -
|
178
|
+
- - ">="
|
163
179
|
- !ruby/object:Gem::Version
|
164
180
|
version: '0'
|
165
181
|
requirements: []
|
166
|
-
|
167
|
-
rubygems_version: 2.0.14
|
182
|
+
rubygems_version: 3.0.1
|
168
183
|
signing_key:
|
169
184
|
specification_version: 4
|
170
185
|
summary: Library and cli for the post api.
|
171
|
-
test_files:
|
172
|
-
|
186
|
+
test_files:
|
187
|
+
- test/settings_test.rb
|
188
|
+
- test/test_helper.rb
|