/// <summary> /// Create new API instance /// </summary> /// <returns> /// API instance /// </returns> /// <exception cref="ArgumentNullException">User auth data must be specified</exception> public IInstaApi Build() { if (_user == null) { throw new ArgumentNullException($"User auth data must be specified"); } if (_httpClient == null) { _httpClient = new HttpClient(_httpHandler) { BaseAddress = new Uri(InstaApiConstants.INSTAGRAM_URL) } } ; if (_requestMessage == null) { _device = AndroidDeviceGenerator.GetGALAXYTABDevice(); _requestMessage = new ApiRequestMessage { phone_id = _device.PhoneGuid.ToString(), guid = _device.DeviceGuid, password = _user?.Password, username = _user?.UserName, device_id = _device.DeviceId // device_id = ApiRequestMessage.GenerateDeviceId() }; } if (string.IsNullOrEmpty(_requestMessage.password)) { _requestMessage.password = _user?.Password; } if (string.IsNullOrEmpty(_requestMessage.username)) { _requestMessage.username = _user?.UserName; } if (_device == null && !string.IsNullOrEmpty(_requestMessage.device_id)) { _device = AndroidDeviceGenerator.GetById(_requestMessage.device_id); } if (_device == null) { AndroidDeviceGenerator.GetAndroidDevice(); } if (_httpRequestProcessor == null) { _httpRequestProcessor = new HttpRequestProcessor(_delay, _httpClient, _httpHandler, _requestMessage, _logger); } var instaApi = new InstaApi(_user, _logger, _device, _httpRequestProcessor); return(instaApi); }