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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 00df168ce22c4d7f2b85441c88da83c9ed096aef
4
- data.tar.gz: 13fef9f004c83c5500009b3baf6fc4972bc0d4b5
2
+ SHA256:
3
+ metadata.gz: 14a9b46e9672ce8aace8bf87f3d604d51e467454e687f2c0d016c179acd3231d
4
+ data.tar.gz: 7b8fa4e9483bd002c5ba18ea0216e56f454e610c41eb520906db8fabdf4736e5
5
5
  SHA512:
6
- metadata.gz: fcac0ec8cfe5fbf4037e5baed2decc6f33c2862244af68bf665c8ccda77599d18ce3c258cc56b748b271f530d0afecf73934651fe29474e2e945dcdb1a3a7a91
7
- data.tar.gz: 537cff17cc1ba6902f82c54ad15102e78270bb5814ecccc8121142b53aa8079c4a94a517c0705bec82be79aee3867cb8686c4de19278dad0da4b545831c21b34
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
- ## 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
@@ -25,7 +25,7 @@ module PostyClient
25
25
  end
26
26
 
27
27
  def self.env
28
- 'development' || ENV['POSTY_ENV']
28
+ ENV['POSTY_ENV'] || 'development'
29
29
  end
30
30
 
31
31
  def self.root
@@ -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,39 @@
1
1
  module PostyClient
2
- class Settings < ReadWriteSettings
3
- source PostyClient.settings_file
4
- namespace PostyClient.env
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
@@ -1,3 +1,3 @@
1
1
  module PostyClient
2
- VERSION = "2.0.4"
2
+ VERSION = "3.0.0"
3
3
  end
@@ -20,6 +20,7 @@ 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"
@@ -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,125 @@
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.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: 2015-10-15 00:00:00.000000000 Z
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
- rubyforge_project:
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
- has_rdoc:
186
+ test_files:
187
+ - test/settings_test.rb
188
+ - test/test_helper.rb