Esempio n. 1
0
        /// <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);
        }