summaryrefslogtreecommitdiff
path: root/windows/win_uri.py
blob: f9e923dfafeffaf64c72389fe41a26949382900b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#!/usr/bin/python
# -*- coding: utf-8 -*-

# (c) 2015, Corwin Brown <corwin@corwinbrown.com>
#
# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible.  If not, see <http://www.gnu.org/licenses/>.

# this is a windows documentation stub.  actual code lives in the .ps1
# file of the same name

ANSIBLE_METADATA = {'status': ['preview'],
                    'supported_by': 'community',
                    'version': '1.0'}

DOCUMENTATION = """
---
module: win_uri
version_added: "2.1"
short_description: Interacts with webservices.
description:
  - Interacts with HTTP and HTTPS web services and supports Digest, Basic and WSSE HTTP authentication mechanisms.
options:
  url:
    description:
      - HTTP or HTTPS URL in the form of (http|https)://host.domain:port/path
  method:
    description:
      - The HTTP Method of the request or response.
    default: GET
    choices:
      - GET
      - POST
      - PUT
      - HEAD
      - DELETE
      - OPTIONS
      - PATCH
      - TRACE
      - CONNECT
      - REFRESH
  content_type:
    description:
      - Sets the "Content-Type" header.
  body:
    description:
      - The body of the HTTP request/response to the web service.
  headers:
    description:
      - 'Key Value pairs for headers. Example "Host: www.somesite.com"'
  use_basic_parsing:
    description:
      - This module relies upon 'Invoke-WebRequest', which by default uses the Internet Explorer Engine to parse a webpage. There's an edge-case where if a user hasn't run IE before, this will fail. The only advantage to using the Internet Explorer praser is that you can traverse the DOM in a powershell script. That isn't useful for Ansible, so by default we toggle 'UseBasicParsing'. However, you can toggle that off here.
    choices:
      - True
      - False
    default: True
author: Corwin Brown (@blakfeld)
"""

EXAMPLES = """
# Send a GET request and store the output:
---
- name: Perform a GET and Store Output
  win_uri:
    url: http://www.somesite.com/myendpoint
  register: http_output

# Set a HOST header to hit an internal webserver:
---
- name: Hit a Specific Host on the Server
  win_uri:
    url: http://my.internal.server.com
    method: GET
    headers:
      host: "www.somesite.com"

# Do a HEAD request on an endpoint
---
- name: Perform a HEAD on an Endpoint
  win_uri:
    url: http://www.somesite.com
    method: HEAD

# Post a body to an endpoint
---
- name: POST a Body to an Endpoint
  win_uri:
    url: http://www.somesite.com
    method: POST
    body: "{ 'some': 'json' }"
"""

RETURN = """
url:
  description: The Target URL
  returned: always
  type: string
  sample: "https://www.ansible.com"
method:
  description: The HTTP method used.
  returned: always
  type: string
  sample: "GET"
content_type:
  description: The "content-type" header used.
  returned: always
  type: string
  sample: "application/json"
use_basic_parsing:
  description: The state of the "use_basic_parsing" flag.
  returned: always
  type: bool
  sample: True
body:
  description: The content of the body used
  returned: when body is specified
  type: string
  sample: '{"id":1}'
  version_added: "2.3"
status_code:
  description: The HTTP Status Code of the response.
  returned: success
  type: int
  sample: 200
status_description:
  description: A summery of the status.
  returned: success
  type: string
  stample: "OK"
raw_content:
  description: The raw content of the HTTP response.
  returned: success
  type: string
  sample: 'HTTP/1.1 200 OK\nX-XSS-Protection: 1; mode=block\nX-Frame-Options: SAMEORIGIN\nAlternate-Protocol: 443:quic,p=1\nAlt-Svc: quic="www.google.com:443"; ma=2592000; v="30,29,28,27,26,25",quic=":443"; ma=2...'
headers:
  description: The Headers of the response.
  returned: success
  type: dict
  sample: {"Content-Type": "application/json"}
raw_content_length:
  description: The byte size of the response.
  returned: success
  type: int
  sample: 54447
"""