Skip to content

Commit ef80dde

Browse files
committedOct 2, 2019
Refactor generated code
1 parent 041e4c9 commit ef80dde

6 files changed

+1231
-0
lines changed
 

‎definitions.go

+673
Large diffs are not rendered by default.

‎docs/Animate_API_Guide_July2019.pdf

1.62 MB
Binary file not shown.

‎go.mod

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module github.com/ubogdan/peerless
2+
3+
go 1.13

‎operations.go

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package peerless
2+
3+
type Request struct {
4+
ActivateSOA *ActivateSOA `xml:"ns:activateSOA,omitempty" json:"activateSOA,omitempty" yaml:"activateSOA,omitempty"`
5+
AddNotes *AddNotes `xml:"ns:addNotes,omitempty" json:"addNotes,omitempty" yaml:"addNotes,omitempty"`
6+
CreateException *CreateException `xml:"ns:createException,omitempty" json:"createException,omitempty" yaml:"createException,omitempty"`
7+
DisconnectOrder *DisconnectOrder `xml:"ns:disconnectOrder,omitempty" json:"disconnectOrder,omitempty" yaml:"disconnectOrder,omitempty"`
8+
Download *Download `xml:"ns:download,omitempty" json:"download,omitempty" yaml:"download,omitempty"`
9+
GetHierarchicalView *GetHierarchicalView `xml:"ns:getHierarchicalView,omitempty" json:"getHierarchicalView,omitempty" yaml:"getHierarchicalView,omitempty"`
10+
GetNewNumberSearchFilters *GetNewNumberSearchFilters `xml:"ns:getNewNumberSearchFilters,omitempty" json:"getNewNumberSearchFilters,omitempty" yaml:"getNewNumberSearchFilters,omitempty"`
11+
GetOrderStatus *GetOrderStatus `xml:"ns:getOrderStatus,omitempty" json:"getOrderStatus,omitempty" yaml:"getOrderStatus,omitempty"`
12+
GetOrdersByPONSearch *GetOrdersByPONSearch `xml:"ns:getOrdersByPONSearch,omitempty" json:"getOrdersByPONSearch,omitempty" yaml:"getOrdersByPONSearch,omitempty"`
13+
GetPortInRelatedOrders *GetPortInRelatedOrders `xml:"ns:getPortInRelatedOrders,omitempty" json:"getPortInRelatedOrders,omitempty" yaml:"getPortInRelatedOrders,omitempty"`
14+
GetStatusByNumberSearch *GetStatusByNumberSearch `xml:"ns:getStatusByNumberSearch,omitempty" json:"getStatusByNumberSearch,omitempty" yaml:"getStatusByNumberSearch,omitempty"`
15+
GetTnInventoryReport *GetTnInventoryReport `xml:"ns:getTnInventoryReport,omitempty" json:"getTnInventoryReport,omitempty" yaml:"getTnInventoryReport,omitempty"`
16+
PlaceOrder *PlaceOrder `xml:"ns:placeOrder,omitempty" json:"placeOrder,omitempty" yaml:"placeOrder,omitempty"`
17+
PlaceTFDisconnectOrder *PlaceTFDisconnectOrder `xml:"ns:placeTFDisconnectOrder,omitempty" json:"placeTFDisconnectOrder,omitempty" yaml:"placeTFDisconnectOrder,omitempty"`
18+
PlaceTFOrder *PlaceTFOrder `xml:"ns:placeTFOrder,omitempty" json:"placeTFOrder,omitempty" yaml:"placeTFOrder,omitempty"`
19+
PortabilityCheck *PortabilityCheck `xml:"ns:portabilityCheck,omitempty" json:"portabilityCheck,omitempty" yaml:"portabilityCheck,omitempty"`
20+
SearchNumbers *SearchNumbers `xml:"ns:searchNumbers,omitempty" json:"searchNumbers,omitempty" yaml:"searchNumbers,omitempty"`
21+
SearchOrderDetailsByOrderId *SearchOrderDetailsByOrderId `xml:"ns:searchOrderDetailsByOrderId,omitempty" json:"searchOrderDetailsByOrderId,omitempty" yaml:"searchOrderDetailsByOrderId,omitempty"`
22+
SupplementOrder *SupplementOrder `xml:"ns:supplementOrder,omitempty" json:"supplementOrder,omitempty" yaml:"supplementOrder,omitempty"`
23+
Upload *Upload `xml:"ns:upload,omitempty" json:"upload,omitempty" yaml:"upload,omitempty"`
24+
ValidateE911Address *ValidateE911Address `xml:"ns:validateE911Address,omitempty" json:"validateE911Address,omitempty" yaml:"validateE911Address,omitempty"`
25+
ViewNumberDetails *ViewNumberDetails `xml:"ns:viewNumberDetails,omitempty" json:"viewNumberDetails,omitempty" yaml:"viewNumberDetails,omitempty"`
26+
}
27+
28+
type Response struct {
29+
ActivateSOA *ActivateSOAResponse `xml:"activateSOAResponse,omitempty" json:"activateSOAResponse,omitempty" yaml:"activateSOAResponse,omitempty"`
30+
AddNotes *AddNotesResponse `xml:"addNotesResponse,omitempty" json:"addNotesResponse,omitempty" yaml:"addNotesResponse,omitempty"`
31+
CreateException *CreateExceptionResponse `xml:"createExceptionResponse,omitempty" json:"createExceptionResponse,omitempty" yaml:"createExceptionResponse,omitempty"`
32+
DisconnectOrder *DisconnectOrderResponse `xml:"disconnectOrderResponse,omitempty" json:"disconnectOrderResponse,omitempty" yaml:"disconnectOrderResponse,omitempty"`
33+
Download *DownloadResponse `xml:"downloadResponse,omitempty" json:"downloadResponse,omitempty" yaml:"downloadResponse,omitempty"`
34+
GetHierarchicalView *GetHierarchicalViewResponse `xml:"getHierarchicalViewResponse,omitempty" json:"getHierarchicalViewResponse,omitempty" yaml:"getHierarchicalViewResponse,omitempty"`
35+
GetNewNumberSearchFilters *GetNewNumberSearchFiltersResponse `xml:"getNewNumberSearchFiltersResponse,omitempty" json:"getNewNumberSearchFiltersResponse,omitempty" yaml:"getNewNumberSearchFiltersResponse,omitempty"`
36+
GetOrderStatus *GetOrderStatusResponse `xml:"getOrderStatusResponse,omitempty" json:"getOrderStatusResponse,omitempty" yaml:"getOrderStatusResponse,omitempty"`
37+
GetOrdersByPONSearch *GetOrdersByPONSearchResponse `xml:"getOrdersByPONSearchResponse,omitempty" json:"getOrdersByPONSearchResponse,omitempty" yaml:"getOrdersByPONSearchResponse,omitempty"`
38+
GetPortInRelatedOrders *GetPortInRelatedOrdersResponse `xml:"getPortInRelatedOrdersResponse,omitempty" json:"getPortInRelatedOrdersResponse,omitempty" yaml:"getPortInRelatedOrdersResponse,omitempty"`
39+
GetStatusByNumberSearch *GetStatusByNumberSearchResponse `xml:"getStatusByNumberSearchResponse,omitempty" json:"getStatusByNumberSearchResponse,omitempty" yaml:"getStatusByNumberSearchResponse,omitempty"`
40+
GetTnInventoryReport *GetTnInventoryReportResponse `xml:"getTnInventoryReportResponse,omitempty" json:"getTnInventoryReportResponse,omitempty" yaml:"getTnInventoryReportResponse,omitempty"`
41+
PlaceOrder *PlaceOrderResponse `xml:"placeOrderResponse,omitempty" json:"placeOrderResponse,omitempty" yaml:"placeOrderResponse,omitempty"`
42+
PlaceTFDisconnectOrder *PlaceTFDisconnectOrderResponse `xml:"placeTFDisconnectOrderResponse,omitempty" json:"placeTFDisconnectOrderResponse,omitempty" yaml:"placeTFDisconnectOrderResponse,omitempty"`
43+
PlaceTFOrder *PlaceTFOrderResponse `xml:"placeTFOrderResponse,omitempty" json:"placeTFOrderResponse,omitempty" yaml:"placeTFOrderResponse,omitempty"`
44+
PortabilityCheck *PortabilityCheckResponse `xml:"portabilityCheckResponse,omitempty" json:"portabilityCheckResponse,omitempty" yaml:"portabilityCheckResponse,omitempty"`
45+
SearchNumbers *SearchNumbersResponse `xml:"searchNumbersResponse,omitempty" json:"searchNumbersResponse,omitempty" yaml:"searchNumbersResponse,omitempty"`
46+
SearchOrderDetailsByOrderId *SearchOrderDetailsByOrderIdResponse `xml:"searchOrderDetailsByOrderIdResponse,omitempty" json:"searchOrderDetailsByOrderIdResponse,omitempty" yaml:"searchOrderDetailsByOrderIdResponse,omitempty"`
47+
SupplementOrder *SupplementOrderResponse `xml:"supplementOrderResponse,omitempty" json:"supplementOrderResponse,omitempty" yaml:"supplementOrderResponse,omitempty"`
48+
Upload *UploadResponse `xml:"uploadResponse,omitempty" json:"uploadResponse,omitempty" yaml:"uploadResponse,omitempty"`
49+
ValidateE911Address *ValidateE911AddressResponse `xml:"validateE911AddressResponse,omitempty" json:"validateE911AddressResponse,omitempty" yaml:"validateE911AddressResponse,omitempty"`
50+
ViewNumberDetails *ViewNumberDetailsResponse `xml:"viewNumberDetailsResponse,omitempty" json:"viewNumberDetailsResponse,omitempty" yaml:"viewNumberDetailsResponse,omitempty"`
51+
}

‎service.go

+391
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,391 @@
1+
// Package peerless provides a SOAP HTTP client.
2+
package peerless
3+
4+
import (
5+
"net/http"
6+
"reflect"
7+
)
8+
9+
const (
10+
// Envelope is a SOAP envelope.
11+
Namespace = "http://publicapi.api.s2.peerless.com/"
12+
// ProductionEndpoint endpoint used in production
13+
ProductionEndpoint = "https://animate.peerlessnetwork.com:8181/animateapi/axis/APIService"
14+
// StagingEndpoint endpoint used for development
15+
StagingEndpoint = "https://aniweb02.peerlessnetwork.com:8181/animateapi/axis/APIService"
16+
)
17+
18+
// APIService was auto-generated from WSDL
19+
// and defines interface for the remote service. Useful for testing.
20+
type APIService interface {
21+
22+
// ActivateSOA godoc
23+
ActivateSOA(ActivateSOA *ActivateSOA) (*ActivateSOAResponse, error)
24+
25+
// AddNotes godoc
26+
AddNotes(AddNotes *AddNotes) (*AddNotesResponse, error)
27+
28+
// CreateException godoc
29+
CreateException(CreateException *CreateException) (*CreateExceptionResponse, error)
30+
31+
// DisconnectOrder godoc
32+
DisconnectOrder(DisconnectOrder *DisconnectOrder) (*DisconnectOrderResponse, error)
33+
34+
// Download godoc
35+
Download(Download *Download) (*DownloadResponse, error)
36+
37+
// GetHierarchicalView godoc
38+
GetHierarchicalView(GetHierarchicalView *GetHierarchicalView) (*GetHierarchicalViewResponse, error)
39+
40+
// GetNewNumberSearchFilters godoc
41+
GetNewNumberSearchFilters(GetNewNumberSearchFilters *GetNewNumberSearchFilters) (*GetNewNumberSearchFiltersResponse, error)
42+
43+
// GetOrderStatus godoc
44+
GetOrderStatus(orderID string) (*GetOrderStatusResponse, error)
45+
46+
// GetOrdersByPONSearch godoc
47+
GetOrdersByPONSearch(GetOrdersByPONSearch *GetOrdersByPONSearch) (*GetOrdersByPONSearchResponse, error)
48+
49+
// GetPortInRelatedOrders godoc
50+
GetPortInRelatedOrders(GetPortInRelatedOrders *GetPortInRelatedOrders) (*GetPortInRelatedOrdersResponse, error)
51+
52+
// GetStatusByNumberSearch godoc
53+
GetStatusByNumberSearch(GetStatusByNumberSearch *GetStatusByNumberSearch) (*GetStatusByNumberSearchResponse, error)
54+
55+
// GetTnInventoryReport godoc
56+
GetTnInventoryReport(GetTnInventoryReport *GetTnInventoryReport) (*GetTnInventoryReportResponse, error)
57+
58+
// PlaceOrder was godoc
59+
PlaceOrder(PlaceOrder *PlaceOrder) (*PlaceOrderResponse, error)
60+
61+
// PlaceTFDisconnectOrder godoc
62+
PlaceTFDisconnectOrder(PlaceTFDisconnectOrder *PlaceTFDisconnectOrder) (*PlaceTFDisconnectOrderResponse, error)
63+
64+
// PlaceTFOrder godoc
65+
PlaceTFOrder(PlaceTFOrder *PlaceTFOrder) (*PlaceTFOrderResponse, error)
66+
67+
// PortabilityCheck godoc
68+
PortabilityCheck(PortabilityCheck *PortabilityCheck) (*PortabilityCheckResponse, error)
69+
70+
// SearchNumbers godoc
71+
SearchNumbers(SearchNumbers *SearchNumbers) (*SearchNumbersResponse, error)
72+
73+
// SearchOrderDetailsByOrderId godoc
74+
SearchOrderDetailsByOrderId(SearchOrderDetailsByOrderId *SearchOrderDetailsByOrderId) (*SearchOrderDetailsByOrderIdResponse, error)
75+
76+
// SupplementOrder godoc
77+
SupplementOrder(SupplementOrder *SupplementOrder) (*SupplementOrderResponse, error)
78+
79+
// Upload godoc
80+
Upload(Upload *Upload) (*UploadResponse, error)
81+
82+
// ValidateE911Address godoc
83+
ValidateE911Address(address BaseAddress) (*ValidateE911AddressResponse, error)
84+
85+
// ViewNumberDetails godoc
86+
ViewNumberDetails(numbers []string) (*ViewNumberDetailsResponse, error)
87+
}
88+
89+
90+
91+
// New creates an initializes a API service.
92+
func New(url, customer, passcode, userid string) APIService {
93+
return &service{
94+
URL: url,
95+
Namespace: Namespace,
96+
Authentication: &AuthInfo{
97+
Customer: customer,
98+
PassCode: passcode,
99+
UserId: userid,
100+
},
101+
}
102+
}
103+
104+
// service implements the APIService interface.
105+
type service struct {
106+
URL string // URL of the server
107+
UserAgent string // User-Agent header will be added to each request
108+
Namespace string // SOAP Namespace
109+
URNamespace string // Uniform Resource Namespace
110+
ThisNamespace string // SOAP This-Namespace (tns)
111+
ExcludeActionNamespace bool // Include Namespace to SOAP Action header
112+
Envelope string // Optional SOAP Envelope
113+
Header interface{} // Optional SOAP Header
114+
ContentType string // Optional Content-Type (default text/xml)
115+
Config *http.Client // Optional HTTP client
116+
Authentication *AuthInfo // Authentication
117+
}
118+
119+
// ActivateSOA was auto-generated from WSDL.
120+
func (s *service) ActivateSOA(ActivateSOA *ActivateSOA) (*ActivateSOAResponse, error) {
121+
req := Request{
122+
ActivateSOA: ActivateSOA,
123+
}
124+
res,err := s.call("activateSOA", req);
125+
if err != nil {
126+
return nil, err
127+
}
128+
return res.ActivateSOA, nil
129+
}
130+
131+
// AddNotes was auto-generated from WSDL.
132+
func (s *service) AddNotes(AddNotes *AddNotes) (*AddNotesResponse, error) {
133+
req := Request{
134+
AddNotes: AddNotes,
135+
}
136+
res,err := s.call("addNotes", req);
137+
if err != nil {
138+
return nil, err
139+
}
140+
return res.AddNotes, nil
141+
}
142+
143+
// CreateException was auto-generated from WSDL.
144+
func (s *service) CreateException(CreateException *CreateException) (*CreateExceptionResponse, error) {
145+
req := Request{
146+
CreateException: CreateException,
147+
}
148+
res,err := s.call("createException", req);
149+
if err != nil {
150+
return nil, err
151+
}
152+
return res.CreateException, nil
153+
}
154+
155+
// DisconnectOrder was auto-generated from WSDL.
156+
func (s *service) DisconnectOrder(DisconnectOrder *DisconnectOrder) (*DisconnectOrderResponse, error) {
157+
req := Request{
158+
DisconnectOrder: DisconnectOrder,
159+
}
160+
res,err := s.call("disconnectOrder", req);
161+
if err != nil {
162+
return nil, err
163+
}
164+
return res.DisconnectOrder, nil
165+
}
166+
167+
// Download was auto-generated from WSDL.
168+
func (s *service) Download(Download *Download) (*DownloadResponse, error) {
169+
req := Request{
170+
Download: Download,
171+
}
172+
173+
res,err := s.call("download", req);
174+
if err != nil {
175+
return nil, err
176+
}
177+
return res.Download, nil
178+
}
179+
180+
// GetHierarchicalView was auto-generated from WSDL.
181+
func (s *service) GetHierarchicalView(GetHierarchicalView *GetHierarchicalView) (*GetHierarchicalViewResponse, error) {
182+
req := Request{
183+
GetHierarchicalView: GetHierarchicalView,
184+
}
185+
res,err := s.call("getHierarchicalView", req);
186+
if err != nil {
187+
return nil, err
188+
}
189+
return res.GetHierarchicalView, nil
190+
}
191+
192+
// GetNewNumberSearchFilters was auto-generated from WSDL.
193+
func (s *service) GetNewNumberSearchFilters(GetNewNumberSearchFilters *GetNewNumberSearchFilters) (*GetNewNumberSearchFiltersResponse, error) {
194+
req := Request{
195+
GetNewNumberSearchFilters: GetNewNumberSearchFilters,
196+
}
197+
res,err := s.call("getNewNumberSearchFilters", req);
198+
if err != nil {
199+
return nil, err
200+
}
201+
return res.GetNewNumberSearchFilters, nil
202+
}
203+
204+
// GetOrderStatus was auto-generated from WSDL.
205+
func (s *service) GetOrderStatus(orderID string) (*GetOrderStatusResponse, error) {
206+
req := Request{
207+
GetOrderStatus: &GetOrderStatus{
208+
OrderId: orderID,
209+
},
210+
}
211+
res,err := s.call("getOrderStatus", req);
212+
if err != nil {
213+
return nil, err
214+
}
215+
return res.GetOrderStatus, nil
216+
}
217+
218+
// GetOrdersByPONSearch was auto-generated from WSDL.
219+
func (s *service) GetOrdersByPONSearch(GetOrdersByPONSearch *GetOrdersByPONSearch) (*GetOrdersByPONSearchResponse, error) {
220+
req := Request{
221+
GetOrdersByPONSearch: GetOrdersByPONSearch,
222+
}
223+
224+
res,err := s.call("getOrdersByPONSearch", req);
225+
if err != nil {
226+
return nil, err
227+
}
228+
return res.GetOrdersByPONSearch, nil
229+
}
230+
231+
// GetPortInRelatedOrders was auto-generated from WSDL.
232+
func (s *service) GetPortInRelatedOrders(GetPortInRelatedOrders *GetPortInRelatedOrders) (*GetPortInRelatedOrdersResponse, error) {
233+
req := Request{
234+
GetPortInRelatedOrders: GetPortInRelatedOrders,
235+
}
236+
res,err := s.call("getPortInRelatedOrders", req);
237+
if err != nil {
238+
return nil, err
239+
}
240+
return res.GetPortInRelatedOrders, nil
241+
}
242+
243+
// GetStatusByNumberSearch was auto-generated from WSDL.
244+
func (s *service) GetStatusByNumberSearch(GetStatusByNumberSearch *GetStatusByNumberSearch) (*GetStatusByNumberSearchResponse, error) {
245+
req := Request{
246+
GetStatusByNumberSearch: GetStatusByNumberSearch,
247+
}
248+
res,err := s.call("getStatusByNumberSearch", req);
249+
if err != nil {
250+
return nil, err
251+
}
252+
return res.GetStatusByNumberSearch, nil
253+
}
254+
255+
// GetTnInventoryReport was auto-generated from WSDL.
256+
func (s *service) GetTnInventoryReport(GetTnInventoryReport *GetTnInventoryReport) (*GetTnInventoryReportResponse, error) {
257+
req := Request{
258+
GetTnInventoryReport: GetTnInventoryReport,
259+
}
260+
res,err := s.call("getTnInventoryReport", req);
261+
if err != nil {
262+
return nil, err
263+
}
264+
return res.GetTnInventoryReport, nil
265+
}
266+
267+
// PlaceOrder was auto-generated from WSDL.
268+
func (s *service) PlaceOrder(PlaceOrder *PlaceOrder) (*PlaceOrderResponse, error) {
269+
req := Request{
270+
PlaceOrder: PlaceOrder,
271+
}
272+
res,err := s.call("placeOrder", req);
273+
if err != nil {
274+
return nil, err
275+
}
276+
return res.PlaceOrder, nil
277+
}
278+
279+
// PlaceTFDisconnectOrder was auto-generated from WSDL.
280+
func (s *service) PlaceTFDisconnectOrder(PlaceTFDisconnectOrder *PlaceTFDisconnectOrder) (*PlaceTFDisconnectOrderResponse, error) {
281+
req := Request{
282+
PlaceTFDisconnectOrder: PlaceTFDisconnectOrder,
283+
}
284+
res,err := s.call("placeTFDisconnectOrder", req);
285+
if err != nil {
286+
return nil, err
287+
}
288+
return res.PlaceTFDisconnectOrder, nil
289+
}
290+
291+
// PlaceTFOrder was auto-generated from WSDL.
292+
func (s *service) PlaceTFOrder(PlaceTFOrder *PlaceTFOrder) (*PlaceTFOrderResponse, error) {
293+
req := Request{
294+
PlaceTFOrder: PlaceTFOrder,
295+
}
296+
res,err := s.call("placeTFOrder", req);
297+
if err != nil {
298+
return nil, err
299+
}
300+
return res.PlaceTFOrder, nil
301+
}
302+
303+
// PortabilityCheck was auto-generated from WSDL.
304+
func (s *service) PortabilityCheck(PortabilityCheck *PortabilityCheck) (*PortabilityCheckResponse, error) {
305+
req := Request{
306+
PortabilityCheck: PortabilityCheck,
307+
}
308+
res,err := s.call("portabilityCheck", req);
309+
if err != nil {
310+
return nil, err
311+
}
312+
return res.PortabilityCheck, nil
313+
}
314+
315+
// SearchNumbers was auto-generated from WSDL.
316+
func (s *service) SearchNumbers(SearchNumbers *SearchNumbers) (*SearchNumbersResponse, error) {
317+
req := Request{
318+
SearchNumbers: SearchNumbers,
319+
}
320+
res,err := s.call("searchNumbers", req);
321+
if err != nil {
322+
return nil, err
323+
}
324+
return res.SearchNumbers, nil
325+
}
326+
327+
// SearchOrderDetailsByOrderId was auto-generated from WSDL.
328+
func (s *service) SearchOrderDetailsByOrderId(SearchOrderDetailsByOrderId *SearchOrderDetailsByOrderId) (*SearchOrderDetailsByOrderIdResponse, error) {
329+
req := Request{
330+
SearchOrderDetailsByOrderId: SearchOrderDetailsByOrderId,
331+
}
332+
res,err := s.call("searchOrderDetailsByOrderId", req);
333+
if err != nil {
334+
return nil, err
335+
}
336+
return res.SearchOrderDetailsByOrderId, nil
337+
}
338+
339+
// SupplementOrder was auto-generated from WSDL.
340+
func (s *service) SupplementOrder(SupplementOrder *SupplementOrder) (*SupplementOrderResponse, error) {
341+
req := Request{
342+
SupplementOrder: SupplementOrder,
343+
}
344+
res,err := s.call("supplementOrder", req);
345+
if err != nil {
346+
return nil, err
347+
}
348+
return res.SupplementOrder, nil
349+
}
350+
351+
// Upload was auto-generated from WSDL.
352+
func (s *service) Upload(Upload *Upload) (*UploadResponse, error) {
353+
req := Request{
354+
Upload: Upload,
355+
}
356+
res,err := s.call("upload", req);
357+
if err != nil {
358+
return nil, err
359+
}
360+
return res.Upload, nil
361+
}
362+
363+
// ValidateE911Address was auto-generated from WSDL.
364+
func (s *service) ValidateE911Address(address BaseAddress) (*ValidateE911AddressResponse, error) {
365+
req := Request{
366+
ValidateE911Address: &ValidateE911Address{
367+
Authentication: s.Authentication,
368+
Address: address,
369+
},
370+
}
371+
res,err := s.call("validateE911Address", req);
372+
if err != nil {
373+
return nil, err
374+
}
375+
return res.ValidateE911Address, nil
376+
}
377+
378+
// ViewNumberDetails was auto-generated from WSDL.
379+
func (s *service) ViewNumberDetails(numbers []string) (*ViewNumberDetailsResponse, error) {
380+
req := Request{
381+
ViewNumberDetails: &ViewNumberDetails{
382+
Authentication: s.Authentication,
383+
TelephoneNumber: numbers,
384+
},
385+
}
386+
res,err := s.call("viewNumberDetails", req);
387+
if err != nil {
388+
return nil, err
389+
}
390+
return res.ViewNumberDetails, nil
391+
}

‎transport.go

+113
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
package peerless
2+
3+
import (
4+
"bytes"
5+
"encoding/xml"
6+
"fmt"
7+
"io"
8+
"io/ioutil"
9+
"log"
10+
"net/http"
11+
)
12+
13+
14+
const XSINamespace = "http://www.w3.org/2001/XMLSchema-instance"
15+
16+
// HTTPError is detailed soap http error
17+
type HTTPError struct {
18+
StatusCode int
19+
Status string
20+
Msg string
21+
}
22+
23+
func (e *HTTPError) Error() string {
24+
return fmt.Sprintf("%q: %q", e.Status, e.Msg)
25+
}
26+
27+
func (c *service) call(soapAction string, operation Request) (*Response, error) {
28+
29+
// Envelope is a SOAP envelope.
30+
req := struct {
31+
XMLName xml.Name `xml:"SOAP-ENV:Envelope"`
32+
EnvelopeAttr string `xml:"xmlns:SOAP-ENV,attr"`
33+
NSAttr string `xml:"xmlns:ns,attr"`
34+
TNSAttr string `xml:"xmlns:tns,attr,omitempty"`
35+
URNAttr string `xml:"xmlns:urn,attr,omitempty"`
36+
XSIAttr string `xml:"xmlns:xsi,attr,omitempty"`
37+
Header interface{} `xml:"SOAP-ENV:Header"`
38+
Body Request `xml:"SOAP-ENV:Body"`
39+
}{
40+
EnvelopeAttr: c.Envelope,
41+
URNAttr: c.URNamespace,
42+
NSAttr: c.Namespace,
43+
XSIAttr: XSINamespace,
44+
Header: c.Header,
45+
Body: operation,
46+
}
47+
48+
if req.EnvelopeAttr == "" {
49+
req.EnvelopeAttr = "http://schemas.xmlsoap.org/soap/envelope/"
50+
}
51+
if req.NSAttr == "" {
52+
req.NSAttr = c.URL
53+
}
54+
var b bytes.Buffer
55+
err := xml.NewEncoder(&b).Encode(req)
56+
if err != nil {
57+
return nil,err
58+
}
59+
60+
log.Printf("Req: %s", b.Bytes())
61+
62+
cli := c.Config
63+
if cli == nil {
64+
cli = http.DefaultClient
65+
}
66+
r, err := http.NewRequest("POST", c.URL, &b)
67+
if err != nil {
68+
return nil,err
69+
}
70+
// Set Headers
71+
if c.UserAgent != "" {
72+
r.Header.Add("User-Agent", c.UserAgent)
73+
}
74+
var actionName string
75+
ct := c.ContentType
76+
if ct == "" {
77+
ct = "text/xml"
78+
}
79+
r.Header.Set("Content-Type", ct)
80+
81+
if c.ExcludeActionNamespace {
82+
actionName = soapAction
83+
} else {
84+
actionName = fmt.Sprintf("%s/%s", c.Namespace, soapAction)
85+
}
86+
r.Header.Add("SOAPAction", actionName)
87+
88+
resp, err := cli.Do(r)
89+
if err != nil {
90+
return nil,err
91+
}
92+
defer resp.Body.Close()
93+
if resp.StatusCode != http.StatusOK {
94+
// read only the first MiB of the body in error case
95+
limReader := io.LimitReader(resp.Body, 1024*1024)
96+
body, _ := ioutil.ReadAll(limReader)
97+
return nil, &HTTPError{
98+
StatusCode: resp.StatusCode,
99+
Status: resp.Status,
100+
Msg: string(body),
101+
}
102+
}
103+
104+
marshalStructure := struct {
105+
XMLName xml.Name `xml:"Envelope"`
106+
Body *Response
107+
}{Body: &Response{}}
108+
109+
decoder := xml.NewDecoder(resp.Body)
110+
//decoder.CharsetReader = charset.NewReaderLabel
111+
return marshalStructure.Body, decoder.Decode(&marshalStructure)
112+
}
113+

0 commit comments

Comments
 (0)
Please sign in to comment.