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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 00df168ce22c4d7f2b85441c88da83c9ed096aef
4
- data.tar.gz: 13fef9f004c83c5500009b3baf6fc4972bc0d4b5
2
+ SHA256:
3
+ metadata.gz: 840554733edf79c80dc5b39e370819e6fbb89b121d34ade21b8f916cdee374df
4
+ data.tar.gz: a8723a91cb1dd0ab5c6f4ff68b382a308123c1a65c0419e02158940dacd061c8
5
5
  SHA512:
6
- metadata.gz: fcac0ec8cfe5fbf4037e5baed2decc6f33c2862244af68bf665c8ccda77599d18ce3c258cc56b748b271f530d0afecf73934651fe29474e2e945dcdb1a3a7a91
7
- data.tar.gz: 537cff17cc1ba6902f82c54ad15102e78270bb5814ecccc8121142b53aa8079c4a94a517c0705bec82be79aee3867cb8686c4de19278dad0da4b545831c21b34
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
- ## Information
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
- For more information about posty please visit our website:
71
- [www.posty-soft.org](http://www.posty-soft.org)
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
@@ -1 +1,10 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList['test/**/*_test.rb']
8
+ end
9
+
10
+ task :default => :test
@@ -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
@@ -9,6 +9,10 @@ require 'posty_client/command/api_key_command'
9
9
 
10
10
  module PostyClient
11
11
  class CLI < Thor
12
+ def self.exit_on_failure?
13
+ true
14
+ end
15
+
12
16
  map "-v" => "version"
13
17
  map "--version" => "version"
14
18
 
@@ -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
- cattr_accessor :base_uri do
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 < ReadWriteSettings
3
- source PostyClient.settings_file
4
- namespace PostyClient.env
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
@@ -1,3 +1,3 @@
1
1
  module PostyClient
2
- VERSION = "2.0.4"
2
+ VERSION = "3.1.0"
3
3
  end
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
- 'development' || ENV['POSTY_ENV']
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
@@ -0,0 +1,4 @@
1
+ require 'minitest/autorun'
2
+ require 'posty_client'
3
+
4
+ ENV['POSTY_ENV'] ||= 'test'
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: 2.0.4
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: 2015-10-15 00:00:00.000000000 Z
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: thor
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: :runtime
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: json
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: rest-client
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: readwritesettings
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
- rubyforge_project:
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
- has_rdoc:
172
+ test_files:
173
+ - test/settings_test.rb
174
+ - test/test_helper.rb