oma 0.0.1a

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.
Files changed (2) hide show
  1. data/lib/opensrs/oma.rb +133 -0
  2. metadata +96 -0
@@ -0,0 +1,133 @@
1
+ require 'net/http'
2
+ require 'net/https'
3
+ require 'addressable/uri'
4
+ require 'json'
5
+
6
+ module OpenSRS
7
+ module JsonRPC
8
+ class Client
9
+
10
+ def initialize(url, creds)
11
+ @base = url
12
+ @creds = creds
13
+ end
14
+
15
+ def request(method, params = {})
16
+ params["credentials"] = @creds
17
+
18
+ uri = URI.parse( @base + "/" + method.to_s)
19
+
20
+ http = Net::HTTP.new(uri.host, uri.port)
21
+ http.use_ssl = true
22
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
23
+
24
+ request = Net::HTTP::Post.new( uri.request_uri )
25
+ request["Content-Type"] = "application/json"
26
+ request.body = params.to_json
27
+
28
+ response = http.request( request )
29
+ return JSON.parse(response.read_body)
30
+ end
31
+ end
32
+ end
33
+
34
+ class InvalidCredentials < Exception; end
35
+
36
+ module ErrorHandler
37
+ def valid?( response )
38
+ unless response["success"]
39
+ if response["error"] =~ /Invalid credentials supplied in request/
40
+ raise InvalidCredentials, response["error"]
41
+ end
42
+ end
43
+ response
44
+ end
45
+ end
46
+
47
+ class OMA < JsonRPC::Client
48
+ VERSION = '0.01'
49
+
50
+ include ErrorHandler
51
+
52
+ attr_accessor :url
53
+ attr_accessor :username
54
+ attr_accessor :password
55
+ attr_reader :methods
56
+
57
+ def initialize( opt={} )
58
+ OMA.create_methods
59
+ @methods = METHODS
60
+
61
+ @username = opt[:username] || ''
62
+ @password = opt[:password] || ''
63
+
64
+ @url = opt[:url] || 'https://admin.a.hostedemail.com/api'
65
+ @credentials = { :client => "Ruby OpenSRS::OMA 0.01", :user => @username, :password => @password }
66
+ super( @url, @credentials )
67
+ end
68
+
69
+ METHODS = %w(
70
+ add_role
71
+ authenticate
72
+ change_company
73
+ change_company_bulletin
74
+ change_domain
75
+ change_domain_bulletin
76
+ change_user
77
+ change_brand
78
+ create_workgroup
79
+ delete_company
80
+ delete_domain
81
+ delete_user
82
+ delete_workgroup
83
+ echo
84
+ generate_token
85
+ get_company
86
+ get_company_bulletin
87
+ get_company_changes
88
+ get_deleted_contacts
89
+ get_deleted_messages
90
+ get_domain
91
+ get_domain_bulletin
92
+ get_domain_changes
93
+ get_user
94
+ get_user_attribute_history
95
+ get_user_changes
96
+ get_user_messages
97
+ get_valid_languages
98
+ get_valid_timezones
99
+ migration_add
100
+ migration_jobs
101
+ migration_status
102
+ migration_threads
103
+ migration_trace
104
+ move_user_messages
105
+ post_domain_bulletin
106
+ post_company_bulletin
107
+ remove_role
108
+ rename_user
109
+ restore_deleted_contacts
110
+ restore_deleted_messages
111
+ restore_domain
112
+ restore_user
113
+ search_brand_members
114
+ search_brands
115
+ search_companies
116
+ search_domains
117
+ search_users
118
+ search_workgroups
119
+ set_role
120
+ stats_summary
121
+ stats_list
122
+ stats_snapshot )
123
+
124
+ def self.create_methods
125
+ METHODS.each do |method|
126
+ define_method method do |*argv|
127
+ valid?( request method, *argv )
128
+ end
129
+ end
130
+ end
131
+ end
132
+ end
133
+
metadata ADDED
@@ -0,0 +1,96 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: oma
3
+ version: !ruby/object:Gem::Version
4
+ hash: 3314893
5
+ prerelease: true
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1a
10
+ version: 0.0.1a
11
+ platform: ruby
12
+ authors:
13
+ - Peter Blair
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-11-15 00:00:00 -05:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: addressable
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: json
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :runtime
48
+ version_requirements: *id002
49
+ description: Communicate with OpenSRS' Email Platform using the OMA protocol
50
+ email: petermblair@gmail.com
51
+ executables: []
52
+
53
+ extensions: []
54
+
55
+ extra_rdoc_files: []
56
+
57
+ files:
58
+ - lib/opensrs/oma.rb
59
+ has_rdoc: true
60
+ homepage: http://rubygems.org/gems/oma
61
+ licenses: []
62
+
63
+ post_install_message:
64
+ rdoc_options: []
65
+
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
77
+ required_rubygems_version: !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ">"
81
+ - !ruby/object:Gem::Version
82
+ hash: 25
83
+ segments:
84
+ - 1
85
+ - 3
86
+ - 1
87
+ version: 1.3.1
88
+ requirements: []
89
+
90
+ rubyforge_project:
91
+ rubygems_version: 1.3.7
92
+ signing_key:
93
+ specification_version: 3
94
+ summary: OpenSRS's OMA Ruby client library
95
+ test_files: []
96
+