1 /*  $Id: cgi_util.cpp 357979 2012-03-28 14:45:54Z ivanov $
2  * ===========================================================================
3  *
4  *                            PUBLIC DOMAIN NOTICE
5  *               National Center for Biotechnology Information
6  *
7  *  This software/database is a "United States Government Work" under the
8  *  terms of the United States Copyright Act.  It was written as part of
9  *  the author's official duties as a United States Government employee and
10  *  thus cannot be copyrighted.  This software/database is freely available
11  *  to the public for use. The National Library of Medicine and the U.S.
12  *  Government have not placed any restriction on its use or reproduction.
13  *
14  *  Although all reasonable efforts have been taken to ensure the accuracy
15  *  and reliability of the software and data, the NLM and the U.S.
16  *  Government do not and cannot warrant the performance or results that
17  *  may be obtained by using this software or data. The NLM and the U.S.
18  *  Government disclaim all warranties, express or implied, including
19  *  warranties of performance, merchantability or fitness for any particular
20  *  purpose.
21  *
22  *  Please cite the author in any work or product based on this material.
23  *
24  * ===========================================================================
25  *
26  * Authors:  Alexey Grichenko
27  *
28  * File Description:   CGI related utility classes and functions
29  *
30  */
31 
32 #include <ncbi_pch.hpp>
33 #include <cgi/cgi_util.hpp>
34 
35 
36 BEGIN_NCBI_SCOPE
37 
38 
39 //////////////////////////////////////////////////////////////////////////////
40 //
41 // Url encode/decode
42 //
43 
URL_DecodeInPlace(string & str,EUrlDecode decode_flag)44 extern SIZE_TYPE URL_DecodeInPlace(string& str, EUrlDecode decode_flag)
45 {
46     NStr::URLDecodeInPlace(str, NStr::EUrlDecode(decode_flag));
47     return 0;
48 }
49 
50 
URL_DecodeString(const string & str,EUrlEncode encode_flag)51 extern string URL_DecodeString(const string& str,
52                                EUrlEncode    encode_flag)
53 {
54     if (encode_flag == eUrlEncode_None) {
55         return str;
56     }
57     return NStr::URLDecode(str, encode_flag == eUrlEncode_PercentOnly ?
58         NStr::eUrlDec_Percent : NStr::eUrlDec_All);
59 }
60 
61 
URL_EncodeString(const string & str,EUrlEncode encode_flag)62 extern string URL_EncodeString(const string& str,
63                                EUrlEncode encode_flag)
64 {
65     return NStr::URLEncode(str, NStr::EUrlEncode(encode_flag));
66 }
67 
68 
69 END_NCBI_SCOPE
70