posty_client 2.0.4 → 3.1.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/cli.rb +4 -0
- data/lib/posty_client/command/domain_command.rb +26 -0
- data/lib/posty_client/resources/base.rb +5 -1
- data/lib/posty_client/settings.rb +39 -4
- data/lib/posty_client/version.rb +1 -1
- data/lib/posty_client.rb +1 -2
- data/posty_client.gemspec +1 -1
- data/test/settings_test.rb +44 -0
- data/test/test_helper.rb +4 -0
- metadata +30 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 840554733edf79c80dc5b39e370819e6fbb89b121d34ade21b8f916cdee374df
|
4
|
+
data.tar.gz: a8723a91cb1dd0ab5c6f4ff68b382a308123c1a65c0419e02158940dacd061c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16b5e2fdc6e7e62d93e2af5f2fa9a9b266e6719274716da7bfc7809e9cdaf7fa474bbba2949adb241d734acce55bce794b501e5c6ad9a8103b03615dbbb15f2d
|
7
|
+
data.tar.gz: f3d2cc946512ab88107f3e561ea719aaf7ac82533e0156ed218bec53435ec781762accdced2910c0dfadcbf40bda4a0e46dc916b433112677dd54f0bd81cc528
|
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/cli.rb
CHANGED
@@ -1,6 +1,32 @@
|
|
1
1
|
module PostyClient
|
2
2
|
module Command
|
3
3
|
class DomainCommand < Thor
|
4
|
+
desc "show [DOMAIN]", "show given domain with users and aliases"
|
5
|
+
def show(domain_name)
|
6
|
+
domain = PostyClient::Resources::Domain.new(domain_name)
|
7
|
+
if domain.new_resource?
|
8
|
+
say "Unknown domain '#{domain.name}'", :red
|
9
|
+
exit 1
|
10
|
+
else
|
11
|
+
say("#{domain.name}:")
|
12
|
+
shell.indent do
|
13
|
+
say("users:")
|
14
|
+
shell.indent do
|
15
|
+
domain.users.each do
|
16
|
+
say "- #{_1.name}"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
say("aliases:")
|
21
|
+
shell.indent do
|
22
|
+
domain.aliases.each do
|
23
|
+
say "- #{_1.name}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
4
30
|
desc "list", "list all domains"
|
5
31
|
def list
|
6
32
|
domains = PostyClient::Resources::Domain.all.map {|d| [d.name]}
|
@@ -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,41 @@
|
|
1
|
+
require "yaml"
|
2
|
+
|
1
3
|
module PostyClient
|
2
|
-
class Settings
|
3
|
-
|
4
|
-
|
4
|
+
class Settings
|
5
|
+
mattr_accessor :settings do
|
6
|
+
YAML.load(ERB.new(File.read(PostyClient.settings_file)).result)
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.servers
|
10
|
+
settings[PostyClient.env]['servers'].keys
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.current_server
|
14
|
+
Thread.current["attr_#{name}_current_server"]
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.current_server=(server)
|
18
|
+
Thread.current["attr_#{name}_current_server"] = server
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.current_settings
|
22
|
+
if current_server.present?
|
23
|
+
settings[PostyClient.env]['servers'][current_server]
|
24
|
+
else
|
25
|
+
settings[PostyClient.env]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.access_token
|
30
|
+
current_settings['access_token']
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.api_url
|
34
|
+
current_settings['api_url']
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.api_version
|
38
|
+
current_settings['api_version']
|
39
|
+
end
|
5
40
|
end
|
6
|
-
end
|
41
|
+
end
|
data/lib/posty_client/version.rb
CHANGED
data/lib/posty_client.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require "logger"
|
2
2
|
require "active_support/all"
|
3
|
-
require "readwritesettings"
|
4
3
|
require "rest_client"
|
5
4
|
|
6
5
|
$: << File.expand_path(File.dirname(__FILE__)+'/../lib')
|
@@ -25,7 +24,7 @@ module PostyClient
|
|
25
24
|
end
|
26
25
|
|
27
26
|
def self.env
|
28
|
-
'
|
27
|
+
ENV['POSTY_ENV'] || 'development'
|
29
28
|
end
|
30
29
|
|
31
30
|
def self.root
|
data/posty_client.gemspec
CHANGED
@@ -20,10 +20,10 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.6"
|
22
22
|
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "minitest"
|
23
24
|
|
24
25
|
spec.add_runtime_dependency "thor"
|
25
26
|
spec.add_runtime_dependency "json"
|
26
27
|
spec.add_runtime_dependency "rest-client"
|
27
|
-
spec.add_runtime_dependency "readwritesettings"
|
28
28
|
spec.add_runtime_dependency "activesupport"
|
29
29
|
end
|
@@ -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,111 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: posty_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.1.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: 2023-01-24 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
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: minitest
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
|
-
type: :
|
48
|
+
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: thor
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: json
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: rest-client
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: activesupport
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
description: A library and a command line tool to use the post api.
|
@@ -116,7 +116,7 @@ executables:
|
|
116
116
|
extensions: []
|
117
117
|
extra_rdoc_files: []
|
118
118
|
files:
|
119
|
-
- .gitignore
|
119
|
+
- ".gitignore"
|
120
120
|
- Gemfile
|
121
121
|
- LICENSE.txt
|
122
122
|
- README.md
|
@@ -144,6 +144,8 @@ files:
|
|
144
144
|
- lib/posty_client/settings.rb
|
145
145
|
- lib/posty_client/version.rb
|
146
146
|
- posty_client.gemspec
|
147
|
+
- test/settings_test.rb
|
148
|
+
- test/test_helper.rb
|
147
149
|
homepage: https://github.com/iaddict/posty_client
|
148
150
|
licenses:
|
149
151
|
- MIT
|
@@ -154,19 +156,19 @@ require_paths:
|
|
154
156
|
- lib
|
155
157
|
required_ruby_version: !ruby/object:Gem::Requirement
|
156
158
|
requirements:
|
157
|
-
- -
|
159
|
+
- - ">="
|
158
160
|
- !ruby/object:Gem::Version
|
159
161
|
version: '0'
|
160
162
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
161
163
|
requirements:
|
162
|
-
- -
|
164
|
+
- - ">="
|
163
165
|
- !ruby/object:Gem::Version
|
164
166
|
version: '0'
|
165
167
|
requirements: []
|
166
|
-
|
167
|
-
rubygems_version: 2.0.14
|
168
|
+
rubygems_version: 3.3.25
|
168
169
|
signing_key:
|
169
170
|
specification_version: 4
|
170
171
|
summary: Library and cli for the post api.
|
171
|
-
test_files:
|
172
|
-
|
172
|
+
test_files:
|
173
|
+
- test/settings_test.rb
|
174
|
+
- test/test_helper.rb
|