Documentation for the Unity C# Library
Loading...
Searching...
No Matches
ApexUtils.cs
Go to the documentation of this file.
1
2using Newtonsoft.Json.Linq;
3using System;
4using System.Globalization;
5using System.Linq;
6using System.Net.NetworkInformation;
7using System.Net.Sockets;
8using TinCan.Json;
9using UnityEngine;
10
12{
13 public static partial class ApexUtils
14 {
15 public static string INVALID_IP = "0.0.0.0";
16 public static string INVALID_IPV6 = "::/0";
17 public static string HOME_IP = "127.0.0.1";
18 public static string HOME_IPV6 = "::1/128";
19
20 public static string GetMacAddress()
21 {
22 string macAddress = "";
23 try
24 {
25 PhysicalAddress physicalMacAddress = NetworkInterface.GetAllNetworkInterfaces().FirstOrDefault(nic => nic.OperationalStatus == OperationalStatus.Up && nic.NetworkInterfaceType != NetworkInterfaceType.Loopback)?.GetPhysicalAddress();
26 macAddress = string.Join(":", Array.ConvertAll(physicalMacAddress.GetAddressBytes(), addressBytes => addressBytes.ToString("X2")));
27 }
28 catch(Exception exception)
29 {
30 Debug.LogError("[ApexUtils] " + exception.Message);
31 }
32 return macAddress;
33 }
34
35 public static string GetLocalIP()
36 {
37 string currentIp = GetIP(ADDRESSFAM.IPv4);
38 if(currentIp == INVALID_IP)
39 {
40 currentIp = GetIP(ADDRESSFAM.IPv6);
41 }
42
43 return currentIp;
44 }
45
46 private static string GetIP(ADDRESSFAM Addfam)
47 {
48 //Return null if ADDRESSFAM is Ipv6 but Os does not support it
49 if (Addfam == ADDRESSFAM.IPv6 && !Socket.OSSupportsIPv6)
50 {
51 return null;
52 }
53
54 string output = INVALID_IP;
55
56 foreach (NetworkInterface item in NetworkInterface.GetAllNetworkInterfaces())
57 {
58#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
59 NetworkInterfaceType _type1 = NetworkInterfaceType.Wireless80211;
60 NetworkInterfaceType _type2 = NetworkInterfaceType.Ethernet;
61
62 if ((item.NetworkInterfaceType == _type1 || item.NetworkInterfaceType == _type2) && item.OperationalStatus == OperationalStatus.Up)
63#endif
64 {
65 foreach (UnicastIPAddressInformation ip in item.GetIPProperties().UnicastAddresses)
66 {
67 //IPv4
68 if (Addfam == ADDRESSFAM.IPv4)
69 {
70 if (ip.Address.AddressFamily == AddressFamily.InterNetwork)
71 {
72 if (ip.Address.ToString() != HOME_IP)
73 output = ip.Address.ToString();
74 }
75 }
76
77 //IPv6
78 else if (Addfam == ADDRESSFAM.IPv6)
79 {
80 if (ip.Address.AddressFamily == AddressFamily.InterNetworkV6)
81 {
82 if (ip.Address.ToString() != HOME_IPV6)
83 output = ip.Address.ToString();
84 }
85 }
86 }
87 }
88 }
89 return output;
90 }
91 public enum ADDRESSFAM
92 {
93 IPv4, IPv6
94 }
95
96 public static JObject ConvertStringToJObject(string json)
97 {
98 StringOfJSON stringOfJson = new StringOfJSON(json);
99 return stringOfJson.toJObject();
100 }
101 }
102}
103
104public static class StringExtensions
105{
106 public static bool Contains(this string source, string value, StringComparison comp)
107 {
108 return source?.IndexOf(value, comp) >= 0;
109 }
110}
111
112
113public static class DateTimeExtensions
114{
115 public static string GetLocalFormattedDateTime(this DateTime? dateTime)
116 {
117 var localTime = dateTime?.ToLocalTime();
118 if (localTime == null)
119 {
120 return String.Empty;
121 }
122
123 return localTime.Value.Date == DateTime.Now.Date
124 ? localTime.Value.ToString("hh:mm tt", CultureInfo.InvariantCulture)
125 : localTime.Value.ToString("MM/dd/yyyy hh:mm tt", CultureInfo.InvariantCulture);
126 }
127
128 public static string GetLocalFormattedDateTime(this DateTime dateTime)
129 {
130 return ((DateTime?)dateTime).GetLocalFormattedDateTime();
131 }
132}
static string GetLocalFormattedDateTime(this DateTime? dateTime)
Definition ApexUtils.cs:115
static string GetLocalFormattedDateTime(this DateTime dateTime)
Definition ApexUtils.cs:128
static string INVALID_IPV6
Definition ApexUtils.cs:16
static string GetMacAddress()
Definition ApexUtils.cs:20
static JObject ConvertStringToJObject(string json)
Definition ApexUtils.cs:96
static string GetIP(ADDRESSFAM Addfam)
Definition ApexUtils.cs:46
static string GetLocalIP()
Definition ApexUtils.cs:35
static bool Contains(this string source, string value, StringComparison comp)
Definition ApexUtils.cs:106