protected HttpResponce Get(string url, string[] headers) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; request.Accept = "application/json"; if (headers != null) { foreach (string head in headers) { request.Headers.Add(head); } } request.ContentType = "application/json"; HttpResponce bodybject = new HttpResponce(); try { var httpResponse = (HttpWebResponse)request.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var result = streamReader.ReadToEnd(); bodybject.data = JsonConvert.DeserializeObject(result); } bodybject.Headers = httpResponse.Headers; } catch { bodybject = null; } return(bodybject); }
public override IEnumerable NextFrame() { OnStart(); byte[] bytes = Encoding.UTF8.GetBytes(PostData); //Debug.Log(RequestName); //Debug.Log(PostData); _request = new WWW(RequestName, bytes, HttpNetworkController.Instance.HttpHeaders); while (!_request.isDone) { yield return null; } if (String.IsNullOrEmpty(_request.error)) { Debug.Log(_request.text); _responce = new HttpResponce(_request.text); OnResponceReceived(); } else { Debug.LogError("Error on request: " + RequestName + " => " + _request.error); } OnFinish(); }
//APIキーとトークンの取得 protected bool InitHarvest() { string authData = @"{""email"":""*****@*****.**"",""password"":""TML-ezawa2018""}"; HttpResponce data = Post("https://api.soracom.io/v1/auth", null, authData); if (data == null) { return(false); } apiKey = data.data.apiKey; apiToken = data.data.token; return(apiKey != null && apiToken != null); }
// Subscriber の取得。 複数回に分かれての受信には対応していない。 protected void InitSubscribers(IList <Subscriber> subscribers) { string[] headers = { $"X-Soracom-API-Key:{apiKey}", $"X-Soracom-Token:{apiToken}" }; HttpResponce data = Get("https://api.soracom.io/v1/subscribers", headers); if (data == null) { return; } foreach (var item in data.data) { subscribers.Add(new Subscriber() { imsi = item.imsi, modifiedTime = item.lastModifiedAt, url = $"https://api.soracom.io/v1/subscribers/{item.imsi}/data?sort=asc" }); } }
public bool SaveData(Dictionary <string, List <StringDictionary> > data) { var parsing = new Parsing() { Date = DateTime.UtcNow }; // номер считать с лог файла var httpResponce = new HttpResponce(); T _tag; A _attr; List <StringDictionary> attrs; foreach (var tags in data) { _tag = new Tag { Name = tags.Key, Parsing = parsing } as T; _tags.Create(_tag); attrs = tags.Value; foreach (var attribute in attrs) { foreach (var attr in attribute.Keys) { _attr = new TagAttribute() { Name = attr.ToString(), Value = attribute[attr.ToString()], Tag = _tag } as A; _attrs.Create(_attr); } } } return(true); }
public static async Task <object> Run([HttpTrigger(WebHookType = "genericJson")] HttpRequestMessage req, TraceWriter log) { log.Info($"Webhook was triggered!"); string jsonContent = await req.Content.ReadAsStringAsync(); dynamic data = JsonConvert.DeserializeObject <InputTrigger>(jsonContent); //log.Info(data.Groups.Values); if (!data.Groups.ContainsKey("key0")) { return(req.CreateResponse(HttpStatusCode.BadRequest, new { error = "Please pass groups properties in the input object" })); } string tenant = ConfigurationManager.AppSettings["B2C_TENANT_DEV"]; string clientId = ConfigurationManager.AppSettings["B2C_CLIENTID_DEV"]; string clientSecret = ConfigurationManager.AppSettings["B2C_CLIENTSECRET_DEV"]; string url = ConfigurationManager.AppSettings["B2C_GRAPHURL_DEV"]; string apiversion = ConfigurationManager.AppSettings["API_VERSION"]; string aadInstance = "https://login.microsoftonline.com/"; string aadGraphResourceId = "https://graph.windows.net/"; string aadGraphEndpoint = "https://graph.windows.net/"; string token; var responseString = String.Empty; string query = "$filter="; string AD_extention_role = ""; foreach (var group in data.Groups) { query = query + "startswith(displayName,\'" + group.Value + "\') or "; AD_extention_role = group.Value + ";"; } if (data.token == "") { // seting azure AD graph API string authString = aadInstance + tenant; var authenticationContext = new AuthenticationContext(authString); //get access token; ClientCredential clientCred = new ClientCredential(clientId, clientSecret); AuthenticationResult authenticationResult = await authenticationContext.AcquireTokenAsync(aadGraphResourceId, clientCred); token = authenticationResult.AccessToken; } else { token = data.token; } query = query.Substring(0, query.Length - 4); //string requestUrl = url + "groups?$filter=" + query_filter + apiversion; string requestUrl = "https://graph.windows.net/" + tenant + "/groups/" + "?" + apiversion; if (!string.IsNullOrEmpty(query)) { requestUrl += "&" + query; } Dictionary <string, string> groups_ids = new Dictionary <string, string>(); string[] GroupsSub = new string[0]; // ŠY“–groups ID ‚̎擾; using (var client = new HttpClient()) { HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUrl); request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token); HttpResponseMessage response = await client.SendAsync(request); if (!response.IsSuccessStatusCode) { string error = await response.Content.ReadAsStringAsync(); object formatted = JsonConvert.DeserializeObject(error); throw new WebException("Error Calling the Graph API: \n" + JsonConvert.SerializeObject(formatted, Formatting.Indented)); } await response.Content.ReadAsStringAsync().ContinueWith(stringTask => { var groups_json = stringTask.Result; var resgroups = JsonConvert.DeserializeObject <GroupsObject>(groups_json); IEnumerable <GroupContents> collection = resgroups.value; foreach (var element in collection.Select((Value, Index) => new { Value, Index })) { //groups_ids.Add(group_data.id); groups_ids.Add("key" + element.Index.ToString(), element.Value.objectId); Array.Resize(ref GroupsSub, element.Index + 1); GroupsSub[element.Index] = element.Value.objectId; } }); } HttpResponce res = new HttpResponce(); res.token = token; res.GroupsSub = GroupsSub; return(req.CreateResponse(HttpStatusCode.OK, new { Content = res })); }
public static void WriteResponce(Stream stream, HttpResponce responce) { byte[] responceHeader = Encoding.UTF8.GetBytes(responce.Header.ToString()); stream.Write(responceHeader, 0, responceHeader.Length); stream.Write(responce.Content, 0, responce.Content.Length); }
public bool GetSubScriverData(Subscriber subscriber) { JsonSerializerSettings serializerSettings = new JsonSerializerSettings() { DateParseHandling = DateParseHandling.DateTimeOffset }; string[] headers = { $"X-Soracom-API-Key:{apiKey}", $"X-Soracom-Token:{apiToken}" }; HttpResponce data = Get(subscriber.url, headers); if (data == null) { return(false); } subscriber.url = ""; if (data.Headers.Get("link") != null) { string[] l = data.Headers.Get("link").Split(","); foreach (var s in l) { if (s.IndexOf("next") > -1) { Match m = Regex.Match(s, @"(\<)(?<url>.+?)(\>)"); if (m.Success) { subscriber.url = "https://api.soracom.io" + m.Groups["url"].Value; } break; } } } foreach (var item in data.data) { var bodybject = JsonConvert.DeserializeObject(item.content.Value, serializerSettings); try { if (bodybject.payload != null) { List <dynamic> dataobjects = directData.ConvertData(bodybject.payload.Value); if (dataobjects.Count > 0) { subscriber.data.AddRange(dataobjects); } } else { if (bodybject.date == null) { var baseDt = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero); bodybject.date = new DateTimeOffset(item.time.Value * 10000 + baseDt.Ticks, TimeSpan.Zero); } subscriber.data.Add(bodybject); } } catch (Exception e) { TdsObject.SetErrerMessage(e.Data["org"].ToString(), e.Message); } } return(true); }