1dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block/* 2dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2010 Google Inc. All rights reserved. 3dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * 4dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Redistribution and use in source and binary forms, with or without 5dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * modification, are permitted provided that the following conditions are 6dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * met: 7dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * 8dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * * Redistributions of source code must retain the above copyright 9dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * notice, this list of conditions and the following disclaimer. 10dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * * Redistributions in binary form must reproduce the above 11dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * copyright notice, this list of conditions and the following disclaimer 12dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * in the documentation and/or other materials provided with the 13dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * distribution. 14dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * * Neither the name of Google Inc. nor the names of its 15dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * contributors may be used to endorse or promote products derived from 16dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * this software without specific prior written permission. 17dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * 18dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block */ 30dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 31dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "config.h" 32dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 33dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if ENABLE(WEB_SOCKETS) 34dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 35dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "WebSocketHandshakeRequest.h" 36dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 3706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#include <cstring> 38dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 39dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockusing namespace std; 40dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 41dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blocknamespace WebCore { 42dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 4306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenWebSocketHandshakeRequest::Key3::Key3() 4406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{ 4506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen memset(value, 0, sizeof(value)); 4606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen} 4706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 4806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid WebSocketHandshakeRequest::Key3::set(const unsigned char key3[8]) 4906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{ 5006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen memcpy(value, key3, sizeof(value)); 5106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen} 5206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 5306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenWebSocketHandshakeRequest::WebSocketHandshakeRequest(const String& requestMethod, const KURL& url) 54dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block : m_url(url) 5506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen , m_requestMethod(requestMethod) 56dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 57dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 58dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 59dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockWebSocketHandshakeRequest::~WebSocketHandshakeRequest() 60dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 61dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 62dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 6306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenString WebSocketHandshakeRequest::requestMethod() const 6406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{ 6506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return m_requestMethod; 6606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen} 6706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 6806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenKURL WebSocketHandshakeRequest::url() const 6906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{ 7006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return m_url; 7106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen} 7206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 7306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid WebSocketHandshakeRequest::addHeaderField(const char* name, const String& value) 74dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 7506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen m_headerFields.add(name, value); 76dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 77dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 7806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenconst HTTPHeaderMap& WebSocketHandshakeRequest::headerFields() const 79dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 8006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return m_headerFields; 81dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 82dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 8306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenWebSocketHandshakeRequest::Key3 WebSocketHandshakeRequest::key3() const 84dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 8506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return m_key3; 86dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 87dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 8806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid WebSocketHandshakeRequest::setKey3(const unsigned char key3[8]) 89dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 9006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen m_key3.set(key3); 91dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 92dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 93dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} // namespace WebCore 94dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 95dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif // ENABLE(WEB_SOCKETS) 96