whmcs-api 0.0.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.
- checksums.yaml +7 -0
- data/README.md +37 -0
- data/Rakefile +17 -0
- data/lib/whmcs.rb +33 -0
- data/lib/whmcs/announcement.rb +69 -0
- data/lib/whmcs/base.rb +75 -0
- data/lib/whmcs/client.rb +607 -0
- data/lib/whmcs/config.rb +24 -0
- data/lib/whmcs/domain.rb +214 -0
- data/lib/whmcs/invoice.rb +253 -0
- data/lib/whmcs/misc.rb +266 -0
- data/lib/whmcs/module.rb +99 -0
- data/lib/whmcs/order.rb +195 -0
- data/lib/whmcs/quote.rb +127 -0
- data/lib/whmcs/ticket.rb +227 -0
- data/lib/whmcs/version.rb +3 -0
- data/test/test_helper.rb +27 -0
- data/test/whmcs_announcement_test.rb +29 -0
- data/test/whmcs_test.rb +16 -0
- metadata +90 -0
data/lib/whmcs/quote.rb
ADDED
@@ -0,0 +1,127 @@
|
|
1
|
+
module WHMCS
|
2
|
+
# WHMCS::Quote is the class for managing quotes
|
3
|
+
class Quote < Base
|
4
|
+
|
5
|
+
# Create a new quote
|
6
|
+
#
|
7
|
+
# Parameters:
|
8
|
+
# * <tt>:subject</tt> - Subject of the quote
|
9
|
+
# * <tt>:stage</tt> - Draft,Delivered,On Hold,Accepted,Lost,Dead
|
10
|
+
# * <tt>:validuntil</tt> - In format set in Localisation
|
11
|
+
# * <tt>:lineitems</tt> - a base64 encoded serialized array containing:
|
12
|
+
# * <tt>:desc</tt> - The line description
|
13
|
+
# * <tt>:qty</tt> - The quantity being quoted
|
14
|
+
# * <tt>:up</tt> - unit price
|
15
|
+
# * <tt>:discount</tt> - discount amount in %
|
16
|
+
# * <tt>:taxable</tt> - true or false
|
17
|
+
#
|
18
|
+
# Optional attributes:
|
19
|
+
# * <tt>:datecreated</tt> - Optional - In format set in Localisation
|
20
|
+
# * <tt>:customernotes</tt> - notes that are viewable by the client
|
21
|
+
# * <tt>:adminnotes</tt> - notes that are admin only
|
22
|
+
# * <tt>:userid</tt> - the unique id number of the client in the tblclients table
|
23
|
+
# * <tt>:firstname</tt> - optional - only required if userid is not specified
|
24
|
+
# * <tt>:lastname</tt> - optional - only required if userid is not specified
|
25
|
+
# * <tt>:companyname</tt> - optional - only required if userid is not specified
|
26
|
+
# * <tt>:email</tt> - optional - only required if userid is not specified
|
27
|
+
# * <tt>:address1</tt> - optional - only required if userid is not specified
|
28
|
+
# * <tt>:address2</tt> - optional - only required if userid is not specified
|
29
|
+
# * <tt>:city</tt> - optional - only required if userid is not specified
|
30
|
+
# * <tt>:state</tt> - optional - only required if userid is not specified
|
31
|
+
# * <tt>:postcode</tt> - optional - only required if userid is not specified
|
32
|
+
# * <tt>:country</tt> - optional - only required if userid is not specified
|
33
|
+
# * <tt>:phonenumber</tt> - optional - only required if userid is not specified
|
34
|
+
# * <tt>:currency</tt> - optional - only required if userid is not specified
|
35
|
+
#
|
36
|
+
# See:
|
37
|
+
#
|
38
|
+
# http://docs.whmcs.com/API:Create_Quote
|
39
|
+
def self.create_quote(params = {})
|
40
|
+
params.merge!(:action => 'createquote')
|
41
|
+
send_request(params)
|
42
|
+
end
|
43
|
+
|
44
|
+
# Update an existing quote
|
45
|
+
#
|
46
|
+
# Parameters:
|
47
|
+
#
|
48
|
+
# * <tt>:quoteid</tt> - the id number of the quote in tblquotes
|
49
|
+
#
|
50
|
+
# * <tt>:userid</tt> - the unique id number of the client in the tblclients table
|
51
|
+
# * <tt>:firstname</tt> - optional - only required if userid is not specified
|
52
|
+
# * <tt>:lastname</tt> - optional - only required if userid is not specified
|
53
|
+
# * <tt>:companyname</tt> - optional - only required if userid is not specified
|
54
|
+
# * <tt>:email</tt> - optional - only required if userid is not specified
|
55
|
+
# * <tt>:address1</tt> - optional - only required if userid is not specified
|
56
|
+
# * <tt>:address2</tt> - optional - only required if userid is not specified
|
57
|
+
# * <tt>:city</tt> - optional - only required if userid is not specified
|
58
|
+
# * <tt>:state</tt> - optional - only required if userid is not specified
|
59
|
+
# * <tt>:postcode</tt> - optional - only required if userid is not specified
|
60
|
+
# * <tt>:country</tt> - optional - only required if userid is not specified
|
61
|
+
# * <tt>:phonenumber</tt> - optional - only required if userid is not specified
|
62
|
+
# * <tt>:currency</tt> - optional - only required if userid is not specified
|
63
|
+
# * <tt>:subject</tt> - Subject of the quote
|
64
|
+
# * <tt>:stage</tt> - Draft,Delivered,On Hold,Accepted,Lost,Dead
|
65
|
+
# * <tt>:validuntil</tt> - In format set in Localisation
|
66
|
+
# * <tt>:datecreated</tt> - Optional - In format set in Localisation
|
67
|
+
# * <tt>:customernotes</tt> - notes that are viewable by the client
|
68
|
+
# * <tt>:adminnotes</tt> - notes that are admin only
|
69
|
+
# * <tt>:lineitems</tt> - a base64 encoded serialized array containing:
|
70
|
+
# * <tt>:id</tt> - existing lineid only required to update existing lines
|
71
|
+
# * <tt>:desc</tt> - The line description
|
72
|
+
# * <tt>:qty</tt> - The quantity being quoted
|
73
|
+
# * <tt>:up</tt> - unit price
|
74
|
+
# * <tt>:discount</tt> - discount amount in %
|
75
|
+
# * <tt>:taxable</tt> - true or false
|
76
|
+
#
|
77
|
+
# See:
|
78
|
+
#
|
79
|
+
# http://docs.whmcs.com/API:Update_Quote
|
80
|
+
def self.update_quote(params = {})
|
81
|
+
params.merge!(:action => 'updatequote')
|
82
|
+
send_request(params)
|
83
|
+
end
|
84
|
+
|
85
|
+
# Delete a quote
|
86
|
+
#
|
87
|
+
# Parameters:
|
88
|
+
#
|
89
|
+
# * <tt>:quoteid</tt> - the id number of the quote in tblquotes
|
90
|
+
#
|
91
|
+
# See:
|
92
|
+
#
|
93
|
+
# http://docs.whmcs.com/API:Delete_Quote
|
94
|
+
def self.delete_quote(params = {})
|
95
|
+
params.merge!(:action => 'deletequote')
|
96
|
+
send_request(params)
|
97
|
+
end
|
98
|
+
|
99
|
+
# Send a quote to client
|
100
|
+
#
|
101
|
+
# Parameters:
|
102
|
+
#
|
103
|
+
# * <tt>:quoteid</tt> - the id number of the quote in tblquotes
|
104
|
+
#
|
105
|
+
# See:
|
106
|
+
#
|
107
|
+
# http://docs.whmcs.com/API:Send_Quote
|
108
|
+
def self.send_quote(params = {})
|
109
|
+
params.merge!(:action => 'sendquote')
|
110
|
+
send_request(params)
|
111
|
+
end
|
112
|
+
|
113
|
+
# Accept a quote
|
114
|
+
#
|
115
|
+
# Parameters:
|
116
|
+
#
|
117
|
+
# * <tt>:quoteid</tt> - the id number of the quote in tblquotes
|
118
|
+
#
|
119
|
+
# See:
|
120
|
+
#
|
121
|
+
# http://docs.whmcs.com/API:Accept_Quote
|
122
|
+
def self.accept_quote(params = {})
|
123
|
+
params.merge!(:action => 'acceptquote')
|
124
|
+
send_request(params)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
data/lib/whmcs/ticket.rb
ADDED
@@ -0,0 +1,227 @@
|
|
1
|
+
module WHMCS
|
2
|
+
# WHMCS::Ticket is the class for managing support tickets
|
3
|
+
class Ticket < Base
|
4
|
+
|
5
|
+
# Open a new ticket
|
6
|
+
#
|
7
|
+
# Parameters:
|
8
|
+
#
|
9
|
+
# * <tt>:clientid</tt> - the ID of the client the ticket belongs to
|
10
|
+
# * <tt>:deptid</tt> - the ID of the ticket department
|
11
|
+
# * <tt>:subject</tt>
|
12
|
+
# * <tt>:message</tt>
|
13
|
+
#
|
14
|
+
# Optional attributes:
|
15
|
+
# * <tt>:priority</tt> - can be "Low", "Medium" or "High" (Default = Low)
|
16
|
+
# * <tt>:contactid</tt> - the ID of the contact that you wish to associate the ticket with
|
17
|
+
# * <tt>:name</tt> - only required if not a registered client (clientid must be sent as 0)
|
18
|
+
# * <tt>:email</tt> - only required if not a registered client
|
19
|
+
# * <tt>:serviceid</tt> - the ID if the ticket relates to a specific product
|
20
|
+
# * <tt>:customfields</tt> - a base 64 serialized array of field IDs => values
|
21
|
+
# * <tt>:domainid</tt> - the ID if the ticket relates to a specific domain
|
22
|
+
# * <tt>:noemail</tt> - true/false - set to stop the Ticket Opened mail being sent to the user
|
23
|
+
#
|
24
|
+
# See:
|
25
|
+
#
|
26
|
+
# http://docs.whmcs.com/API:Open_Ticket
|
27
|
+
def self.open_ticket(params = {})
|
28
|
+
params.merge!(:action => 'openticket')
|
29
|
+
send_request(params)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Reply to ticket
|
33
|
+
#
|
34
|
+
# Parameters:
|
35
|
+
#
|
36
|
+
# * <tt>:ticketid</tt> - the ID of the ticket to add the reply to
|
37
|
+
# * <tt>:message</tt>
|
38
|
+
#
|
39
|
+
# Optional attributes:
|
40
|
+
# * <tt>:clientid</tt> - if adding reply as a client
|
41
|
+
# * <tt>:contactid</tt> - to be used along with clientid. contactid should be a contact within the client
|
42
|
+
# * <tt>:name</tt> - only required if not a registered client (clientid must be sent as 0)
|
43
|
+
# * <tt>:email</tt> - only required if not a registered client
|
44
|
+
# * <tt>:adminusername</tt> - if adding reply as an admin, name to show
|
45
|
+
# * <tt>:status</tt> - specify if you want to set the status to On Hold or In Progress after reply
|
46
|
+
# * <tt>:customfields</tt> - base64_encoded serialized array of custom fields associated with the ticket.
|
47
|
+
#
|
48
|
+
# See:
|
49
|
+
#
|
50
|
+
# http://docs.whmcs.com/API:Reply_Ticket
|
51
|
+
def self.reply_ticket(params = {})
|
52
|
+
params.merge!(:action => 'addticketreply')
|
53
|
+
send_request(params)
|
54
|
+
end
|
55
|
+
|
56
|
+
# Get tickets
|
57
|
+
#
|
58
|
+
# Parameters:
|
59
|
+
#
|
60
|
+
# * <tt>:limitstart</tt> - Optional start at which result (default 0)
|
61
|
+
# * <tt>:limitnum</tt> - Optional limit at how many results (default 25)
|
62
|
+
# * <tt>:clientid</tt> - Optional search for a particular client's tickets
|
63
|
+
# * <tt>:email</tt> - filter for tickets only from a specific email address
|
64
|
+
# * <tt>:deptid</tt> - Optional search in a particular department
|
65
|
+
# * <tt>:status</tt> - filter for a particular status - in addition to any individual status options, this can also take the values "Awaiting Reply", "All
|
66
|
+
# Active Tickets" or "My Flagged Tickets" to return those preset status groups
|
67
|
+
# * <tt>:subject</tt> - Optional search for a word in the subject
|
68
|
+
# * <tt>:ignore_dept_assignments</tt> - Pass this to ignore the departments the admin user belongs to. Otherwise just the tickets for the departments the API
|
69
|
+
# user belongs to are returned
|
70
|
+
#
|
71
|
+
# See:
|
72
|
+
#
|
73
|
+
# http://docs.whmcs.com/API:Get_Tickets
|
74
|
+
def self.get_tickets(params = {})
|
75
|
+
params.merge!(:action => 'gettickets')
|
76
|
+
send_request(params)
|
77
|
+
end
|
78
|
+
|
79
|
+
# Get a ticket
|
80
|
+
#
|
81
|
+
# Parameters:
|
82
|
+
#
|
83
|
+
# * <tt>:ticketid</tt> - Ticket id to retrieve
|
84
|
+
# * <tt>:ticketnum</tt> - Ticket Num to retrieve (client ticket number)
|
85
|
+
#
|
86
|
+
# See:
|
87
|
+
#
|
88
|
+
# http://docs.whmcs.com/API:Get_Ticket
|
89
|
+
def self.get_ticket(params = {})
|
90
|
+
params.merge!(:action => 'getticket')
|
91
|
+
send_request(params)
|
92
|
+
end
|
93
|
+
|
94
|
+
|
95
|
+
# Get Ticket Notes
|
96
|
+
#
|
97
|
+
# Parameters:
|
98
|
+
# * <tt>:ticketid</tt> - Ticket ID to obtain the notes for
|
99
|
+
#
|
100
|
+
#
|
101
|
+
# See:
|
102
|
+
#
|
103
|
+
# http://docs.whmcs.com/API:Get_Ticket_Notes
|
104
|
+
def self.get_ticket_notes(params = {})
|
105
|
+
params.merge!(:action => 'getticketnotes')
|
106
|
+
send_request(params)
|
107
|
+
end
|
108
|
+
|
109
|
+
# Update an existing ticket
|
110
|
+
#
|
111
|
+
# Parameters:
|
112
|
+
#
|
113
|
+
# * <tt>:ticketid</tt> - Ticket ID to be updated
|
114
|
+
#
|
115
|
+
# Optional attributes:
|
116
|
+
# * <tt>:deptid</tt> - update the assigned department
|
117
|
+
# * <tt>:subject</tt>
|
118
|
+
# * <tt>:priority</tt> - Low, Medium or High
|
119
|
+
# * <tt>:status</tt> - Open, Answered, Closed, etc...
|
120
|
+
# * <tt>:userid</tt> - change the user that the ticket is assigned to
|
121
|
+
# * <tt>:email</tt> - change the email address that opened the ticket (only when userid is not used)
|
122
|
+
# * <tt>:cc</tt> - add CC emails to the ticket
|
123
|
+
# * <tt>:flag</tt> - flag to an adminid
|
124
|
+
#
|
125
|
+
# See:
|
126
|
+
#
|
127
|
+
# http://docs.whmcs.com/API:Update_Ticket
|
128
|
+
def self.update_ticket(params = {})
|
129
|
+
params.merge!(:action => 'updateticket')
|
130
|
+
send_request(params)
|
131
|
+
end
|
132
|
+
|
133
|
+
# Add a note to an existing ticket
|
134
|
+
#
|
135
|
+
# Parameters:
|
136
|
+
#
|
137
|
+
# * <tt>:ticketid</tt> - Ticket ID the note is to be added
|
138
|
+
# * <tt>:ticketnum</tt> - The Ticket number of the note. Please note that you can only use either ticketnum or ticketid and not both.
|
139
|
+
# * <tt>:message</tt> - The not to add
|
140
|
+
#
|
141
|
+
# See:
|
142
|
+
#
|
143
|
+
# http://docs.whmcs.com/API:Add_Ticket_Note
|
144
|
+
def self.add_ticket_note(params = {})
|
145
|
+
params.merge!(:action => 'addticketnote')
|
146
|
+
send_request(params)
|
147
|
+
end
|
148
|
+
|
149
|
+
# Delete an existing ticket
|
150
|
+
#
|
151
|
+
# Parameters:
|
152
|
+
#
|
153
|
+
# * <tt>:ticketid</tt> - Ticket ID to be deleted
|
154
|
+
#
|
155
|
+
# See:
|
156
|
+
#
|
157
|
+
# http://docs.whmcs.com/API:Delete_Ticket
|
158
|
+
def self.delete_ticket(params = {})
|
159
|
+
params.merge!(:action => 'deleteticket')
|
160
|
+
send_request(params)
|
161
|
+
end
|
162
|
+
|
163
|
+
# Delete Ticket Note
|
164
|
+
#
|
165
|
+
# Parameters:
|
166
|
+
# * <tt>:noteid</tt> - Note ID to be removed [See: Get Ticket Notes](http://docs.whmcs.com/API:Get_Ticket_Notes)
|
167
|
+
#
|
168
|
+
# See:
|
169
|
+
#
|
170
|
+
# http://docs.whmcs.com/API:Delete_Ticket_Note
|
171
|
+
def self.delete_ticket_note(params = {})
|
172
|
+
params.merge!(:action => 'deleteticketnote')
|
173
|
+
send_request(params)
|
174
|
+
end
|
175
|
+
|
176
|
+
# Get support departments
|
177
|
+
# This command is used to retrieve an XML list of Support Departments and counts of tickets Open and Awaiting reply.
|
178
|
+
#
|
179
|
+
# Optional attributes:
|
180
|
+
# * <tt>:ignore_dept_assignments</tt> - send as true to ignore the departments that the API user is assigned to
|
181
|
+
#
|
182
|
+
# See:
|
183
|
+
#
|
184
|
+
# http://docs.whmcs.com/API:Get_Support_Departments
|
185
|
+
def self.get_support_departments
|
186
|
+
send_request(:action => 'getsupportdepartments')
|
187
|
+
end
|
188
|
+
|
189
|
+
# Get support statuses
|
190
|
+
#
|
191
|
+
# Optional attributes:
|
192
|
+
#
|
193
|
+
# * <tt>:deptid</tt> - Optional - Send a Department ID to limit results
|
194
|
+
#
|
195
|
+
# See:
|
196
|
+
#
|
197
|
+
# http://docs.whmcs.com/API:Get_Support_Statuses
|
198
|
+
def self.get_support_statuses(params = {})
|
199
|
+
params.merge!(:action => 'getsupportstatuses')
|
200
|
+
send_request(params)
|
201
|
+
end
|
202
|
+
|
203
|
+
# Get ticket predefined categories
|
204
|
+
#
|
205
|
+
# See:
|
206
|
+
#
|
207
|
+
# http://docs.whmcs.com/API:Get_Ticket_Predefined_Cats
|
208
|
+
def self.get_ticket_predefined_cats
|
209
|
+
params.merge!(:action => 'getticketpredefinedcats')
|
210
|
+
send_request(params)
|
211
|
+
end
|
212
|
+
|
213
|
+
# Get ticket predefined replies
|
214
|
+
#
|
215
|
+
# Optional attributes:
|
216
|
+
#
|
217
|
+
# * <tt>:catid</tt> - Optional Select category to browse
|
218
|
+
#
|
219
|
+
# See:
|
220
|
+
#
|
221
|
+
# http://docs.whmcs.com/API:Get_Ticket_Predefined_Replies
|
222
|
+
def self.get_ticket_predefined_repies(params = {})
|
223
|
+
params.merge!(:action => 'getsupportstatuses')
|
224
|
+
send_request(params)
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
require 'simplecov'
|
5
|
+
require 'coveralls'
|
6
|
+
|
7
|
+
|
8
|
+
SimpleCov.formatter = Coveralls::SimpleCov::Formatter
|
9
|
+
SimpleCov.start do
|
10
|
+
add_filter '/_test.rb/'
|
11
|
+
end
|
12
|
+
|
13
|
+
#Coveralls.wear!
|
14
|
+
|
15
|
+
begin
|
16
|
+
require 'turn'
|
17
|
+
rescue LoadError
|
18
|
+
end
|
19
|
+
|
20
|
+
require 'whmcs'
|
21
|
+
|
22
|
+
WHMCS.configure do |config|
|
23
|
+
config.api_username = ENV['WHMCS_USER'] or raise "You must set the env variable WHMCS_USER"
|
24
|
+
config.api_password = ENV['WHMCS_PASS'] or raise "You must set the env variable WHMCS_PASS"
|
25
|
+
config.api_url = ENV['WHMCS_URL'] or raise "You must set the env variable WHMCS_URL"
|
26
|
+
config.api_key = ENV['WHMCS_KEY'] or raise "There must be a present key for WHMCS_KEY"
|
27
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require_relative 'test_helper'
|
2
|
+
|
3
|
+
class WHMCSAnnouncementTest < Test::Unit::TestCase
|
4
|
+
# dummy testing of announcement functionality
|
5
|
+
def test__basic_announcement_crud__passingValidData
|
6
|
+
passing_data = {
|
7
|
+
:date => '2014-04-01',
|
8
|
+
:title => 'Test Announcement1',
|
9
|
+
:announcement => 'Test Hello World announcement',
|
10
|
+
:published => 'off'
|
11
|
+
}
|
12
|
+
|
13
|
+
resulted_announce = WHMCS::Announcement.get_announcements()
|
14
|
+
|
15
|
+
resulted = WHMCS::Announcement.add_announcement( passing_data )
|
16
|
+
|
17
|
+
updated_announcement = WHMCS::Announcement.update_announcement(
|
18
|
+
:announcementid => resulted['announcementid'],
|
19
|
+
:title => 'Test Hello World announcement 2'
|
20
|
+
)
|
21
|
+
|
22
|
+
deleted_announcement = WHMCS::Announcement.delete_announcement(:announcementid => resulted['announcementid'])
|
23
|
+
|
24
|
+
assert_equal('success', updated_announcement['result'])
|
25
|
+
assert_equal(resulted['announcementid'], deleted_announcement['announcementid'])
|
26
|
+
assert_equal('success', deleted_announcement['result'])
|
27
|
+
assert_equal('success', resulted['result'])
|
28
|
+
end
|
29
|
+
end
|
data/test/whmcs_test.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative 'test_helper'
|
2
|
+
|
3
|
+
class WHMCSTest < Test::Unit::TestCase
|
4
|
+
# in certain occasions encrypt call returns hash that includes '='
|
5
|
+
def test__parse_response__parsedCorrectlyHashesWithEqSign
|
6
|
+
expected = "result=succes;password=12lkjdfosifusdlfsdfmlasdof==;"
|
7
|
+
parsed = WHMCS::Base.parse_response(expected)
|
8
|
+
assert_equal('12lkjdfosifusdlfsdfmlasdof==', parsed['password'])
|
9
|
+
end
|
10
|
+
|
11
|
+
def test__send_request__returningHash
|
12
|
+
resulted = WHMCS::Base.send_request(:action => 'do_me_a_favor')
|
13
|
+
assert resulted.is_a?(Hash)
|
14
|
+
assert_equal('Command Not Found', resulted['message'])
|
15
|
+
end
|
16
|
+
end
|
metadata
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: whmcs-api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Andrey Vystavkin
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-04-02 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: crack
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>'
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.1.8
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>'
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.1.8
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: shoulda
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: 'whmcs-api: Ruby bindings for the WHMCS API'
|
42
|
+
email: jujav4ik@gmail.com
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files:
|
46
|
+
- README.md
|
47
|
+
files:
|
48
|
+
- Rakefile
|
49
|
+
- README.md
|
50
|
+
- lib/whmcs/announcement.rb
|
51
|
+
- lib/whmcs/base.rb
|
52
|
+
- lib/whmcs/client.rb
|
53
|
+
- lib/whmcs/config.rb
|
54
|
+
- lib/whmcs/domain.rb
|
55
|
+
- lib/whmcs/invoice.rb
|
56
|
+
- lib/whmcs/misc.rb
|
57
|
+
- lib/whmcs/module.rb
|
58
|
+
- lib/whmcs/order.rb
|
59
|
+
- lib/whmcs/quote.rb
|
60
|
+
- lib/whmcs/ticket.rb
|
61
|
+
- lib/whmcs/version.rb
|
62
|
+
- lib/whmcs.rb
|
63
|
+
- test/test_helper.rb
|
64
|
+
- test/whmcs_announcement_test.rb
|
65
|
+
- test/whmcs_test.rb
|
66
|
+
homepage: https://github.com/jujav4ik/whmcs-api
|
67
|
+
licenses: []
|
68
|
+
metadata: {}
|
69
|
+
post_install_message:
|
70
|
+
rdoc_options:
|
71
|
+
- --charset=UTF-8
|
72
|
+
require_paths:
|
73
|
+
- lib
|
74
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
requirements: []
|
85
|
+
rubyforge_project:
|
86
|
+
rubygems_version: 2.0.6
|
87
|
+
signing_key:
|
88
|
+
specification_version: 4
|
89
|
+
summary: 'whmcs-api: Ruby bindings for the WHMCS API'
|
90
|
+
test_files: []
|