Skip to content

Commit 28b74f4

Browse files
authored
Updated structure
1 parent 47c7fcc commit 28b74f4

File tree

1 file changed

+20
-109
lines changed

1 file changed

+20
-109
lines changed

dotnet/Search/BingNewsSearchv7.cs

Lines changed: 20 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -1,147 +1,58 @@
1-
//Copyright (c) Microsoft Corporation. All rights reserved.
2-
//Licensed under the MIT License.
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
33

4+
using Newtonsoft.Json;
45
using System;
56
using System.Text;
67
using System.Net;
78
using System.IO;
89
using System.Collections.Generic;
910

10-
namespace BingNewsSearchCSharpCore
11+
namespace BingNewsSearch
1112
{
12-
1313
class Program
1414
{
15-
// **********************************************
16-
// *** Update or verify the following values. ***
17-
// **********************************************
18-
1915
// Add your Azure Bing Search V7 subscription key to your environment variables.
20-
const string accessKey = Environment.GetEnvironmentVariable("BING_SEARCH_V7_SUBSCRIPTION_KEY");
16+
static string accessKey = Environment.GetEnvironmentVariable("BING_SEARCH_V7_SUBSCRIPTION_KEY");
2117
// Add your Azure Bing Search V7 endpoint to your environment variables.
22-
const string uriBase = Environment.GetEnvironmentVariable("BING_SEARCH_V7_ENDPOINT") + "/bing/v7.0/news/search";
18+
static string endpoint = Environment.GetEnvironmentVariable("BING_SEARCH_V7_ENDPOINT") + "/bing/v7.0/news/search";
2319

24-
const string searchTerm = "Microsoft";
25-
26-
// Used to return news search results including relevant headers
27-
struct SearchResult
28-
{
29-
public String jsonResult;
30-
public Dictionary<String, String> relevantHeaders;
31-
}
20+
const string query = "Microsoft";
3221

3322
static void Main()
3423
{
35-
Console.OutputEncoding = System.Text.Encoding.UTF8;
36-
Console.WriteLine("Searching news for: " + searchTerm);
24+
// Create dictionary to store a few extracted headers
25+
Dictionary<String, String> relevantHeaders = new Dictionary<String, String>();
3726

38-
SearchResult result = BingNewsSearch(searchTerm);
27+
Console.OutputEncoding = Encoding.UTF8;
3928

40-
Console.WriteLine("\nRelevant HTTP Headers:\n");
41-
foreach (var header in result.relevantHeaders)
42-
Console.WriteLine(header.Key + ": " + header.Value);
29+
Console.WriteLine("Searching news for: " + query);
4330

44-
Console.WriteLine("\nJSON Response:\n");
45-
Console.WriteLine(JsonPrettyPrint(result.jsonResult));
46-
47-
Console.Write("\nPress Enter to exit ");
48-
Console.ReadLine();
49-
}
50-
51-
/// <summary>
52-
/// Performs a Bing News search and return the results as a SearchResult.
53-
/// </summary>
54-
static SearchResult BingNewsSearch(string searchQuery)
55-
{
5631
// Construct the URI of the search request
57-
var uriQuery = uriBase + "?q=" + Uri.EscapeDataString(searchQuery);
32+
var uriQuery = endpoint + "?q=" + Uri.EscapeDataString(query);
5833

5934
// Perform the Web request and get the response
6035
WebRequest request = HttpWebRequest.Create(uriQuery);
6136
request.Headers["Ocp-Apim-Subscription-Key"] = accessKey;
6237
HttpWebResponse response = (HttpWebResponse)request.GetResponseAsync().Result;
6338
string json = new StreamReader(response.GetResponseStream()).ReadToEnd();
6439

65-
// Create result object for return
66-
var searchResult = new SearchResult();
67-
searchResult.jsonResult = json;
68-
searchResult.relevantHeaders = new Dictionary<String, String>();
69-
7040
// Extract Bing HTTP headers
7141
foreach (String header in response.Headers)
7242
{
7343
if (header.StartsWith("BingAPIs-") || header.StartsWith("X-MSEdge-"))
74-
searchResult.relevantHeaders[header] = response.Headers[header];
44+
relevantHeaders[header] = response.Headers[header];
7545
}
7646

77-
return searchResult;
78-
}
79-
80-
/// <summary>
81-
/// Formats the given JSON string by adding line breaks and indents.
82-
/// </summary>
83-
/// <param name="json">The raw JSON string to format.</param>
84-
/// <returns>The formatted JSON string.</returns>
85-
static string JsonPrettyPrint(string json)
86-
{
87-
if (string.IsNullOrEmpty(json))
88-
return string.Empty;
89-
90-
json = json.Replace(Environment.NewLine, "").Replace("\t", "");
91-
92-
StringBuilder sb = new StringBuilder();
93-
bool quote = false;
94-
bool ignore = false;
95-
int offset = 0;
96-
int indentLength = 3;
97-
98-
foreach (char ch in json)
99-
{
100-
switch (ch)
101-
{
102-
case '"':
103-
if (!ignore) quote = !quote;
104-
break;
105-
case '\'':
106-
if (quote) ignore = !ignore;
107-
break;
108-
}
47+
Console.WriteLine("\nRelevant HTTP Headers:\n");
48+
foreach (var header in relevantHeaders)
49+
Console.WriteLine(header.Key + ": " + header.Value);
10950

110-
if (quote)
111-
sb.Append(ch);
112-
else
113-
{
114-
switch (ch)
115-
{
116-
case '{':
117-
case '[':
118-
sb.Append(ch);
119-
sb.Append(Environment.NewLine);
120-
sb.Append(new string(' ', ++offset * indentLength));
121-
break;
122-
case '}':
123-
case ']':
124-
sb.Append(Environment.NewLine);
125-
sb.Append(new string(' ', --offset * indentLength));
126-
sb.Append(ch);
127-
break;
128-
case ',':
129-
sb.Append(ch);
130-
sb.Append(Environment.NewLine);
131-
sb.Append(new string(' ', offset * indentLength));
132-
break;
133-
case ':':
134-
sb.Append(ch);
135-
sb.Append(' ');
136-
break;
137-
default:
138-
if (ch != ' ') sb.Append(ch);
139-
break;
140-
}
141-
}
142-
}
51+
Console.WriteLine("\nJSON Response:\n");
52+
dynamic parsedJson = JsonConvert.DeserializeObject(json);
53+
Console.WriteLine(JsonConvert.SerializeObject(parsedJson, Formatting.Indented));
14354

144-
return sb.ToString().Trim();
55+
Console.ReadLine();
14556
}
14657
}
14758
}

0 commit comments

Comments
 (0)