Showdan.Net
c# client for the shodan api
FacetGenerator.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6 
7 namespace Shodan.Net
8 {
9  public class FacetGenerator
10  {
11  private Dictionary<string, int?> queryData = new Dictionary<string, int?>();
12 
13  internal FacetGenerator()
14  {
15  }
16 
17  internal string GenerateFacets()
18  {
19  var data = queryData.Select(a => a.Value.HasValue ? $"{a.Key}:{a.Value}" : a.Key);
20  return string.Join(",", data);
21  }
22 
23  public FacetGenerator WithAsn(int? count = null)
24  {
25  queryData.Add("asn", count);
26  return this;
27  }
28 
29  public FacetGenerator WithCity(int? count = null)
30  {
31  queryData.Add("city", count);
32  return this;
33  }
34 
35  public FacetGenerator WithCountry(int? count = null)
36  {
37  queryData.Add("country", count);
38  return this;
39  }
40 
41  public FacetGenerator WithDevice(int? count = null)
42  {
43  queryData.Add("device", count);
44  return this;
45  }
46 
47  public FacetGenerator WithDomain(int? count = null)
48  {
49  queryData.Add("domain", count);
50  return this;
51  }
52 
53  public FacetGenerator WithGeocluster(int? count = null)
54  {
55  queryData.Add("geocluster", count);
56  return this;
57  }
58 
59  public FacetGenerator HasScreenshot(int? count = null)
60  {
61  queryData.Add("has_screenshot", count);
62  return this;
63  }
64 
65  public FacetGenerator WithIsp(int? count = null)
66  {
67  queryData.Add("isp", count);
68  return this;
69  }
70 
71  public FacetGenerator WithLink(int? count = null)
72  {
73  queryData.Add("link", count);
74  return this;
75  }
76 
77  public FacetGenerator WithOrg(int? count = null)
78  {
79  queryData.Add("org", count);
80  return this;
81  }
82 
83  public FacetGenerator WithOs(int? count = null)
84  {
85  queryData.Add("os", count);
86  return this;
87  }
88 
89  public FacetGenerator WithPort(int? count = null)
90  {
91  queryData.Add("port", count);
92  return this;
93  }
94 
95  public FacetGenerator WithPostal(int? count = null)
96  {
97  queryData.Add("postal", count);
98  return this;
99  }
100 
101  public FacetGenerator WithState(int? count = null)
102  {
103  queryData.Add("state", count);
104  return this;
105  }
106 
107  public FacetGenerator WithTimestamp_day(int? count = null)
108  {
109  queryData.Add("timestamp_day", count);
110  return this;
111  }
112 
113  public FacetGenerator WithTimestamp_month(int? count = null)
114  {
115  queryData.Add("timestamp_month", count);
116  return this;
117  }
118 
119  public FacetGenerator WithTimestamp_year(int? count = null)
120  {
121  queryData.Add("timestamp_year", count);
122  return this;
123  }
124 
125  public FacetGenerator WithUptime(int? count = null)
126  {
127  queryData.Add("uptime", count);
128  return this;
129  }
130 
131  public FacetGenerator WithVersion(int? count = null)
132  {
133  queryData.Add("version", count);
134  return this;
135  }
136 
137  public FacetGenerator WithBitcoin_ip(int? count = null)
138  {
139  queryData.Add("bitcoin.ip", count);
140  return this;
141  }
142 
143  public FacetGenerator WithBitcoin_ip_count(int? count = null)
144  {
145  queryData.Add("bitcoin.ip_count", count);
146  return this;
147  }
148 
149  public FacetGenerator WithBitcoin_port(int? count = null)
150  {
151  queryData.Add("bitcoin.port", count);
152  return this;
153  }
154 
155  public FacetGenerator WithBitcoin_user_agent(int? count = null)
156  {
157  queryData.Add("bitcoin.user_agent", count);
158  return this;
159  }
160 
161  public FacetGenerator WithBitcoin_version(int? count = null)
162  {
163  queryData.Add("bitcoin.version", count);
164  return this;
165  }
166 
167  public FacetGenerator WithNtp_ip(int? count = null)
168  {
169  queryData.Add("ntp.ip", count);
170  return this;
171  }
172 
173  public FacetGenerator WithNtp_ip_count(int? count = null)
174  {
175  queryData.Add("ntp.ip_count", count);
176  return this;
177  }
178 
179  public FacetGenerator WithNtp_more(int? count = null)
180  {
181  queryData.Add("ntp.more", count);
182  return this;
183  }
184 
185  public FacetGenerator WithNtp_port(int? count = null)
186  {
187  queryData.Add("ntp.port", count);
188  return this;
189  }
190 
191  public FacetGenerator WithSsh_cipher(int? count = null)
192  {
193  queryData.Add("ssh.cipher", count);
194  return this;
195  }
196 
197  public FacetGenerator WithSsh_fingerprint(int? count = null)
198  {
199  queryData.Add("ssh.fingerprint", count);
200  return this;
201  }
202 
203  public FacetGenerator WithSsh_mac(int? count = null)
204  {
205  queryData.Add("ssh.mac", count);
206  return this;
207  }
208 
209  public FacetGenerator WithSsh_type(int? count = null)
210  {
211  queryData.Add("ssh.type", count);
212  return this;
213  }
214  }
215 }