posty_client 2.0.4 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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