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