medpass_resource_api 0.1.2
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.
data/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'medpass_resource_api'
|
@@ -0,0 +1,205 @@
|
|
1
|
+
require 'singleton'
|
2
|
+
|
3
|
+
module MedpassResourceApi
|
4
|
+
|
5
|
+
USER_ARGS = [:login, :password, :group_id].freeze
|
6
|
+
PERSONAL_PROFILE_ARGS = [:email, :first_name, :last_name, :dob, :address, :postcode, :city, :phone, :mobile, :occupation_id, :nd, :gadu, :skype, :city_id, :province_id, :title, :biography]
|
7
|
+
SPECIALTY_PROFILE_ARGS = [:pwz, :specialty_id]
|
8
|
+
|
9
|
+
class Configuration
|
10
|
+
attr_accessor :api_key
|
11
|
+
attr_accessor :medpass_url
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.configure(&block)
|
15
|
+
Base.configure(&block)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.configuration
|
19
|
+
Base.configuration
|
20
|
+
end
|
21
|
+
|
22
|
+
class Base
|
23
|
+
|
24
|
+
@@configuration = nil
|
25
|
+
|
26
|
+
def self.configuration
|
27
|
+
@@configuration
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.configuration=(val)
|
31
|
+
@@configuration = val
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.configure
|
35
|
+
self.configuration ||= Configuration.new
|
36
|
+
yield(configuration)
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
def self.register_user(group_id = 1, args = {})
|
41
|
+
arguments = {:user => get_user_args(args, group_id), :personal_profile => get_personal_profile_args(args)}
|
42
|
+
begin
|
43
|
+
res = MedpassUser.post(:register, :api_key => @@configuration.api_key, :args => arguments)
|
44
|
+
rescue ActiveResource::ResourceInvalid => error
|
45
|
+
wrap_error(error)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.register_doctor(args = {})
|
50
|
+
arguments = {:user => get_user_args(args, 2),
|
51
|
+
:personal_profile => get_personal_profile_args(args),
|
52
|
+
:specialty_profile => get_specialty_profile_args(args)}
|
53
|
+
MedpassUser.post(:register, :api_key => @@configuration.api_key, :args => arguments)
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.get_user(login_or_openid_url, timestamp = nil)
|
57
|
+
login = get_login(login_or_openid_url)
|
58
|
+
res = begin
|
59
|
+
MedpassUser.find(login, :params =>{:timestamp => timestamp, :api_key => @@configuration.api_key})
|
60
|
+
rescue ArgumentError
|
61
|
+
nil
|
62
|
+
end
|
63
|
+
wrap_result(res)
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.get_user_profile(login_or_openid_url, timestamp = nil)
|
67
|
+
login = get_login(login_or_openid_url)
|
68
|
+
res = begin
|
69
|
+
MedpassUser.find(login, :params =>{:timestamp => timestamp, :full_profile => true, :api_key => @@configuration.api_key})
|
70
|
+
rescue ArgumentError
|
71
|
+
nil
|
72
|
+
end
|
73
|
+
wrap_result(res)
|
74
|
+
end
|
75
|
+
|
76
|
+
def self.get_user_friends(login_or_openid_url)
|
77
|
+
login = get_login(login_or_openid_url)
|
78
|
+
wrap_result(MedpassUserFriend.find(:all, :params => {:user_id => login, :api_key => @@configuration.api_key}))
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
def self.get_user_message(login_or_openid_url, id)
|
83
|
+
login = get_login(login_or_openid_url)
|
84
|
+
wrap_result(MedpassMessage.find(id, :params => {:user_id => login, :api_key => @@configuration.api_key}))
|
85
|
+
end
|
86
|
+
|
87
|
+
def self.get_user_messages(login_or_openid_url, options = {})
|
88
|
+
login = get_login(login_or_openid_url)
|
89
|
+
if ['read','received','sent'].include? options[:scope].to_s
|
90
|
+
wrap_result(send("get_user_#{options[:scope]}_messages", login, options))
|
91
|
+
else
|
92
|
+
wrap_result(nil)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def self.get_user_received_messages(login_or_openid_url, options = {})
|
97
|
+
login = get_login(login_or_openid_url)
|
98
|
+
wrap_result(MedpassMessage.find(:all, :params => {:user_id => login, :api_key => @@configuration.api_key}.merge(options)))
|
99
|
+
end
|
100
|
+
|
101
|
+
def self.get_user_read_messages(login_or_openid_url, options = {})
|
102
|
+
login = get_login(login_or_openid_url)
|
103
|
+
wrap_result(MedpassMessage.get(:read, :user_id => login, :limit => options[:limit], :app => options[:app], :api_key => @@configuration.api_key))
|
104
|
+
end
|
105
|
+
|
106
|
+
def self.get_user_unread_messages(login_or_openid_url, options = {})
|
107
|
+
login = get_login(login_or_openid_url)
|
108
|
+
wrap_result(MedpassMessage.get(:unread, :user_id => login, :limit => options[:limit], :app => options[:app], :api_key => @@configuration.api_key))
|
109
|
+
end
|
110
|
+
|
111
|
+
def self.get_user_sent_messages(login_or_openid_url, options = {})
|
112
|
+
login = get_login(login_or_openid_url)
|
113
|
+
wrap_result(MedpassMessage.get(:sent, :user_id => login, :limit => options[:limit], :app => options[:app], :api_key => @@configuration.api_key))
|
114
|
+
end
|
115
|
+
|
116
|
+
def self.get_user_args(args, group_id)
|
117
|
+
returning Hash.new do |hash|
|
118
|
+
USER_ARGS.each{|k| hash[k] = args[k]}
|
119
|
+
hash[:group_id] = group_id
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def self.get_personal_profile_args(args)
|
124
|
+
returning Hash.new do |hash|
|
125
|
+
PERSONAL_PROFILE_ARGS.each{|k| hash[k] = args[k]}
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
def self.get_specialty_profile_args(args)
|
130
|
+
returning Hash.new do |hash|
|
131
|
+
SPECIALTY_PROFILE_ARGS.each{|k| hash[k] = args[k]}
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
|
136
|
+
def self.wrap_result(result)
|
137
|
+
result.is_a?(Array) ? wrap_all(result) : wrap_one(result)
|
138
|
+
end
|
139
|
+
|
140
|
+
def self.wrap_error(error)
|
141
|
+
ErrorResult.new(error)
|
142
|
+
end
|
143
|
+
|
144
|
+
def self.wrap_one(result)
|
145
|
+
return NilResult.instance if result.nil?
|
146
|
+
Result.new(result)
|
147
|
+
end
|
148
|
+
|
149
|
+
def self.wrap_all(results)
|
150
|
+
return NilResult.instance if results.nil?
|
151
|
+
Result.build_all(results)
|
152
|
+
end
|
153
|
+
|
154
|
+
def self.get_login(login_or_openid_url)
|
155
|
+
core_medpass_url = configuration.medpass_url.split("http://").last
|
156
|
+
login_or_openid_url.gsub("/","").gsub('.beta.','.').split(".#{core_medpass_url}").last.gsub("http:","").gsub(".","-dot-")
|
157
|
+
end
|
158
|
+
|
159
|
+
end
|
160
|
+
|
161
|
+
|
162
|
+
class ErrorResult
|
163
|
+
attr_reader :raw_errors
|
164
|
+
def initialize(error)
|
165
|
+
@raw_errors = JSON.parse(error.response.body)
|
166
|
+
end
|
167
|
+
|
168
|
+
def errors_on(field)
|
169
|
+
@raw_errors[field] rescue nil
|
170
|
+
end
|
171
|
+
|
172
|
+
end
|
173
|
+
|
174
|
+
|
175
|
+
class NilResult
|
176
|
+
include Singleton
|
177
|
+
attr_accessor :raw_result
|
178
|
+
end
|
179
|
+
|
180
|
+
|
181
|
+
class Result
|
182
|
+
|
183
|
+
attr_reader :raw_result, :resource_type
|
184
|
+
|
185
|
+
def initialize(result)
|
186
|
+
@raw_result = result
|
187
|
+
end
|
188
|
+
|
189
|
+
# Nie wywalamy skryptu nawet jesli odwolamy sie do czegos czego dany obiekt nie posiada
|
190
|
+
def method_missing(method_name, *args)
|
191
|
+
return @raw_result.send(method_name) if @raw_result.respond_to?(method_name)
|
192
|
+
return @raw_result[method_name.to_s] rescue "brak"
|
193
|
+
end
|
194
|
+
|
195
|
+
def self.build_all(results)
|
196
|
+
returning [] do |result_list|
|
197
|
+
results.each{|result| result_list << self.new(result)}
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
|
202
|
+
end
|
203
|
+
|
204
|
+
|
205
|
+
end
|
metadata
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: medpass_resource_api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 2
|
9
|
+
version: 0.1.2
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Wojciech Pasternak - voytee
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-04-15 00:00:00 +02:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: activeresource
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 2
|
29
|
+
- 0
|
30
|
+
- 2
|
31
|
+
version: 2.0.2
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
description: For Activeweb company purpose only
|
35
|
+
email: wpasternak@gmail.com
|
36
|
+
executables: []
|
37
|
+
|
38
|
+
extensions: []
|
39
|
+
|
40
|
+
extra_rdoc_files: []
|
41
|
+
|
42
|
+
files:
|
43
|
+
- init.rb
|
44
|
+
- lib/medpass_resource_api.rb
|
45
|
+
- lib/medpass_resource_api/medpass_user.rb
|
46
|
+
- lib/medpass_resource_api/medpass_user_friend.rb
|
47
|
+
- lib/medpass_resource_api/medpass_message.rb
|
48
|
+
has_rdoc: true
|
49
|
+
homepage:
|
50
|
+
licenses: []
|
51
|
+
|
52
|
+
post_install_message:
|
53
|
+
rdoc_options: []
|
54
|
+
|
55
|
+
require_paths:
|
56
|
+
- lib
|
57
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
segments:
|
62
|
+
- 0
|
63
|
+
version: "0"
|
64
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
segments:
|
69
|
+
- 0
|
70
|
+
version: "0"
|
71
|
+
requirements: []
|
72
|
+
|
73
|
+
rubyforge_project:
|
74
|
+
rubygems_version: 1.3.6
|
75
|
+
signing_key:
|
76
|
+
specification_version: 3
|
77
|
+
summary: Restful API for accessing medpass medical community resources
|
78
|
+
test_files: []
|
79
|
+
|